Pular para o conteúdo principal

👤 Users

O Kubernetes não tem um cadastro de usuários. Não existe um comando como "criar usuário". Em vez disso, o cluster reconhece uma pessoa pelo certificado que ela apresenta: o nome do certificado (CN) vira o nome do usuário, e a organização (O) vira o grupo.

Neste guia você vai gerar o acesso de um usuário chamado maria, que poderá somente ler pods.

informação

Este procedimento usa o kubectl e o openssl. Use Linux, macOS ou WSL (no Windows). O Painel Nuvion fornece o kubeconfig de administrador (Baixar kubeconfig), mas não cria usuários.


🚀 Antes de começar​

  • Ter o acesso de administrador ao cluster configurado (veja Acesso ao Cluster).
  • Ter a Role leitor-pods (veja Roles). Se não tiver:
kubectl create role leitor-pods --verb=get,list,watch --resource=pods

🚀 1. Criar a chave e o pedido de certificado​

openssl genrsa -out maria.key 2048
openssl req -new -key maria.key -out maria.csr -subj "/CN=maria/O=desenvolvedores"

Você terá dois arquivos: maria.key (chave privada, só da Maria) e maria.csr (o pedido de certificado).

🚀 2. Enviar o pedido ao cluster​

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

O certificado terá validade de 1 dia (86400 segundos). Ajuste conforme a sua necessidade.

🚀 3. Aprovar o pedido​

kubectl get csr
kubectl certificate approve maria

O estado muda de Pending para Approved,Issued.

🚀 4. Baixar o certificado​

kubectl get csr maria -o jsonpath='{.status.certificate}' | base64 -d > maria.crt

🚀 5. Montar o kubeconfig da Maria​

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

O arquivo maria.kubeconfig é o que você entrega à Maria. Ela o usa como na página Acesso ao Cluster.

aviso

O maria.kubeconfig contém a chave privada. Envie por um canal seguro e não publique.

🚀 6. Testar: sem permissão​

kubectl --kubeconfig=maria.kubeconfig get pods

Resposta esperada: Forbidden. A Maria já se autentica (o cluster sabe quem ela é), mas ainda não tem permissão para nada.

🚀 7. Dar a permissão​

kubectl create rolebinding maria-leitora --role=leitor-pods --user=maria

Teste novamente:

kubectl --kubeconfig=maria.kubeconfig get pods
kubectl --kubeconfig=maria.kubeconfig delete pod qualquer-nome

O primeiro comando lista os pods. O segundo é negado (Forbidden), pois a Role só permite leitura.

Para dar a mesma permissão a todo um grupo, use --group=desenvolvedores no lugar de --user=maria.

✅ Como saber se deu certo​

O passo 6 mostra Forbidden, e depois do passo 7 a Maria consegue listar os pods.

🔒 Boas práticas​

  • Use certificados com validade curta e gere um novo quando expirar.
  • O Kubernetes não revoga certificados. Para tirar o acesso de alguém, exclua o RoleBinding, e o certificado deixa de ter permissões.
  • Nunca entregue o kubeconfig de administrador a quem só precisa de leitura.

❗ Problemas comuns​

SintomaCausaSolução
CSR fica PendingFalta aprovarRode kubectl certificate approve maria
maria.crt vazioCSR não foi assinadoConfira com kubectl get csr maria se o estado é Approved,Issued. Se não for, fale com o suporte
Forbidden depois do passo 7Nome do usuário diferente do CNO --user precisa ser igual ao CN do certificado
certificate has expiredValidade acabouGere um novo certificado (passos 1 a 5)
already exists ao criar o CSRNome já usadoExclua com kubectl delete csr maria e repita

🧹 Limpeza​

kubectl delete rolebinding maria-leitora
kubectl delete csr maria
rm maria.key maria.csr maria.crt ca.crt maria.kubeconfig

🧠 Dúvidas?​

Fale com nosso time de suporte técnico da SaveinCloud!