複数またはすべての Kubernetes 名前空間にわたるリソース タイプのすべてのインスタンスを削除する

複数またはすべての Kubernetes 名前空間にわたるリソース タイプのすべてのインスタンスを削除する

Kubernetesクラスタでcert-managerをアンインストールして再インストールしようとしています。アンインストールドキュメント言及:

続行する前に、ユーザーによって作成されたすべての cert-manager リソースが削除されていることを確認してください。次のコマンドを使用して、既存のリソースを確認できます。

$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces

このコマンドは、24 個の名前空間にまたがる数百のリソースを出力します。

名前空間内の他のものを削除せずに、すべてを効率的に削除するにはどうすればよいですか?

このkubectl deleteコマンドでは、特定のタイプのすべてを削除するときに次のように名前空間を指定する必要があるため、kubectl delete certificates -n example-nsここでは適切ではありません。

-A名前空間を指定する必要があるため、ループ内で名前を指定してそれぞれを削除することも機能しません。

$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces

ここでの正しい CLI マジックは何ですか?

答え1

(カスタムリソース定義)全体を削除する必要がありますcrd。まずCRDをリストします。

kubectl get crd

そして、例えば(Issuer例として) CRDを削除します。

kubectl delete crd issuer.<something>.<something>

CRD が削除されると、その CRD のすべてのインスタンス (たとえば、 のすべてのリソースkind: Issuer) も削除されます。

関連情報