Kubernetes的问题。配置文件。

时间:2018-01-18 18:53:17

标签: docker kubernetes

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

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

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

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

2 个答案:

答案 0 :(得分:2)

恕我直言,最佳做法是helm,Kubernetes,包经理。简而言之,它允许您使用k8s清单,例如部署,服务,持久性等,并可选择使用变量对它们进行参数化。

您询问是否最好将这些文件保存在rep-repo或outside。两种方式各有利弊。

掌舵方式

使用helm时,最佳做法是仅为helm图表创建单独的repo(chart = kubernetes包)。这里的优势在于您可以构建您的中央存储库,其中包含所有的"软件包。收集包括他们的版本历史。

在回购

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

没有掌舵,只有yaml文件

您可以使用原始清单,这样更容易,选项也更少。我个人的最佳做法是:将纯配置文件放入rep-repo,直到我将其推送到掌舵级别,并将其放在中央图表中。

答案 1 :(得分:2)

此处类似问题的类似答案:Best practices for storing kubernetes configuration in source control

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

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

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

  • 在一个地方包含所有源代码和yaml文件的Monorepo
  • 单独的k8s repo中的yaml文件
  • 源代码存储库中的yaml文件(在每个存储库中可能包含的Dockerfile旁边)

<强> 1。 Monorepo

  • 每个微服务的单独文件夹。
  • 微服务特定的k8s yamls(deployment.yml,service.yml)进入微服务文件夹
  • 群集范围配置和k8s资源的文件夹(ingress / api-gateway)
  • 集成测试文件夹

如果你担心monorepos,请在决定抛弃之前先阅读about them因为听起来不优雅;)

Protip:如果你有多个k8s集群并且你不想为每个集群写一个不同的k8s文件,那么添加一些客户端jinja模板。

<强> 2。单独的k8s回购

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

第3。单独的源库中的k8s文件

在repos中保留部署,服务yml文件。如果两个微服务完全解耦,可以独立测试并且不需要任何需要创建的常见k8s资源,这可能是最好的。我在实践中从未遇到过这种情况。我不得不将7种不同微服务的回购合并到一个回购中以释放理智。