亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 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 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號