为了账号安全,请及时绑定邮箱和手机立即绑定

从 pod 访问环境变量

从 pod 访问环境变量

Go
至尊宝的传说 2022-10-17 15:38:25
我编写了 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 访问本地环境变量?
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

制作这样的 yaml 文件来定义配置映射


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 定义中使用 config map


spec:

  containers:

  - name: mypod

    envFrom:

    - configMapRef:

        name: foo


查看完整回答
反对 回复 2022-10-17
?
湖上湖

TA贡献2003条经验 获得超2个赞

...haven't set the env var in the pod. I set it locally in my system


在您的主机上设置的环境变量不会自动传递给 Pod。您可以在规范中设置环境并通过容器访问。将规范中的环境变量替换为主机上的变量的常用方法是使用envsubst < draft-spec.yaml > final-spec.yaml. 例如,如果您有规格:


apiVersion: v1

kind: Pod

metadata:

  labels:

    run: busybox

  name: busybox

spec:

  restartPolicy: Never

  containers:

  - name: busybox

    image: busybox

    imagePullPolicy: IfNotPresent

    command: ["ash","-c","echo ${CONTAINER_MESSAGE}"]

    env:

    - name: CONTAINER_MESSAGE

      value: $HOST_MESSAGE

你可以运行HOST_MESSAGE='hello, world!' envsubst '{$HOST_MESSAGE}' < busybox.yaml | kubectl apply -f -。这会将 $HOST_MESSAGE 替换为“你好,世界!” 但不会触及 ${CONTAINER_MESSAGE}。这种方法不依赖于 ConfigMap,它允许您kubectl set env在部署后使用它来更新变量。


查看完整回答
反对 回复 2022-10-17
?
白板的微信

TA贡献1883条经验 获得超3个赞

看来您将 env var 设置为不在图像中。

首先,您需要确保在映像或 pod 中设置了 env。在镜像中,您需要在 Dockerfile 中使用 ENV。文档。在 Kubernetes pod 中,doc

其次,你提到你想从你的 pod 中获取运行时环境变量,你可以运行下面的命令。

kubectl exec -it ${POD_NAME} -- printenv


查看完整回答
反对 回复 2022-10-17
  • 3 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信