Saltar a contenido

kubectl, k9s, Lens y Helm

Cómo usar tu kubeconfig de kubelatch con las herramientas habituales, y qué no funciona a través del proxy.

Antes de empezar

Necesitas una credencial emitida (ver Obtener una credencial) y su kubeconfig guardado en un fichero propio, nunca en ~/.kube/config.

kubectl

Apunta KUBECONFIG a tu fichero, o usa --kubeconfig en cada comando:

export KUBECONFIG=~/.kube/kubelatch.yaml
kubectl get pods -n <namespace>

Si la credencial incluye varios clusters, cada uno es un context distinto (el nombre es el id del cluster en kubelatch):

kubectl config get-contexts
kubectl config use-context <id-del-cluster>

Los comandos que dependen de una conexión larga funcionan igual que contra un cluster directo:

kubectl exec -it <pod> -- sh              # exec interactivo
kubectl logs -f <pod>                     # streaming de logs
kubectl port-forward pod/<pod> 8080:80    # port-forward
kubectl cp <pod>:/ruta/fichero ./fichero  # cp
kubectl get pods -w                       # watch

Comprobar tu identidad

kubectl auth whoami

Muestra tu usuario tal y como el cluster lo ve a través del proxy: user:<tu-login> si eres una persona (entres con GitHub o con contraseña; el prefijo no cambia) o bot:<nombre> si es la credencial de un bot. La lista de grupos incluye uno por cada permiso activo, con la forma kubelatch:ns:<namespace>:<nivel> o kubelatch:cluster:<nivel> para un permiso sobre todo el cluster.

k9s y Lens

Ambos leen KUBECONFIG o un fichero de kubeconfig que les indiques igual que kubectl; no necesitan configuración especial. Abre k9s con k9s --kubeconfig ~/.kube/kubelatch.yaml o añade el fichero a los clusters de Lens. Todo lo que hagan (listar, editar, exec, logs, port-forward) pasa por el mismo proxy y queda igual de auditado.

Helm

Helm usa el mismo kubeconfig sin nada especial:

helm --kubeconfig ~/.kube/kubelatch.yaml list -n <namespace>
helm --kubeconfig ~/.kube/kubelatch.yaml install <release> <chart> -n <namespace>

Un helm install/upgrade necesita en la práctica el nivel developer (o superior) sobre el namespace, porque crea y modifica objetos.

Qué no funciona

  • Impersonación con --as o --as-group: kubelatch responde 400 a cualquier petición con cabeceras Impersonate-*, con el mensaje «kubelatch no admite cabeceras Impersonate-* (kubectl --as no está soportado)». Tú ya actúas como tu propio usuario; no puedes actuar como otro.
  • Cualquier cosa fuera de tus permisos: un verbo, recurso o namespace que tu nivel no cubre responde 403 Forbidden, igual que un RBAC normal de Kubernetes.
  • Cluster o namespace sin permiso activo: si no tienes ningún permiso vigente en ese cluster, la respuesta es 403 explicando que no tienes permisos activos allí.

Streams largos y revocación

Un exec, logs -f, port-forward o watch abierto se corta si revocan tu credencial o tu permiso: ver Caducidad y revocación.

Si algo no funciona como esperas, sigue en Si algo falla.