我对kubernetes很新,只是想知道几件事。
考虑我有两个存储库(front-e,backe-e)。它们中的每一个都构建到docker镜像中。
我想用kubernetes管理这两个图像并在集群内运行它们。
在这种情况下,存储部署* .yml文件的最佳做法是什么?单独的回购?
答案 0 :(得分:2)
恕我直言,最佳做法是helm,Kubernetes,包经理。简而言之,它允许您使用k8s清单,例如部署,服务,持久性等,并可选择使用变量对它们进行参数化。
您询问是否最好将这些文件保存在rep-repo或outside。两种方式各有利弊。
使用helm时,最佳做法是仅为helm图表创建单独的repo(chart = kubernetes包)。这里的优势在于您可以构建您的中央存储库,其中包含所有的"软件包。收集包括他们的版本历史。
这使得其他开发人员的工作更容易,因为与项目相关的所有内容都在其存储库中。
您可以使用原始清单,这样更容易,选项也更少。我个人的最佳做法是:将纯配置文件放入rep-repo,直到我将其推送到掌舵级别,并将其放在中央图表中。
答案 1 :(得分:2)
此处类似问题的类似答案:Best practices for storing kubernetes configuration in source control
就像David说的那样,你总是可以尝试使用helm。但是,对于简单的项目或者刚刚开始,我建议不要使用helm。我发现它很复杂,并且在我的k8s集群上运行另一个有状态组件时犹豫不决。
我列出了以下其他一些选项。
TL; DR :(按个人喜好排序)
<强> 1。 Monorepo 强>
如果你担心monorepos,请在决定抛弃之前先阅读about them因为听起来不优雅;)
Protip:如果你有多个k8s集群并且你不想为每个集群写一个不同的k8s文件,那么添加一些客户端jinja模板。
<强> 2。单独的k8s回购
与1相同,但没有源代码。
第3。单独的源库中的k8s文件
在repos中保留部署,服务yml文件。如果两个微服务完全解耦,可以独立测试并且不需要任何需要创建的常见k8s资源,这可能是最好的。我在实践中从未遇到过这种情况。我不得不将7种不同微服务的回购合并到一个回购中以释放理智。