Kubernetes 问题.配置文件



我对 kubernetes 很陌生,只是想知道几件事。

考虑我有两个存储库(front-e,backe-e)。它们中的每一个都构建到 docker 映像中。

我想使用 kubernetes 管理这两个映像,并在集群内运行它们。

在这种情况下存储部署 *.yml 文件的最佳实践是什么?单独的回购?

这里类似问题的类似答案:在源代码管理中存储 kubernetes 配置的最佳实践

就像大卫说的,你可以随时尝试使用头盔。但是,对于简单的项目或您刚刚开始,我建议您不要使用 helm。我发现它很复杂,并且犹豫是否在我的 k8s 集群上运行另一个有状态组件。

我在下面列出了其他一些选项。

TL;DR:(按个人喜好排序)

  • 将所有源代码和yaml文件集中在一个地方的Monorepo
  • 单独的 K8s 存储库中的 YAML 文件
  • 源代码存储库中的 yaml 文件(位于每个存储库中可能拥有的 Dockerfile 旁边)

1.莫诺回购

  • 为每个微服务分隔文件夹。
  • 微服务特定的 k8s yamls (deployment.yml, service.yml) 进入微服务文件夹
  • 用于群集范围配置和 k8s 资源的文件夹(入口/API 网关)
  • 用于集成测试的文件夹

如果您担心monorepos,请在决定放弃它们之前阅读它们,因为它们听起来不优雅;)

专业提示:如果您有多个 k8s 集群,并且不想为每个集群编写不同的 k8s 文件,请添加一些客户端 jinja 模板。

2. 单独的 k8s 存储库

与 1 相同,但没有源代码。

3. K8s 文件位于单独的源存储库中

将部署、服务 yml 文件保留在存储库中。如果两个微服务都完全解耦,可以独立测试并且不需要创建任何通用的 k8s 资源,这可能是最好的。不过,我在实践中从未遇到过这种情况。我不得不将 7 个不同微服务的存储库合并到一个存储库中以实现发布健全性。

恕我直言,这方面的最佳实践是 helm,Kubernetes,包管理器。简而言之,它允许您使用 k8s 清单,例如部署、服务、持久性等,并可以选择使用变量参数化这些清单。

您询问将这些文件保留在存储库中还是外部更好。这两种方式都有其优点和缺点。

掌舵方式

使用 helm 时,最佳做法是仅对 helm 图表(chart = kubernetes 包)创建一个单独的存储库。优点是您可以构建中央存储库,其中收集了所有"包",包括其版本历史记录。

回购中

这使得其他开发人员的工作更容易,因为与您的项目相关的所有内容都在其存储库中。

没有头盔,只有 YAML 文件

您只能使用原始清单,这要容易得多,而且选项也更少。我个人的最佳实践是:将纯配置文件放在存储库中,直到我将其推送到helm级别,并将其放置在中央图表中。

最新更新