@@ -875,6 +875,41 @@ not vulnerable to ordering changes in the list.
875
875
876
876
Once the last finalizer is removed, the resource is actually removed from etcd.
877
877
878
+ ### Force deletion
879
+
880
+ {{< feature-state feature_gate_name="AllowUnsafeMalformedObjectDeletion" >}}
881
+
882
+ {{< caution >}}
883
+ This may break the workload associated with the resource being force deleted, if it
884
+ relies on the normal deletion flow, so cluster breaking consequences may apply.
885
+ {{< /caution >}}
886
+
887
+ By enabling the delete option ` ignoreStoreReadErrorWithClusterBreakingPotential ` , the
888
+ user can perform an unsafe force ** delete** operation of an undecryptable/corrupt
889
+ resource. This option is behind an ALPHA feature gate, and it is disabled by
890
+ default. In order to use this option, the cluster operator must enable the feature by
891
+ setting the command line option ` --feature-gates=AllowUnsafeMalformedObjectDeletion=true ` .
892
+
893
+ {{< note >}}
894
+ The user performing the force ** delete** operation must have the privileges to do both
895
+ the ** delete** and ** unsafe-delete-ignore-read-errors** verbs on the given resource.
896
+ {{< /note >}}
897
+
898
+ A resource is considered corrupt if it can not be successfully retrieved from the
899
+ storage due to a) transformation error (for example: decryption failure), or b) the object
900
+ failed to decode. The API server first attempts a normal deletion, and if it fails with
901
+ a _ corrupt resource_ error then it triggers the force delete. A force ** delete** operation
902
+ is unsafe because it ignores finalizer constraints, and skips precondition checks.
903
+
904
+ The default value for this option is ` false ` , this maintains backward compatibility.
905
+ For a ** delete** request with ` ignoreStoreReadErrorWithClusterBreakingPotential `
906
+ set to ` true ` , the fields ` dryRun ` , ` gracePeriodSeconds ` , ` orphanDependents ` ,
907
+ ` preconditions ` , and ` propagationPolicy ` must be left unset.
908
+
909
+ {{< note >}}
910
+ If the user issues a ** delete** request with ` ignoreStoreReadErrorWithClusterBreakingPotential `
911
+ set to ` true ` on an otherwise readable resource, the API server aborts the request with an error.
912
+ {{< /note >}}
878
913
879
914
## Single resource API
880
915
0 commit comments