什么是阶段特定的K8s配置的最佳方式?

时间:2018-01-25 11:18:04

标签: kubernetes config

假设我们必须为阶段test,int和prod管理数据库连接字符串。

Kubernetes的模式是什么?

2 个答案:

答案 0 :(得分:2)

我会通过ConfigMaps处理一般配置。为每个环境创建配置,让您的pod / deployment通过环境变量使用这些值。

此方法允许您将配置与k8对象定义分离,并且能够为每个环境注入所需的配置。

对于敏感数据(例如,可能包含连接字符串中的用户名和密码),请考虑使用Secrets代替。

答案 1 :(得分:0)

根据我的经验,最好的方法是使用更高级别的构造,如Helm Chart。这样,您就可以以平台无关的方式管理所有清单,并在图表安装/更新期间对其进行配置。

这样您就可以同时使用ConfigMaps,Secrets或env vars,并从安装/升级期间设置的值中填充它们。使用helm,您可以这样做:

  • helm install -f values.yaml:其中值yaml包含所有非默认值(即.db密码)
  • helm upgrade <release> --reuse-values --set image.tag=1.0.1说发布一个新版本,保留初始安装期间定义的所有其他值。

对于非默认组件,例如ie。在开发数据库中,您可以使用devdb.enabled之类的值,默认值为false,并将其设置为true,只需要在dev env中启动devdb pod并指向数据库服务(所有逻辑为它在掌舵图中的清单模板中)