2016-11-24 111 views
3

我已经签出了helm.sh当然,但乍一看整个设置似乎有点复杂(掌舵客户端&分蘖服务器)。在我看来,我可以通过在大多数情况下拥有一个掌舵客户端而逃脱。如何版本控制kubernetes应用程序?

这是我目前做

比方说,我有一个3个服务即组成项目。 postgresexpressnginx

我创建了一个名为product-release目录如下:

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 

通常的混帐东西,现在可以申请。每次我做出更改时,我都会对规格文件进行更改,测试它们,编写更新脚本以帮助从最新版本移动到当前版本,然后提交并标记它。

问题

  1. 这个工作对我来说,到目前为止,但就是这个 “正确的方式”?
  2. 为什么helm有分蘖机服务器?在客户端做模板不是更简单吗?当然,如果你想将部署的活动与应用程序的知识(如秘密)分开,模板将不得不在服务器上发生,但为什么?

回答

1

似乎https://redspread.com/(开源)解决了这个特殊问题,但在生产就绪之前需要更多的开发 - 至少从我的团队快速浏览它。

现在我猜,我们会坚持保持yaml文件与git一起使用已部署的应用程序。

0

我们正在使用kubernetes/helm(最新/孵化版本)和一个中央仓库的Helm图表(引用为我们的组件版本构建的容器图像)。

换句话说,Helm软件包定义及其依赖关系与组成我们Web应用程序的几个组件的源代码和图像定义是分开的。

相关问题