我正在创建一个依赖于我未维护的几个 Helm 图表的 Helm 图表,我想对这些子图表进行一些配置。配置并不太复杂,我只想为每个容器添加几个环境变量。但是,env
容器的字段尚未在 Helm 图表中模板化。我想避免分叉这些图表并自己维护它们,因为这是一个微不足道的变化。
有没有一种简单的方法可以通过 Helm 或其他工具灵活地为 Kubernetes 中的多个容器提供环境变量?
我目前正在研究在 Helm 填写模板后使用 Kustomize 进行最后一英里的更改,但我对设置 Kustomize 补丁程序感到困惑。在我的场景中,Helm 在 ConfigMap 中填写了环境变量。我想添加一个envFrom
字段来读取 ConfigMap 并将给定的环境变量添加到容器中。我想通过 Kustomize 将 envFrom 添加到资源 YAML 文件中。我遇到的问题是 Kustomize patch.yaml 文件是资源特定的。下面分别是 mypatch.yaml
和 my的示例kustomization.yaml
。
patch.yaml
:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: does-not-matter
spec:
template:
spec:
containers:
- name: server
envFrom:
- configMapRef:
name: my-env
kustomization.yaml
:
resources:
- all.yaml
patches:
- path: patch.yaml
target:
kind: "StatefulSet"
name: "*"
要执行 Kustomization,我运行:
helm install perceptor ../ --post-renderer ./kustomize
这基本上只是填写 Helm 模板并将它们传递给 Kustomize 以完成最后一英里的补丁。
在补丁中,我必须指定容器的名称(“服务器”)才能正确注入我的 configMap。我真正想做的是能够将这些环境变量提供给给定部署中的所有容器(由 中的target
约束定义kustomization.yaml
),无论它们的名称如何。从我所见,我几乎必须为每个容器编写一个单独的补丁,这是次优的。我刚开始使用 Kubernetes,所以我可能遗漏了一些可以轻松解决这个问题的东西。