Удаление всех экземпляров типа ресурса в нескольких/всех пространствах имен Kubernetes

Удаление всех экземпляров типа ресурса в нескольких/всех пространствах имен Kubernetes

Я пытаюсь удалить и переустановить cert-manager на наших кластерах Kubernetes. Ихудалить документыупомянуть:

Прежде чем продолжить, убедитесь, что все ресурсы cert-manager, созданные пользователями, удалены. Вы можете проверить наличие существующих ресурсов с помощью следующей команды:

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

Команда выводит сотни ресурсов, распределенных по двум десяткам пространств имен.

Как можно эффективно удалить их все, не удаляя ничего другого в пространствах имен?

Команда 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 также kind: Issuerудаляются все экземпляры этого CRD (например, все ресурсы).

Связанный контент