我当然检查了helm.sh,但乍一看整个设置看起来有点复杂(helm-client& tiller-server)。在我看来,在大多数情况下,只要拥有一个helm-client就可以逃脱。
这就是我目前的做法
我们说我有一个由3项服务组成的项目即。 watch -n 1 'ps -ef|grep "AppName"'
,postgres
,express
。
我创建了一个名为nginx
的目录,如下所示:
product-release
通常的git东西现在可以申请。每次我做出更改时,我都会对spec文件进行更改,测试它们,编写更新脚本以帮助从最新版本移动到当前版本,然后提交并标记它。
问题:
product-release/
.git/
k8s/
postgres/
Deployment.yaml
Service.yaml
Secret.mustache.yaml # Needs to be rendered by the dev before use
express/
Deployment.yaml
Service.yaml
nginx/
Deployment.yaml
Service.yaml
updates/
0.1__0.2/
Job.yaml # postgres schema migration
update.sh # k8s API server scritps to patch/replace existing k8s objects, and runs the state change job
有分蘖服务器?在客户端进行模板化是不是更简单?当然,如果你想将部署的活动与应用程序的知识(如秘密)分开,那么模板必须在服务器上发生,但为什么呢?答案 0 :(得分:1)
似乎https://redspread.com/(开源)解决了这一特定问题,但在生产准备就绪之前需要更多的开发 - 至少从我的团队快速浏览一下。
我猜我们现在坚持将yaml文件与已部署的应用程序一起保存在git中。
答案 1 :(得分:0)
我们正在使用kubernetes/helm(最新/孵化版本)和Helm图表的中央存储库(包含为我们的组件版本构建的引用容器图像)。
换句话说,Helm包定义及其依赖项与构成Web应用程序的几个组件的源代码和图像定义是分开的。
答案 2 :(得分:0)
注意:Helm v3中已删除了耕种机。请查看此答案,以查看有关为何在Helm v2中需要分till以及为何在Helm v3中将其移除的详细信息:https://v3.helm.sh/docs/faq/#removal-of-tiller
根据GitOps的想法,您所做的是正确的方法(从git repo执行释放)。但是,如果您想进一步推广它以使其更普遍,则可以计划更多目标,包括:
update.sh
或kubectl apply
来更改helm install
,从而避免自定义发布过程。