我正在尝试在部署中传递一个环境变量,该变量应根据版本号定义前缀:
env:
- name: INDEX_PREFIX
value: myapp-$(VERSION)
$(VERSION)
未在我的部署中定义,但在 pod 使用的 docker 镜像中设置。
我尝试同时使用 $()
和 ${}
但 VERSION
未插入到我的 pod 环境中。在我的 pod shell 中,执行 export TEST=myapp-${VERSION}
确实有效。
有什么办法可以实现我想要的吗?即在我的部署中设置一个引用 Docker 镜像中设置的环境变量的环境变量?
最佳答案
VERSION
是 docker 镜像的环境变量。因此,您可以在容器内或通过传递给它赋值
env:
- name : VERSION
value : YOUR-VALUE
在您的情况下,VERSION
由 docker 容器内的脚本或 Dockerfile 中的脚本设置。
你可以这样做:
- 在 Dockerfile 中,添加
ENV INDEX_PREFIX myapp-${VERSION}
- 将脚本添加到您的入口点
导出 INDEX_PREFIX=myapp-${VERSION}
如果您无法修改 Dockerfile,您可以尝试:
- 从 docker 镜像获取镜像入口点文件(即:/IMAGE-entrypoint.sh)和镜像参数(即:IMAGE-ARGS)。您可以使用
docker检查IMAGE
。 - 使用脚本覆盖 pod 规范中的容器命令和参数。
command:
- '/bin/sh'
args:
- '-c'
- |
set -e
set -x
export INDEX_PREFIX=myapp-${VERSION}
IMAGE-entrypoint.sh IMAGE-ARGS
k8s 文档:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/ 希望对您有帮助。
关于kubernetes - 混合来自 kubernetes 部署和 docker 镜像的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62591140/