@@ -847,6 +847,41 @@ not vulnerable to ordering changes in the list.
847
847
848
848
Once the last finalizer is removed, the resource is actually removed from etcd.
849
849
850
+ ### Force deletion
851
+
852
+ {{< feature-state feature_gate_name="AllowUnsafeMalformedObjectDeletion" >}}
853
+
854
+ {{< caution >}}
855
+ This may break the workload associated with the resource being force deleted, if it
856
+ relies on the normal deletion flow, so cluster breaking consequences may apply.
857
+ {{< /caution >}}
858
+
859
+ By enabling the delete option ` ignoreStoreReadErrorWithClusterBreakingPotential ` , the
860
+ user can perform an unsafe force ** delete** operation of an undecryptable/corrupt
861
+ resource. This option is behind an ALPHA feature gate, and it is disabled by
862
+ default. In order to use this option, the cluster operator must enable the feature by
863
+ setting the command line option ` --feature-gates=AllowUnsafeMalformedObjectDeletion=true ` .
864
+
865
+ {{< note >}}
866
+ The user performing the force ** delete** operation must have the privileges to do both
867
+ the ** delete** and ** unsafe-delete-ignore-read-errors** verbs on the given resource.
868
+ {{< /note >}}
869
+
870
+ A resource is considered corrupt if it can not be successfully retrieved from the
871
+ storage due to a) transformation error (for example: decryption failure), or b) the object
872
+ failed to decode. The API server first attempts a normal deletion, and if it fails with
873
+ a _ corrupt resource_ error then it triggers the force delete. A force ** delete** operation
874
+ is unsafe because it ignores finalizer constraints, and skips precondition checks.
875
+
876
+ The default value for this option is ` false ` , this maintains backward compatibility.
877
+ For a ** delete** request with ` ignoreStoreReadErrorWithClusterBreakingPotential `
878
+ set to ` true ` , the fields ` dryRun ` , ` gracePeriodSeconds ` , ` orphanDependents ` ,
879
+ ` preconditions ` , and ` propagationPolicy ` must be left unset.
880
+
881
+ {{< note >}}
882
+ If the user issues a ** delete** request with ` ignoreStoreReadErrorWithClusterBreakingPotential `
883
+ set to ` true ` on an otherwise readable resource, the API server aborts the request with an error.
884
+ {{< /note >}}
850
885
851
886
## Single resource API
852
887
0 commit comments