Deletion Protection
Das Löschschutz Feature verhindert das versehentliche Löschen von bestimmten Kubernetes Objekten.
Details
Auf NKE Clustern, können Sie Kubernetes "Namespaces" und "PersistentVolumeClaims" (PVCs) vor versehentlichem Löschen schützen. Dies bietet zusätzliche Sicherheit vor einem unbeabsichtigten Verlust von produktiven Applikationen und deren Daten.
Verfügbarkeit
Das Löschschutz Feature ist standardmässig Teil jedes NKE Clusters.
Nutzung
Um zu verhindern, dass ein Kubernetes Namespace oder ein PersistentVolumeClaim
versehentlich gelöscht wird, können Sie die nine.ch/deletion-protection: "true"
Annotation benutzen. Solang diese Annotation gesetzt ist, kann die
Resource nicht gelöscht werden. Bitte stellen Sie sicher den Wert der Annotation
auf "true"
zu setzen um den Löschschutz zu aktivieren.
Um die Annotation beispielsweise auf einem Kubernetes Namespace zu setzen, können Sie den folgenden Befehl verwenden:
kubectl create ns foo
kubectl annotate ns foo nine.ch/deletion-protection=true
Um zu testen, die Annotation eine versehentliche Löschung verhindern würde,
können Sie die --dry-run=server
Option des kubectl
Befehls nutzen:
kubectl delete --dry-run=server ns foo
Error from server (Forbidden): admission webhook
"deletion-protection.nine-controllers.nine.ch" denied the request: preventing
deletion because of nine.ch/deletion-protection annotation
Um den Löschschutz zu deaktivieren können Sie entweder die Annotation entfernen
oder den Wert der Annotation auf "false"
setzen:
kubectl annotate --overwrite ns foo nine.ch/deletion-protection=false
Ein zusätzlicher Löschtest sollte die Deaktivierung des Features nun bestätigen:
kubectl delete --dry-run=server ns foo
namespace "foo" deleted (server dry run)
Bitte beachten Sie dass nur die Annotation Werte "true"
und "false"
zulässig
sind. Andere Werte werden zu Fehlern beim Löschen der Resource führen.
Um einen vollständigen Löschschutz einer "PersistentVolumeClaim" (PVC) Resource zu erreichen sollten Sie die Annotation auf dem PVC Objekt selbst und zusätzlich auf der Namespace Resource, welche den PVC beinhaltet, setzen.