Zum Hauptinhalt springen

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.