我们有一个在GKE Kubernetes上运行的应用程序,它希望auth url(用户将通过他的浏览器重定向)作为环境变量传递.
我们在每个环境中使用不同的命名空间
所以我们当前的pod配置看起来像这样:
env:
- name: ENV
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: AUTH_URL
value: https://auth.$(ENV).example.org
Run Code Online (Sandbox Code Playgroud)
所有工作都令人惊讶,我们可以拥有任意数量的动态环境,我们只需要应用-f config.yaml,它可以完美地工作而无需更改单个配置文件和任何第三方脚本.
现在生产我们想要使用不同的域,因此一般模式https://auth.$(ENV).example.org不再起作用.
我们有什么选择?
prod环境创建一个单独的分支prod-config.yaml然后使用它,否则使用config.yaml) - 但是这种方法我们不能再直接使用kubectl了prodenv 配置单独的配置文件- 但这种情况与12factor应用程序相反?这似乎是使用掌舵的理想机会!
它很容易上手,只需将分蘖安装到您的群集中即可.
Helm使您能够创建可以安装到群集中的"图表"(类似于包).你可以很容易地模拟这些.作为一个例子,你可能有config.yaml看起来像这样:
env:
- name: AUTH_URL
value: {{ .Values.auth.url }}
Run Code Online (Sandbox Code Playgroud)
然后,在掌舵图表中,您有一个values.yaml包含url默认值的内容,例如:
auth:
url: https://auth.namespace.example.org
Run Code Online (Sandbox Code Playgroud)
您可以使用--values带有helm 的选项指定每个环境values.yaml文件,甚至可以使用--sethelm上的标志在使用时覆盖它们helm install.
请查看此处的文档,以获取有关值和模板如何在helm中工作的信息.它似乎非常适合您的用例
| 归档时间: |
|
| 查看次数: |
3377 次 |
| 最近记录: |