Löschen aller Instanzen des Ressourcentyps in mehreren/allen Kubernetes-Namespaces

Löschen aller Instanzen des Ressourcentyps in mehreren/allen Kubernetes-Namespaces

Ich versuche, cert-manager auf unseren Kubernetes-Clustern zu deinstallieren und neu zu installieren. IhreDokumente deinstallierenerwähnen:

Bevor Sie fortfahren, stellen Sie sicher, dass alle von Benutzern erstellten Cert-Manager-Ressourcen gelöscht wurden. Mit dem folgenden Befehl können Sie nach vorhandenen Ressourcen suchen:

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

Der Befehl gibt Hunderte von Ressourcen aus, die auf zwei Dutzend Namespaces verteilt sind.

Wie kann ich sie alle effizient löschen, ohne etwas anderes in den Namespaces zu löschen?

Der kubectl deleteBefehl erfordert die Angabe eines Namespaces beim Löschen aller Elemente eines bestimmten Typs, etwa folgendermaßen: kubectl delete certificates -n example-ns, das ist hier also nicht sinnvoll.

Auch das Löschen jedes einzelnen Namens in einer Schleife unter Angabe -Afunktioniert nicht, da ich den Namespace angeben muss:

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

Was ist hier die richtige CLI-Magie?

Antwort1

Sie sollten die gesamte crd(Custom Resource Definition) löschen und zuerst Ihre CRDs auflisten mit

kubectl get crd

und dann die CRD löschen, mit zB ( Issuerals Beispiel verwenden)

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

Wenn die CRD gelöscht wird, werden auch alle Instanzen dieser CRD (z. B. alle Ressourcen von kind: Issuer) gelöscht.

verwandte Informationen