当前位置: 首页 > 知识库问答 >
问题:

在不分叉的情况下修改Helm图依赖项的环境变量

龙凯
2023-03-14

有没有一种简单的方法可以以灵活的方式向Kubernetes中的几个容器提供环境变量,无论是通过Helm还是另一种工具?

我目前正在考虑使用Kustomize来完成Helm填写模板后的最后一英里更改,但我却一直在设置Kustomize补丁。在我的场景中,环境变量由Helm在ConfigMap中填写。我想添加一个envfrom字段来读取ConfigMap并将给定的环境变量添加到容器中。我想通过kustoMize将envFrom添加到资源YAML文件中。我遇到的问题是Kustomize patch.yaml文件是特定于资源的。下面分别是我的patch.yaml和我的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
resources:
  - all.yaml

patches:
  - path: patch.yaml
    target:
      kind: "StatefulSet"
      name: "*"
helm install perceptor ../  --post-renderer ./kustomize

共有1个答案

琴修为
2023-03-14

我明白,您不想通过分叉来打破伞状图所依赖的子图的开/闭原则,但您仍然有权通过使其更可扩展和更灵活来对其提出修改。是的,我会建议您在上下文中向helm chart项目提交一个拉请求/请求一个新特性。

下面的代码片断不会破坏当前的功能,并使用户有机会在所需资源的规范中引入基于现有ConfigMap的自定义环境变量。

helm_template.yaml

 #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: {}
 类似资料:
  • 我正在寻找一种方法来刷新我的渐变依赖关系,而不必重新生成项目。我正在使用智能和它的渐变包装器。我尝试过从 IntelliJ 的 gradle UI 运行任务“依赖关系”,我尝试过运行命令 和 ,两者都不起作用。让 gradle 下载新依赖项的唯一方法是使用来自 IntelliJ UI ,但我不喜欢这样做,因为 gradle 会自动运行一些我不想运行的任务,而我只想刷新依赖项。

  • 本文向大家介绍mysql不重启的情况下修改参数变量,包括了mysql不重启的情况下修改参数变量的使用技巧和注意事项,需要的朋友参考一下 通常来说,更新mysql配置my.cnf需要重启mysql才能生效,但是有些时候mysql在线上,不一定允许你重启,这时候应该怎么办呢? 看一个例子: mysql> show variables like 'log_slave_updates'; +-------

  • 我是helm的新手,我希望能够使用配置映射和共享环境变量将gitlab项目变量写入文件。 我为每个环境(其中

  • 我有一个使用Helm和Kubernetes部署的Python应用程序。我想从main.py中取出硬编码变量,并使它们在helm中可配置。问题是,如果我将它们从main.py中取出,那么我就失去了使用运行代码的能力。那么我就失去了快速测试和迭代的能力,因为我需要为3-4个地方的每个参数维护两个单独的系统。 使用字符串作为环境变量integer,如Helm文档所示。 如果我保持上面的设置不变,当我执行

  • 我正在处理一个简单的Docker映像,其中包含大量环境变量。你能像docker-compose一样导入环境变量文件吗?我在docker文件留档中找不到任何相关信息。 Dockerfile 我想重新表述这个问题的一个好方法是:如何在Dockerfile中高效地加载多个环境变量?如果无法加载文件,则无法将docker文件提交到GitHub。

  • 虽然我的问题主题似乎是许多PDF操作包和工具都支持的特性,但我需要明确指出,我不想旋转PDF。 我有一个PDF,它显示了一个纵向(A4),尺寸为WxH 297x210(A4旋转)。 现在,我需要实现的是,这个PDF有横向方向,同时保留尺寸。 我不确定这需要我做什么。 如果我使用Adobe Illustrator将文档格式更改到所需的位置,我还需要旋转内容。如果我将此页面放入设计糟糕的PDF中,此页