本文介绍了Helm将iciKeyRef连接到一个环境变量中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用helm 3,并希望将3个secRefKey连接到单个Env Var值中。

这是我的cronjob.yaml文件:

apiVersion: batch/v1
kind: CronJob 
metadata:
  name: my-cronjob
spec:
  schedule: {{ .Values.cron }}
  jobTemplate:
    spec:
      template:
        spec:
          initContainers:
                - name: PREFIX
                  valueFrom:
                    secretKeyRef:
                      name: {{ .Values.secretName }}
                      key: prefix
                - name: ENV
                  valueFrom:
                    secretKeyRef:
                      name: {{ .Values.secretName }}
                      key: env
                - name: SUFFIX
                  valueFrom:
                    secretKeyRef:
                      name: {{ .Values.secretName }}
                      key: suffix
                - name: URL_FULL
                  value: $(PREFIX)$(ENV)$(SUFFIX)
          containers:
           .
           .
           .
           .
           .

我希望URL_FULL的值是prefixenvsuffix串联的实际值。

但我使用helm template命令得到的内容实际上就是我在值中写入的内容:

            - name: URL_FULL
              value: $(PREFIX)$(ENV)$(SUFFIX)

提前谢谢。

推荐答案

helm template不会解析这些环境变量,它只会呈现模板,正如文档所述。

您需要部署图表。我举了一个简单的例子:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:

  volumes:
    - name: shared-volume
      emptyDir: {}
  initContainers:
    - name: busybox
      image: busybox
      volumeMounts:
        - name: shared-volume
          mountPath: /nginx-data
      command: ["/bin/sh"]
      # sleep so that we could exec into it
      args: ["-c", "sleep 6000"]

      env:
        - name: PROP_ONE
          valueFrom:
            secretKeyRef:
              key: one
              name: secret-sample
        - name: PROP_TWO
          valueFrom:
            secretKeyRef:
              key: two
              name: secret-sample
        - name: PROP_THREE
          value: $(PROP_ONE)
  containers:
    - name: nginx
      image: nginx
      volumeMounts:
        - name: shared-volume
          mountPath: /usr/share/nginx/html

然后您可以发出:

helm install foo  .

然后发出helm ls以查看它是否在群集中。

即使您现在执行:

kubectl describe pod nginx | grep PROP_THREE

您将看到引用是:

PROP_THREE:  $(PROP_ONE)

如果您确实想要查看env变量,则必须执行容器(我不知道还有其他方法):

kubectl exec -it nginx -c busybox -- /bin/sh

然后:

   env | grep PROP_THREE
   PROP_THREE=bar

以查看它是否已正确解析。

这篇关于Helm将iciKeyRef连接到一个环境变量中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-10 20:55