Я пытаюсь удалить и переустановить 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 (например, все ресурсы).