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 delete
Befehl 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 -A
funktioniert 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 ( Issuer
als 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.