2016-07-08 33 views
2

下面是我如何在谷歌上使用kunbernetes。kubernetes部署。如何更改滾動更新的容器環境變量?

我有一個節點應用讓我們說圖書門戶

節點的應用程序是使用環境變量配置

第一步:我創建了碼頭工人的文件,並推動

gcr.io/<project-id>/book-portal:v1 

第二步:部署以下命令

kubectl run book-portal --image=gcr.io/<project-id>/book-portal:v1 --port=5555 --env ENV_VAR_KEY1=value1 --env ENV_VAR_KEY2=value2 --env ENV_VAR_KEY3=value3 

第三步:

kubectl expose deployment book-portal --type="LoadBalancer" 

第四步:獲取公網IP與

kubectl get services book-portal 

現在假設我添加了新功能,並在下一版本中新的配置。

所以推出新的版本V2

第一步:我創建了碼頭工人的文件,並推動

gcr.io/<project-id>/book-portal:v2 

第二步:編輯部署

kubectl edit deployment book-portal 

---------------yaml--------------- 
... 
    spec: 
     replicas: 1 
     selector: 
     matchLabels: 
      run: book-portal 
     strategy: 
     rollingUpdate: 
      maxSurge: 1 
      maxUnavailable: 1 
     type: RollingUpdate 
     template: 
     metadata: 
      creationTimestamp: null 
      labels: 
      run: book-portal 
     spec: 
      containers: 
      - env: 
      - name: ENV_VAR_KEY1 
       value: value1 
      - name: ENV_VAR_KEY2 
       value: value2 
      - name: ENV_VAR_KEY3 
       value: value3 
      image: gcr.io/<project-id>/book-portal:v1 
      imagePullPolicy: IfNotPresent 
      name: book-portal 
... 
---------------------------------- 

我成功能夠改變

image:gcr.io/<project-id>/book-portal:v1 

image:gcr.io/<project-id>/book-portal:v2 

但我不能添加/更改環境變量

  - env: 
      - name: ENV_VAR_KEY1 
       value: value1 
      - name: ENV_VAR_KEY2 
       value: value2 
      - name: ENV_VAR_KEY3 
       value: value3 
      - name: ENV_VAR_KEY4 
       value: value4 
  1. 任何人都可以引導什麼是最佳做法,通過配置 在節點應用上kubernetes ?
  2. 我應該如何處理滾動更新過程中的環境變量 變化?
+0

如果答案是正確的,你能接受嗎? –

回答

3

我認爲最好的辦法是在K8S使用configmaps,然後改變你莢模板從configmap獲取環境變量值看Consuming ConfigMap in pods

編輯:我appologize我把錯誤的鏈接在這裏。我已更新,但爲TL; DR 您可以執行以下操作。

apiVersion: v1 
kind: ConfigMap 
metadata: 
name: special-config 
namespace: default 
data: 
special.how: very 
special.type: charm 

然後pod的用法可以像這樣。

apiVersion: v1 
kind: Pod 
metadata: 
name: dapi-test-pod 
spec: 
    containers: 
    - name: test-container 
    image: gcr.io/google_containers/busybox 
    command: [ "/bin/sh", "-c", "env" ] 
    env: 
     - name: SPECIAL_LEVEL_KEY 
     valueFrom: 
      configMapKeyRef: 
      name: special-config 
      key: special.how 
     - name: SPECIAL_TYPE_KEY 
     valueFrom: 
      configMapKeyRef: 
      name: special-config 
      key: special.type 
    restartPolicy: Never 
+1

感謝您的回覆。你能否提供我的問題的例子? – yogs

+1

我道歉我把錯誤的文檔鏈接在這裏我已經更新,並且還在那裏複製那裏的例子到後代 – ChrisMcKenzie