Kubernetes 在不分叉的情况下修改舵图依赖关系的环境变量

Kubernetes 在不分叉的情况下修改舵图依赖关系的环境变量,kubernetes,kubernetes-helm,kustomize,Kubernetes,Kubernetes Helm,Kustomize,我正在创建一个舵图,它依赖于几个不是我维护的舵图,我想对这些子舵进行一些配置。配置不是太复杂,我只想在每个容器中添加几个环境变量。但是,容器的env字段尚未在头盔图表中模板化。我希望避免将这些图表分叉,并自己维护它们,因为这是一个微不足道的变化 有没有一种简单的方法可以通过Helm或其他工具以灵活的方式向Kubernetes中的多个容器提供环境变量 我目前正在考虑在Helm填写模板后使用Kustomize进行最后一英里的更改,但是我对设置Kustomize补丁感到很不满意。在我的场景中,Helm

我正在创建一个舵图,它依赖于几个不是我维护的舵图,我想对这些子舵进行一些配置。配置不是太复杂,我只想在每个容器中添加几个环境变量。但是,容器的
env
字段尚未在头盔图表中模板化。我希望避免将这些图表分叉,并自己维护它们,因为这是一个微不足道的变化

有没有一种简单的方法可以通过Helm或其他工具以灵活的方式向Kubernetes中的多个容器提供环境变量

我目前正在考虑在Helm填写模板后使用Kustomize进行最后一英里的更改,但是我对设置Kustomize补丁感到很不满意。在我的场景中,Helm在ConfigMap中填写了环境变量。我想添加一个
envFrom
字段来读取ConfigMap并将给定的环境变量添加到容器中。我想通过Kustomize将envFrom添加到资源YAML文件中。我遇到的问题是Kustomize patch.yaml文件是特定于资源的。下面是我的
patch.yaml
和我的
kustomization.yaml
的示例

patch.yaml

apiVersion:apps/v1 种类:StatefulSet 元数据: 姓名:没关系 规格: 模板: 规格: 容器: -名称:服务器 来自: -configMapRef: 姓名:我的环境 kustomization.yaml:

资源:
-亚马尔
补丁:
-路径:patch.yaml
目标:
种类:“状态集”
姓名:“*”
要执行Kustomization,我运行:

helm install perceptor../--后期渲染器。/kustomize
它基本上只是填写头盔模板,然后将它们传递给Kustomize来完成最后一英里的补丁


在补丁中,我必须指定容器(“服务器”)的名称,以正确插入我的configMap。我真正想做的是能够将这些环境变量提供给给定部署中的所有容器(由
kustomization.yaml
中的
target
约束定义),而不管它们的名称如何。从我所看到的情况来看,似乎我必须为每个容器编写一个单独的补丁,这是次优的。我刚开始与Kubernetes合作,所以我可能遗漏了一些可以轻松解决这个问题的东西。

我理解,你不想通过分叉来打破你的伞形图表所依赖的分图表的开/闭原则,但您仍然有权通过使其更具扩展性和灵活性来对其提出修改。是的,我建议您在上下文中向helm chart项目提交拉动请求/请求新功能

下面的代码片段不会破坏当前的功能,并允许用户根据所需资源规范中的现有ConfigMap引入自定义环境变量

舵手

价值观


刚发完这篇文章,我就遇到了。这可能就是我正在寻找的解决方案。这是一个很好的解决方案。将其作为答案发布,以便其他人将来可以使用。@mWatney我很快就会发布。在将其作为解决方案发布之前,我想确认它是否按需工作。@mWatney事实证明,PodPreset解决方案不起作用。在我的例子中,我需要将env变量添加到StatefulSet中的pod中,它使用pod模板。播客预设不适用于此。
 #helm template
 ...

 env:
- name: POD_NAME
  valueFrom:
    fieldRef:
      apiVersion: v1
      fieldPath: metadata.name
- name: POD_NAMESPACE
  valueFrom:
    fieldRef:
      apiVersion: v1
      fieldPath: metadata.namespace
{{- if .Values.envConfigs }}
{{- range $key, $config := $.Values.envConfigs }}
- name: {{ $key }}
  valueFrom:
    configMapKeyRef:
      name: {{ $config }}
      key: {{ $key | quote }}
{{- end }}
{{- end }}
#
# values.yaml
#
envConfigs:
  Q3_CFG_MAP: Q3DM17
  Q3_CFG_TIMEOUT: 30

# if empty use: 
# envConfigs: {}