Kubernetes环境变量传递时$符号丢失问题求助
Kubernetes环境变量传递时$符号丢失问题求助
大家好,我最近碰到一个棘手的问题:在Kubernetes中传递带多个$符号的环境变量时,这些$会被意外解析丢失,导致最终容器里拿到的变量值和预期不符,想请教下有没有解决办法。
先给大家看下我的相关配置:
Dockerfile内容
FROM python:3.11-alpine COPY test.py . ENTRYPOINT [ "python3", "test.py" ]
测试脚本test.py
import os import time print(os.environ) time.sleep(30)
Kubernetes Pod配置
apiVersion: v1 kind: Pod metadata: name: test spec: containers: - name: test image: test:0.1 imagePullPolicy: Never env: - name: TEST value: 1$2$$3$$$4$$$$ - name: TEST2 value: '1$2$$3$$$4$$$$' - name: TEST3 value: '"1$2$$3$$$4$$$$"'
问题现象
我在Kubernetes v1.23生产环境和v1.25版本中都复现了这个问题:
容器启动后输出的环境变量是这样的:
environ({..., 'TEST': '1$2$3$$4$$', 'TEST2': '1$2$3$$4$$', 'TEST3': '"1$2$3$$4$$"', ... }
但我期望所有变量的值都应该是1$2$$3$$$4$$$$。
我已经尝试了不同类型的引号(单引号、双引号),但都没解决问题;后来试了用"1\\$2\\$\\$3\\$\\$\\$4\\$\\$\\$\\$"这种转义写法,结果容器里拿到的是带\的原始转义字符串,不是我想要的纯$的格式。
有没有大佬知道怎么正确传递这种带多个$的环境变量,让容器能拿到和配置里完全一致的值?
备注:内容来源于stack exchange,提问作者Viktor Komarov
相关产品推荐
相关产品推荐

