我正在尝试在 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 集群时遇到了这个问题。
尝试使用 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
...
转义是通过
urlquery
功能完成的,例如
env:
- name: ACCESS_KEY
value: {{ .Values.envVar | urlquery }}