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
--aso--as-group: kubelatch responde400a cualquier petición con cabecerasImpersonate-*, 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
403explicando 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.