问题标签 [spring-cloud-kubernetes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-cloud-kubernetes - 使用 Spring Cloud Kubernetes 进行集成测试
我们正在评估 Spring Cloud Kubernetes。我们的项目正在使用Spring Cloud 2020.0.3
和Spring Boot 2.4.9
. 到目前为止,我们一直在将微服务部署到 Docker Swarm,因此我们一直在使用 Spring Cloud Eureka、Spring Cloud Config 和 Spring Cloud Gateway。现在我们正在修改我们的微服务以删除对这些组件的任何引用。
将以下依赖项添加到我们的微服务后,只要我有一个本地 Minikube 集群在运行,我的 Maven 构建(包括许多集成测试)就可以正常运行。
但是,如果我销毁我的 Minikube 集群,Spring Boot 集成测试将失败,并出现以下异常:
我一直在参考 Spring Cloud Kubernetes文档,但我没有看到任何提及 Spring Cloud Kubernetes 测试支持的内容。任何人都可以为我指出正确的方向,即我需要做些什么来使我的集成测试能够正常工作,而无需 Kubernetes 集群在我的构建机器上启动并运行?
kubernetes - Spring Boot 应用程序中的 Kubernetes pod 级别配置外部化
我需要社区的帮助,我还是 K8 和 Spring Boot 的新手。提前谢谢大家。
我需要的是在 K8 环境中运行 4 个 K8 pod,并且每个 pod 的配置彼此略有不同,例如,我的一个 java 类中有一个名为 region 的属性,它从 Application.yml 中提取它的值,比如
@Value("${regions}")
私有字符串区域;
现在将它部署到 K8 env 之后,我希望运行 4 个 pod(我可以在 helm 文件中配置它),并且在每个 pod 中,regions字段应该具有不同的值。这是可以实现的吗?任何人都可以给任何建议吗?
java - 如何使用 Spring Cloud K8s 正确设置 Spring 应用程序以使用 helm 处理 k8s 机密?
我有一个 Spring Boot 应用程序,其中有用于部署、配置映射和机密的 k8s 文件。它们的值正在使用 helm 进行更新。我想要一个secrets.yaml
将值放在那里的地方,它会替换application.yaml
Spring Boot 中的值。我设法为配置图做到了这一点。我创建了configmap.yaml
,把我想替换的值放在那里,设置 Spring Cloud K8s 以获得执行它的权限(创建 rbac)并且它工作。但是对于秘密我没有设法做到这一点。
这是我的application.yaml
。我想更换banana.database.password
.
这是我的secret.yaml
。
这是我values.yaml
想要的秘密的最终值。
这是我deployment.yaml
尝试为秘密配置坐骑的地方,但它不起作用。
当我部署所有内容时,发生的情况是密码的值是 里面的那个application.yaml
,而不是secret.yaml
正在使用的那个。对于 configmap,同样的模式也有效。
有人知道我做错了什么吗?
PS.:一切都将部署到 GKE。
spring-boot - 使用 Spring Cloud Kubernetes,如何获取正在运行的实例的 instanceId
我有一个用 Spring Boot 编写的微服务,并利用在 Kubernetes 中运行的 Spring Cloud Kubernetes,如下所示:
- 一个 Kubernetes 服务 (
foo-service
) foo-service
位于服务后面的两个(pod)实例,每个实例都运行 Spring Boot 应用程序
我可以使用 Spring Cloud Kubernetes 列出该服务的所有实例,DiscoveryClient
如下所示:
如何获取正在执行此代码的实例的 instanceId?
kubernetes - spring.cloud.kubernetes.config.sources 禁用配置文件特定 ConfigMap 的解析
我正在尝试使我的 Spring boot 应用程序适应 k8s 环境,并希望使用 ConfigMaps 作为属性源。如果我正在使用,我会遇到这种情况
对于具有名称的应用程序,appName
则任何其他具有 Spring 云 kubernetes 约定名称的 ConfigMapappName-kubernetes
都将appName-dev
被静默忽略。看起来像在config.sources
覆盖中列出的源,并禁用 ConfigMaps 中任何其他 PropertySources 的使用。
我被迫为 ConfigMap 使用特定的名称(上面示例中的“应用程序配置”)。
所以问题是 - 我如何(如果)同时指定config.sources
并同时appName-*
正确选择名称的 ConfigMap?
spring - 如何使用 Spring Cloud Kubernetes 以编程方式写入 ConfigMap 值?
我有一个服务,当 ConfigMap 中的值发生变化时,它使用 Spring Cloud Kubernetes Config 重新加载其配置。这一切都很好。
是否可以使用 Spring Cloud Kubernetes(或其依赖项之一)来编写ConfigMap 值?我在文档(此处)中没有看到任何此类示例。我可以通过编程方式执行此操作,还是需要调用底层 Kubernetes API 来执行此操作?
spring - Spring Cloud Stream 可以与 Spring Cloud Kubernetes 一起使用吗?
我还没有看到任何将两者结合的例子,尽管它们可以一起工作是有道理的(因为它们都是 Spring Cloud 的子项目)。我想使用 Spring Cloud Stream (Reactive Processing) 从 Kafka 读取并使用 Reactive Mongo 驱动程序写入 MongoDB。我可以将 Spring Cloud Config 和 Spring Cloud Kubernetes 用于远程 git 配置服务器,即使应用程序是事件驱动的应用程序而不是基于请求的 API?
目前还不清楚如何将这些 Kubernetes 和配置项目插入 Spring Cloud Stream,而且总的来说,我不清楚所有其他 Spring Cloud 项目是否可以响应式地使用 Spring Cloud Stream。例如,我也找不到将 Spring Cloud Sleuth 和 Zipkin 与 Spring Cloud Stream 结合使用的参考资料。有人可以让我更清楚并参考代码示例(如果存在)吗?
spring-boot - 当 Spring Cloud Kubernetes Configuration Watcher 未按预期工作时如何调试它
我的 k8s 命名空间中有两个组件。
第一个组件是一个简单的 Spring Boot Web 服务,其中公开了执行器/刷新端点。我已经手动向端点发出 post 请求,它将成功触发配置上下文刷新。
第二个组件是 Spring Cloud Kubernetes Configuration Watcher,我根据官方文档指导提取图像并使其在我的 k8s 环境中运行。根据官方 spring 文档,它应该检测带有标签 spring.cloud.kubernetes.config="true" 的 configmap 上的更改,并向 spring.application.name 等于 configmap 名称的应用程序的执行器/刷新端点发出 post 请求.
第二个组件没有按预期工作,我不知道如何解决根本原因。
我的 Springboot 应用程序称为 spring-boot-demo,configmap 也称为 spring-boot-demo。但我从未在 Spring Cloud Kubernetes Configuration Watcher 的日志中找到任何提及“spring-boot-demo”的内容,我也无法确定它是否已将发布请求发送到相关端点。
我只能看到下面重复出现的日志:
我使用的 docker 镜像是 springcloud/spring-cloud-kubernetes-configuration-watcher:2.1.0-RC1
任何调试此问题的提示表示赞赏。
spring-boot - Spring Cloud Kubernetes 配置观察器示例
有人可以为我指出一个使用 Spring Cloud Kubernetes Configuration Watcher 和最新版本的 Spring Boot 的简单而完整的示例吗?我在网上找到了一些使用 Config Watcher 的示例,但它们实际上使用旧方法重新加载了属性,他们甚至没有意识到这一点(即,即使在 Config Watcher 没有运行的情况下,属性仍然会重新加载)。
spring-boot - Spring Cloud Kubernetes 的负载均衡问题
我们在 Kubernetes 中运行 Spring Boot 服务,并使用带有 RestTemplate 的 Spring Cloud Kubernetes 负载均衡器功能来调用其他 Spring Boot 服务。我们拥有此功能的主要原因之一是历史原因 - 之前我们使用 Eureka 在 EC2 中运行我们的服务以进行服务发现,并且在迁移之后我们保持 Spring 发现客户端/客户端负载平衡(更新依赖项等)它与 Spring Cloud Kubernetes 项目一起使用)
我们有一个问题,当其中一个目标 pod 发生故障时,我们会在一段时间内收到多次请求失败,java.net.NoRouteToHostException
即 spring 负载均衡器仍在尝试发送到该 pod。
所以我对此有几个问题:
发生这种情况时,目标实例不应该自动删除吗?所以它可能会发生一次,但在那之后,目标 pod 列表将被修复?
或者如果没有,我们需要添加一些其他配置来处理这个 - 例如重试/断路器等?
一个更普遍的问题是 Spring 的客户端负载均衡为 Kubernetes 带来了什么好处?没有它,我们的服务仍然可以使用 Kubernetes 内置的服务/负载平衡功能调用其他服务,这应该可以处理 pod 自动关闭的问题。Spring 文档还谈到了能够从 POD 模式切换到 SERVICE 模式(https://docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/index.html#loadbalancer-for-kubernetes)。但是这种服务模式不就是 Kubernetes 自动做的吗?我想知道这里最简单的解决方案是否不是完全删除 Spring Load Balancer?那我们会失去什么?