Eliminar todas las instancias de tipo de recurso en varios o todos los espacios de nombres de Kubernetes

Eliminar todas las instancias de tipo de recurso en varios o todos los espacios de nombres de Kubernetes

Estoy intentando desinstalar y reinstalar cert-manager en nuestros clústeres de Kubernetes. Sudesinstalar documentosmencionar:

Antes de continuar, asegúrese de que se hayan eliminado todos los recursos del administrador de certificados creados por los usuarios. Puede verificar los recursos existentes con el siguiente comando:

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

El comando genera cientos de recursos, repartidos en dos docenas de espacios de nombres.

¿Cómo puedo eliminarlos todos de manera eficiente, sin eliminar nada más en los espacios de nombres?

El kubectl deletecomando requiere especificar un espacio de nombres al eliminar todos los de un determinado tipo, como este: kubectl delete certificates -n example-ns, así que eso no sirve aquí.

Eliminar cada uno por nombre en un bucle mientras se especifica -Atampoco funciona, ya que necesito especificar el espacio de nombres:

$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces

¿Cuál es la magia cli correcta aquí?

Respuesta1

Debe eliminar todo crd(Definición de recursos personalizados), primero enumere sus CRD con

kubectl get crd

y luego elimine el CRD, con, por ejemplo (usando Issuercomo ejemplo)

kubectl delete crd issuer.<something>.<something>

Cuando se elimina el CRD, también kind: Issuerse eliminan todas las instancias de ese CRD (por ejemplo, todos los recursos de).

información relacionada