Helm chart 不允许我使用特殊字符 ex '/' 或 '='

问题描述 投票:0回答:2

我正在尝试在 values.yaml 中设置以下值

例如:

envVar: KY13o5+J/jHpg==

尝试在 deploy.yaml 文件中使用该值作为

.
.
containers:
  - name: 'app-container'
    .
    .
    env:
      - name: ACCESS_KEY
        value: {{ .Values.envVar }}

如果我不使用 / 和 = 等字符,ACCESS_KEY 将作为环境变量传递给容器。如果我使用这些字符,那么 ACCESS_KEY 环境变量将无法在运行的容器上使用。

我需要一种方法来转义这两个字符。我尝试使用 \ 并且它对 fof / 但对 = 无效。

注意:我没有遇到 + 的任何问题。我在将容器部署到 Kubernetes 集群时遇到了这个问题。

kubernetes-helm
2个回答
2
投票

尝试使用 quote 字符串函数 转义环境变量中的特殊字符

env:
  - name: ACCESS_KEY
    value: {{ .Values.envVar | quote }}

更新: 即使没有引号,env var 也会正确加载。您在读取此变量时遇到问题吗?

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      env:
        - name: ACCESS_KEY
          value: {{ .Values.envVar }}

kubectl logs --previous test-pod -n test

SHLVL=1
HOME=/root
ACCESS_KEY=KY13o5+J/jHpg==
KUBERNETES_PORT_443_TCP_ADDR=172.20.0.1
...

0
投票

转义是通过

urlquery
功能完成的,例如

env:
  - name: ACCESS_KEY
    value: {{ .Values.envVar | urlquery }}
© www.soinside.com 2019 - 2024. All rights reserved.