@@ -847,6 +847,41 @@ not vulnerable to ordering changes in the list.
847847
848848Once the last finalizer is removed, the resource is actually removed from etcd.
849849
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, and 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+ In addition to ` delete ` rights, the user performing the force ** delete**
867+ operation must have ` unsafe-delete-ignore-read-errors ` rights 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 >}}
850885
851886## Single resource API
852887
0 commit comments