wake-up-neo.com

Aktualisieren Sie k8s ConfigMap oder Secret, ohne das vorhandene zu löschen

Ich verwende K8S ConfigMap und Secret zur Verwaltung unserer Eigenschaften. Mein Design ist ziemlich einfach, dh, dass Eigenschaftsdateien in einem Git-Repo gespeichert werden und Build-Server wie Thoughtworks GO verwendet werden, um sie automatisch als ConfigMaps oder Secrets (je nach Wahl) in meinem K8s-Cluster bereitzustellen.

Momentan habe ich festgestellt, dass es nicht wirklich effizient ist, die vorhandene ConfigMap und das Secret immer zu löschen und das neue zu erstellen, um es wie folgt zu aktualisieren:

  1. kubectl delete configmap foo

  2. kubectl create configmap foo --from-file foo.properties

Gibt es einen schönen und einfachen Weg, um über einen Schritt effizienter zu sein als das Löschen von Strom? Das, was ich jetzt mache, könnte möglicherweise den Container gefährden, der diese Configmaps verwendet, wenn versucht wird, zu mounten, während die alte Configmap gelöscht wird und die neue nicht erstellt wurde.

Danke im Voraus.

32
James Jiang

Sie können yaml mit dem Befehl kubectl create configmap abrufen und an kubectl replace weiterleiten:

kubectl create configmap foo --from-file foo.properties -o yaml --dry-run | kubectl replace -f -
67
Jordan Liggitt

kubectl replace ist jetzt ein sehr praktischer Weg, dies zu erreichen

kubectl replace -f some_spec.yaml Lassen Sie eine vollständige configMap (oder andere Objekte) aktualisieren

Dokumente und Beispiele finden Sie direkt in https://kubernetes.io/docs/user-guide/kubectl/kubectl_replace/

Kopieren/Einfügen aus der Hilfe:

# Replace a pod using the data in pod.json.
kubectl replace -f ./pod.json

# Replace a pod based on the JSON passed into stdin.
cat pod.json | kubectl replace -f -

# Update a single-container pod's image version (tag) to v4
kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -

# Force replace, delete and then re-create the resource
kubectl replace --force -f ./pod.json
18

Für kleine Änderungen in configMap verwenden Sie edit

kubectl edit configmap <cfg-name>

Dadurch wird configMap im vi-Editor geöffnet. Nehmen Sie die Änderungen vor und speichern Sie sie.

0
deepdive