Estou tentando desinstalar e reinstalar o cert-manager em nossos clusters Kubernetes. Delesdesinstalar documentosmenção:
Antes de continuar, certifique-se de que todos os recursos do cert-manager criados pelos usuários foram excluídos. Você pode verificar quaisquer recursos existentes com o seguinte comando:
$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces
O comando gera centenas de recursos, espalhados por duas dúzias de namespaces.
Como posso excluir todos eles com eficiência, sem excluir mais nada nos namespaces?
O kubectl delete
comando requer a especificação de um namespace ao excluir todos de um determinado tipo, como este: kubectl delete certificates -n example-ns
, então isso não é bom aqui.
Excluir cada um por nome em um loop durante a especificação -A
também não funciona, pois preciso especificar o namespace:
$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces
Qual é a magia cli correta aqui?
Responder1
Você deve excluir tudo crd
(definição de recurso personalizado), primeiro liste seus CRDs com
kubectl get crd
e, em seguida, exclua o CRD, por exemplo (usando Issuer
como exemplo)
kubectl delete crd issuer.<something>.<something>
Quando o CRD é excluído, todas as instâncias desse CRD (por exemplo, todos os recursos de kind: Issuer
) também são excluídas.