如何从集群中的 运行 spring 引导应用程序动态创建 Kubernetes 资源

How to dynamically create Kubernetes resources from within a running spring boot application in the cluster

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

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

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

这可以使用 Fabric8 库实现吗?

任何建议都会很有帮助。

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

由于您使用的是 Java,因此您可以使用 Kubernetes 的官方 Java client library 直接从您的应用程序代码访问 Kubernetes API 和 create/delete 任何资源.

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