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:
kubectl delete configmap foo
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.
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 -
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
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.