kubernetes - 混合来自 kubernetes 部署和 docker 镜像的环境变量

标签 kubernetes environment-variables

我正在尝试在部署中传递一个环境变量,该变量应根据版本号定义前缀:

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 中的脚本设置。

你可以这样做:

  1. 在 Dockerfile 中,添加 ENV INDEX_PREFIX myapp-${VERSION}
  2. 将脚本添加到您的入口点 导出 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/

相关文章:

maven - 具有默认回退的 pom.xml 环境变量

windows - 草莓 Perl : forgets environment variables?

fedora - Kubernetes 依赖 kubelet 和 master 进程

容器的 Kubernetes 临时存储

vim - 如何在Vim中列出所有环境变量?

ruby-on-rails - rails 4 : use different server port depending on environment

kubernetes - 安装 Helm 图表稳定/MSSQL的Linux我得到 “pod has unbound PersistentVolumeClaims”

kubernetes - OpenShift 和 hostnetwork=true

kubernetes - 如何在谷歌云中启用自动缩放/v2beta2

MacOS 源 ~/.bash_profile 禁用了一切