Excluindo todas as instâncias do tipo de recurso em vários/todos os namespaces do Kubernetes

Excluindo todas as instâncias do tipo de recurso em vários/todos os namespaces do Kubernetes

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 deletecomando 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 -Atambé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 Issuercomo 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.

informação relacionada