0

我在一个 docker 容器中设置一个环境变量,我在运行时收到它的值。

  env:
    - name: POD_INFO
      value: {{ Values.resolved_when_the_container_starts }}

我想在 XML 文件中使用这个值。有没有办法我可以做到这一点?

就像是

<property>
   <name>pod.info</name>
   <value>this place should pick up the value from that environment variable</value>
</property>
4

2 回答 2

0

您可以使用 envsubst 并在entrypoint.sh脚本中调用它。您必须先定义变量,然后将它们替换为envsubst.

kminehart很好地解释了如何envsubst在其中一个 github案例中工作。

# mytemplate.tmpl  
apiVersion: extensions/v1beta1  
kind: Deployment  
# ...  
architecture: ${GOOS}  
GOOS=amd64 envsubst < mytemplate.tmpl > mydeployment.yaml  
# mydeployment.yaml  
apiVersion: extensions/v1beta1  
kind: Deployment  
# ...  
architecture: amd64  

env 替换的另一种方式是sed. 是一篇很好的文章,展示了它是如何工作的。

sed -i -g "s/[target_expression]/[replace_expression/g" <file> 
于 2020-04-07T12:49:17.493 回答
0

Kubernetes 和 Helm 都没有提供模板化 ConfigMap 或任何其他文件的方法。您可能正在寻找的是init container,它在您的容器之前开始,并且可以执行您想要的任何自定义脚本。然后,您可以使用您的环境变量修改配置文件。

于 2020-04-07T06:06:30.213 回答