问题标签 [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.

0 投票
0 回答
171 浏览

spring-cloud-kubernetes - 使用 Spring Cloud Kubernetes 进行集成测试

我们正在评估 Spring Cloud Kubernetes。我们的项目正在使用Spring Cloud 2020.0.3Spring 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 集群在我的构建机器上启动并运行?

0 投票
1 回答
285 浏览

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字段应该具有不同的值。这是可以实现的吗?任何人都可以给任何建议吗?

0 投票
0 回答
93 浏览

java - 如何使用 Spring Cloud K8s 正确设置 Spring 应用程序以使用 helm 处理 k8s 机密?

我有一个 Spring Boot 应用程序,其中有用于部署、配置映射和机密的 k8s 文件。它们的值正在使用 helm 进行更新。我想要一个secrets.yaml将值放在那里的地方,它会替换application.yamlSpring 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。

0 投票
1 回答
54 浏览

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?

0 投票
1 回答
48 浏览

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?

0 投票
1 回答
56 浏览

spring - 如何使用 Spring Cloud Kubernetes 以编程方式写入 ConfigMap 值?

我有一个服务,当 ConfigMap 中的值发生变化时,它使用 Spring Cloud Kubernetes Config 重新加载其配置。这一切都很好。

是否可以使用 Spring Cloud Kubernetes(或其依赖项之一)来编写ConfigMap 值?我在文档(此处)中没有看到任何此类示例。我可以通过编程方式执行此操作,还是需要调用底层 Kubernetes API 来执行此操作?

0 投票
0 回答
35 浏览

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 结合使用的参考资料。有人可以让我更清楚并参考代码示例(如果存在)吗?

0 投票
0 回答
174 浏览

spring-boot - 当 Spring Cloud Kubernetes Configuration Watcher 未按预期工作时如何调试它

我的 k8s 命名空间中有两个组件。

  1. 第一个组件是一个简单的 Spring Boot Web 服务,其中公开了执行器/刷新端点。我已经手动向端点发出 post 请求,它将成功触发配置上下文刷新。

  2. 第二个组件是 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

任何调试此问题的提示表示赞赏。

0 投票
1 回答
47 浏览

spring-boot - Spring Cloud Kubernetes 配置观察器示例

有人可以为我指出一个使用 Spring Cloud Kubernetes Configuration Watcher 和最新版本的 Spring Boot 的简单而完整的示例吗?我在网上找到了一些使用 Config Watcher 的示例,但它们实际上使用旧方法重新加载了属性,他们甚至没有意识到这一点(即,即使在 Config Watcher 没有运行的情况下,属性仍然会重新加载)。

0 投票
2 回答
215 浏览

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?那我们会失去什么?