【问题标题】:How to dynamically create Kubernetes resources from within a running spring boot application in the cluster如何从集群中正在运行的 Spring Boot 应用程序中动态创建 Kubernetes 资源
【发布时间】:2020-03-30 02:42:52
【问题描述】:

我确实有一个 Spring Boot 微服务(SERVICE A)和 Artemis JMS 服务器在 Azure AKS 集群内运行,并且 React Web 应用程序也在集群内为静态页面提供服务。这三个应用程序都有 Kubernetes 部署和服务资源,并使用 helm 图表进行部署。

现在,每当用户从 UI 创建条目时,我都需要按需启动另一个微服务。 例如,我确实为客户微服务预定义了 Kubernetes 资源(如舵图),但只需要在用户创建客户时启动微服务,而且每次创建新客户时,我都需要启动另一个客户微服务实例.每次创建客户微服务时,我还需要将客户名称作为环境变量传递给客户微服务,以便每个客户微服务都可以订阅特定主题。

有没有办法做到这一点?我也想管理创建的微服务。例如,当客户被删除时,我需要删除与客户相关的 Kubernetes 资源。使用掌舵图很容易实现这一点吗?但我想知道如何从正在运行的 Spring Boot 应用程序中管理 helm 图表。

这可以使用 Fabric8 库实现吗?

任何建议都会非常有帮助。

【问题讨论】:

标签: spring-boot kubernetes microservices kubernetes-helm fabric8


【解决方案1】:

您实际上并不需要 Helm 图表。通常,您可以从集群中运行的应用程序访问Kubernetes API,方式与从集群外部相同。 Kubernetes API 是一个 HTTP REST API,您只需使用适当的身份验证凭据向它发出 HTTP 请求。

由于您使用的是 Java,因此您可以使用 Kubernetes 的官方 Java client library 来访问 Kubernetes API 并直接从您的应用程序代码中创建/删除任何资源。

Java 客户端库还可以帮助您使用正确的身份验证并处理任何其他细节。

【讨论】:

  • 既然你决定用 Java 客户端做所有这些事情,你可以使用 Fabric8 Java client 库来完成所有这些事情,与官方 Java 客户端库相比,它更好且更受信任
猜你喜欢
  • 2021-01-09
  • 2023-03-11
  • 2020-05-06
  • 1970-01-01
  • 2016-01-02
  • 2021-09-26
  • 1970-01-01
  • 2016-02-29
  • 2019-11-22
相关资源
最近更新 更多