[英]Accessing environment variables from a pod
我编写了 golang 程序,它使用 export var name = somevalue 从系统中设置的环境变量中获取值。
cloudType = os.Getenv("CLOUD_TYPE")
clusterRegion = os.Getenv("CLUSTER_REGION")
clusterType = os.Getenv("CLUSTER_TYPE")
clusterName = os.Getenv("CLUSTER_NAME")
clusterID = os.Getenv("CLUSTER_ID")
如上所述,我的程序尝试使用 getenv func 从系统中设置的 env var 中获取值。如果运行它并从 env 变量中获取值,该程序运行良好。 但是当我尝试构建图像并在 pod 中运行它时,它能够从 env var 中获取值。 它给出了空值。 有没有办法从 pod 访问本地环境变量?
...haven't set the env var in the pod. I set it locally in my system
在您的主机上设置的环境变量不会自动传递给 Pod。 您可以在规范中设置环境并通过容器访问。 将规范中的环境变量替换为主机上的变量的常用方法是使用envsubst < draft-spec.yaml > final-spec.yaml
。
制作一个像这样的 yaml 文件来定义配置 map
apiVersion: v1
data:
CLOUD_TYPE: "$CLOUD_TYPE"
CLUSTER_REGION: "$CLUSTER_REGION"
CLUSTER_TYPE: "$CLUSTER_TYPE"
CLUSTER_NAME: "$CLUSTER_NAME"
CLUSTER_ID: "$CLUSTER_ID"
kind: ConfigMap
metadata:
creationTimestamp: null
name: foo
确保您的配置变量已设置,然后将其应用于您的集群,首先使用 env 替换
envsubst < foo.yaml | kubectl apply -f
然后在 pod 定义中使用配置 map
spec:
containers:
- name: mypod
envFrom:
- configMapRef:
name: foo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.