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

将环境变量的值分配给helm变量

高鸿振
2023-03-14

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

我为每个环境(其中

MYSQL_USER_<ENV> = "user"
MYSQL_PASSWORD_<ENV> = "pass"

在舵图中,每个环境都有其变量的映射。例如,值。

envVars:
  MYSQL_USER: $MYSQL_USER_<ENV>
  MYSQL_PASSWORD: $MYSQL_PASSWORD_<ENV>

值。yaml包含一个Ruby文件,该文件将使用这些变量:

files:
  config.rb: |
    mysql['username'] = ENV["MYSQL_USER"]
    mysql['password'] = ENV["MYSQL_PASSWORD"]

configmap.env.yaml定义:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "mychart.fullname" . }}-config-env
data:
{{- range $config_key, $config_value := .Values.envVars }}
  {{ $config_key }}: {{ $config_value | quote | nindent 4 }}
{{- end }}

配置映射。文件夹。yaml定义:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "mychart.fullname" . }}-config-volume
data: 
{{- range $file_path, $file_content := .Values.files }}
  {{ $file_path }}: |
{{ $file_content | indent 4 -}}
{{- end }}

最后,配置映射的部署(这里只显示配置映射部分,我这里不使用机密,因为这个问题已经足够长了):

      volumes:
        - name: {{ include "mychart.fullname" . }}-config-volume
          configMap:
            name: {{ include "mychart.fullname" . }}-config-volume
      containers:
        - name: {{ .Chart.Name }}
          volumeMounts:
          - name: {{ include "mychart.fullname" . }}-config-volume
            mountPath: /etc/my-config-dir
          envFrom: 
            - configMapRef:
                name: {{ include "mychart.fullname" . }}-config-env

因此,在一句话中,工作流应该是:MYSQL\u用户/密码_

我似乎无法使环境变量成为值。yaml(MYSQL\u USERMYSQL\u PASSWORD)获取项目变量(MYSQL\u USER)的值_

我试图避免多个--set参数。我也不知道如何envsubst可以在这里使用...

任何帮助将不胜感激,谢谢!


共有1个答案

上官砚文
2023-03-14

所以最终我使用了envsubst

  script:
    - VALUES_FILE=values.${ENV}.yaml
    - envsubst < ${VALUES_FILE}.env > ${VALUES_FILE}
    - helm upgrade ... -f ${VALUES_FILE}
 类似资料:
  • 问题内容: 在上面,这是硬代码。我想将 变量 分配 给值。即,均值=注册; 让我知道! 问题答案: 您的问题不是很清楚。我假设变量是在Servlet中声明的,因为在JSP中使用Java是一种不好的做法。为了能够在转发到JSP的Servlet之间共享变量,您需要将此变量设置为request属性: 然后在JSP中,您可以使用JSP EL获得“ registration”属性的值: 您应该阅读Java

  • 问题内容: 我正在使用以下代码: 该值不警报。怎么了 问题答案: 实质上:

  • 最佳实践最好在values.yaml文件中定义环境变量还是在templates/deployment.yaml放入中定义环境变量? 如果有您使用的示例应用程序,您能提供帮助吗?

  • 当正在构建映像路径时,这就是我想要构建映像路径的方式,其中有docker注册表地址,我想要从ConfigMap获取它。 有没有关于如何使用头盔来解决这个问题的建议?谢谢

  • 问题内容: 我正在尝试读取Firestore文档的值。我尝试了两种不同的方法,但是每种方法都失败了。在第一个中,在返回行上引发错误。我发现了发生这种情况的原因,因此,我实现了第二种方法。 在第二种方法中,我将分配给变量,然后在函数末尾返回该变量(请参见下面的代码)。但是,当我这样做时,该函数将返回一个空数组。让我惊讶的是,打印返回了正确的值,但是在函数执行了return语句后不久。是否因为它是异步

  • 问题内容: 上面给我一个错误,即“一个”不存在。不能以这种方式分配吗?我想为列表中的每个var分配一个递增编号。 问题答案: Python变量是值的 名称 。他们并没有真正“包含”这些价值观。 导致“ var”成为列表中每个元素的名称。在循环内,它不会影响列表:相反,它将导致不再是list元素的名称,而是开始成为当前名称的名称。 同样,当你创建列表,如果,而不是已经为值的名字,那么你可以不使用它们