如何共享具有多个微服务和特定 Kubernetes 配置的软件产品

How to share a software product having multiple microservices and with specific Kubernetes configurations

我是 Kubernetes 新手。我有疑问。

假设我有一个包含 5 个微服务的软件产品。它部署在我的 Kubernetes 集群(OCP 集群)上并且运行良好。每个微服务在集群上都有 Kubernetes 配置文件——部署、服务、configmap yaml 文件等

假设我想把产品卖给客户,他们会在自己的产品 Kubernetes 集群中设置(可能在 OCP 或 Amazon EKS 等中)

向客户提供产品的合适方式是什么?

Way1 - 发送每个微服务的所有 yaml 文件(deployment.yaml、service.yaml、configmap.yaml)。总共有 5 个微服务,所以 5 deployment.yaml、5 service.yaml、configMap.yaml 文件等。收到这些文件后,他们将在其 Kubernetes 集群中手动设置文件,然后是所有 pods会上来的。

Way2 - 对于每个微服务,我们都会给出 Kubernetes Helm 图表。因此,5 个微服务总共有 5 个 Helm 图表。收到图表后,他们将使用 helm install 安装所有 yaml 文件。

Way3 - 或者其他更好的方法?

注意 - 私有 Docker 将向客户授予图像存储库访问权限以拉取微服务图像。

方式 1:不。有工具可以做到这一点。您不需要发送 yaml 文件。

方式 2:这是最好的方式,但需要进行一些修改。创建 5 个掌舵图来管理产品的独立组件。然后创建依赖于其他 5 个图表的第 6 个图表。这样您只需向消费者提供 1 个“产品”图表,然后该图表将其所需的一切拉到 运行。这通常是如何完成的。查看来自 grafana 的 loki-stack 等项目。他们有一个名为 'loki-stack' 的 helm 图表,该图表依赖于 grafana、loki、Prometheus、promtail 等。然后您的消费者将只 helm install my-product,helm 将负责获取 5 个服务图表。

方法 3:有很多方法可以做到这一点,但它们都是特定于实现的。例如,您可以使用 OAM + KubeVela。但是,如果消费者不使用 OAM + KubeVela,那就成问题了。 IMO Helm 是现在的标准方法,直到更多人开始使用像 KubeVela 这样的东西