假设我们必须为阶段test,int和prod管理数据库连接字符串。
Kubernetes的模式是什么?
答案 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并指向数据库服务(所有逻辑为它在掌舵图中的清单模板中)