👤 Users
Kubernetes no tiene un registro de usuarios. No existe un comando como
"crear usuario". En su lugar, el clúster reconoce a una persona por el certificado
que presenta: el nombre del certificado (CN) se convierte en el nombre del usuario, y la
organización (O) se convierte en el grupo.
En esta guía generará el acceso de un usuario llamado maria, que podrá
únicamente leer pods.
Este procedimiento usa kubectl y openssl. Use Linux, macOS o WSL (en Windows). El Panel Nuvion proporciona el kubeconfig de administrador (Descargar kubeconfig), pero no crea usuarios.
🚀 Antes de comenzar
- Tener el acceso de administrador al clúster configurado (vea Acceso al Clúster).
- Tener el Role
leitor-pods(vea Roles). Si no lo tiene:
kubectl create role leitor-pods --verb=get,list,watch --resource=pods
🚀 1. Crear la clave y la solicitud de certificado
openssl genrsa -out maria.key 2048
openssl req -new -key maria.key -out maria.csr -subj "/CN=maria/O=desenvolvedores"
Tendrá dos archivos: maria.key (clave privada, solo de María) y
maria.csr (la solicitud de certificado).
🚀 2. Enviar la solicitud al clúster
cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: maria
spec:
request: $(base64 < maria.csr | tr -d '\n')
signerName: kubernetes.io/kube-apiserver-client
expirationSeconds: 86400
usages:
- client auth
EOF
El certificado tendrá validez de 1 día (86400 segundos). Ajuste según su necesidad.
🚀 3. Aprobar la solicitud
kubectl get csr
kubectl certificate approve maria
El estado cambia de Pending a Approved,Issued.
🚀 4. Descargar el certificado
kubectl get csr maria -o jsonpath='{.status.certificate}' | base64 -d > maria.crt
🚀 5. Armar el kubeconfig de María
SERVER=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.server}')
kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > ca.crt
kubectl config set-cluster meu-cluster --server=$SERVER --certificate-authority=ca.crt --embed-certs=true --kubeconfig=maria.kubeconfig
kubectl config set-credentials maria --client-certificate=maria.crt --client-key=maria.key --embed-certs=true --kubeconfig=maria.kubeconfig
kubectl config set-context maria@meu-cluster --cluster=meu-cluster --user=maria --kubeconfig=maria.kubeconfig
kubectl config use-context maria@meu-cluster --kubeconfig=maria.kubeconfig
El archivo maria.kubeconfig es el que usted entrega a María. Ella lo usa como en la página Acceso al Clúster.
maria.kubeconfig contiene la clave privada. Envíelo por un canal seguro y no lo publique.
🚀 6. Probar: sin permiso
kubectl --kubeconfig=maria.kubeconfig get pods
Respuesta esperada: Forbidden. María ya se autentica (el clúster sabe quién es), pero
aún no tiene permiso para nada.
🚀 7. Dar el permiso
kubectl create rolebinding maria-leitora --role=leitor-pods --user=maria
Pruebe nuevamente:
kubectl --kubeconfig=maria.kubeconfig get pods
kubectl --kubeconfig=maria.kubeconfig delete pod qualquer-nome
El primer comando lista los pods. El segundo es denegado (Forbidden), pues el Role solo permite lectura.
Para dar el mismo permiso a todo un grupo, use --group=desenvolvedores en lugar de --user=maria.
✅ Cómo saber si funcionó
El paso 6 muestra Forbidden, y después del paso 7 María logra listar los pods.
🔒 Buenas prácticas
- Use certificados con validez corta y genere uno nuevo cuando expire.
- Kubernetes no revoca certificados. Para quitar el acceso a alguien, elimine el RoleBinding, y el certificado deja de tener permisos.
- Nunca entregue el kubeconfig de administrador a quien solo necesita lectura.
❗ Problemas comunes
| Síntoma | Causa | Solución |
|---|---|---|
El CSR queda Pending | Falta aprobar | Ejecute kubectl certificate approve maria |
maria.crt vacío | El CSR no fue firmado | Verifique con kubectl get csr maria si el estado es Approved,Issued. Si no lo es, hable con soporte |
Forbidden después del paso 7 | Nombre del usuario distinto del CN | --user debe ser igual al CN del certificado |
certificate has expired | La validez terminó | Genere un nuevo certificado (pasos 1 a 5) |
already exists al crear el CSR | Nombre ya usado | Elimine con kubectl delete csr maria y repita |
🧹 Limpieza
kubectl delete rolebinding maria-leitora
kubectl delete csr maria
rm maria.key maria.csr maria.crt ca.crt maria.kubeconfig
🧠 ¿Dudas?
¡Hable con nuestro equipo de soporte técnico de SaveinCloud!