2016-07-08 8 views
2

Unten ist, wie ich kunbernetes auf Google benutze.Kubernetes Bereitstellung. Wie ändere ich Container-Umgebungsvariablen für laufende Updates?

Ich habe eine Knoten-Anwendung sagen wir Buch-Portal.

Knoten App verwendet Umgebungsvariablen für Konfigurationen.

Schritt1: erstellt I Andockfensters Datei und schob

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

Schritt 2: eingesetzt mit folgenden Befehle

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 

Schritt 3:

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

Schritt 4: öffentliche IP Setzen Sie sich mit

kubectl get services book-portal 

wird nun angenommen, ich neue Funktionen und Konfigurationen in der nächsten Version hinzugefügt.

So eine neue Version v2

Schritt 1 ausrollen: ich Docker-Datei erstellt und schob

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

Schritt 2: bearbeiten Deployment

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 
... 
---------------------------------- 

Ich bin erfolgreich in der Lage zu ändern

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

zu

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

Aber ich kann nicht/ändern Umgebungsvariablen hinzufügen

  - 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. Kann jemand führen mit dem, was Best Practices Konfigurationen in Knoten App auf Kubernetes passieren ?
  2. Wie soll ich Umgebungsvariable Änderungen während des Rollup-Updates behandeln?
+0

Wenn die Antwort richtig ist, können Sie es akzeptieren? –

Antwort

3

Ich denke, Ihre beste Wette configmaps in K8S zu verwenden ist und dann Sie pod Vorlage ändern env Variablenwerte aus dem configmap sehen Consuming ConfigMap in pods

bearbeiten zu bekommen: Ich appologize Ich habe den falschen Link hier. Ich habe aktualisiert, aber für die TL; DR können Sie Folgendes tun.

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

und dann kann Pod-Nutzung wie folgt aussehen.

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

Danke für die Antwort. Kannst du ein Beispiel im Zusammenhang mit meiner Frage geben? – yogs

+1

Ich entschuldige mich, ich habe den falschen Dokumentationslink hier eingefügt. Ich habe das Beispiel für die Nachwelt aktualisiert und kopiert – ChrisMcKenzie