여러/모든 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

그런 다음 예를 들어 CRD를 삭제합니다( Issuer예를 들어 사용).

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

CRD가 삭제되면 해당 CRD의 모든 인스턴스(예: 의 모든 리소스 kind: Issuer)도 삭제됩니다.

관련 정보