Saltar al contenido principal

👤 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.

info

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.

aviso

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íntomaCausaSolución
El CSR queda PendingFalta aprobarEjecute kubectl certificate approve maria
maria.crt vacíoEl CSR no fue firmadoVerifique con kubectl get csr maria si el estado es Approved,Issued. Si no lo es, hable con soporte
Forbidden después del paso 7Nombre del usuario distinto del CN--user debe ser igual al CN del certificado
certificate has expiredLa validez terminóGenere un nuevo certificado (pasos 1 a 5)
already exists al crear el CSRNombre ya usadoElimine 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!