- Kubernetes Doc - Certificates and Certificate Signing Requests
- 📺 Fabricio Veronez - Como criar usuários no cluster Kubernetes
- 📺 vNugget - How To Create A Normal User In Kubernetes
- 📺 InfraHQ - Creating Users in Kubernetes
kubectl create namespace ecomerce;
kubectl get namespace;
openssl genrsa -out saulo.key 2048;
cat saulo.key;
openssl req -new -key saulo.key -subj "/CN=saulo" -out saulo.csr;
cat saulo.csr;
cat saulo.csr | base64 | tr -d "\n";
code k8s-csr.yaml;
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: saulo
spec:
request: [CERTIFICATE REQUEST em base64]
signerName: kubernetes.io/kube-apiserver-client
usages:
- client auth
kubectl apply -f k8s-csr.yaml;
Vai dar msg de certificado criado
Verificar se foi criado. Vai estar como status(CONDITION) de Peddind
kubectl get csr;
kubectl certificate approve saulo;
Vai dar msg de certificado aprovado
Verificar se status(CONDITION). Vai estar de Approved,Ussued
kubectl get csr;
kubectl get csr saulo -o yaml;
echo "[CRT em base64]" | base64 --decode > saulo.crt;
Ou simplesmente rodar... (será que funciona msm? rsrs)
kubectl get csr saulo -o jsonpath='{.status.certificate}'| base64 --decode > saulo.crt;
Copiar o config local para o diretorio atual para usa-lo como base
cp ~/.kube/config ./kubeconfig-saulo.yaml;
code kubeconfig-saulo.yaml;
...
contexts:
- context:
cluster: docker-desktop
user: docker-desktop
name: docker-desktop
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
user:
client-certificate: ./saulo.crt
client-key: ./saulo.key
Tentar listar os nodes usando o kubeconfig criado.
kubectl get nodes --kubeconfig kubeconfig-saulo.yaml;
Criou o usuario mas ele ainda não tem nenhuma permisão
Add permisões para o usuario usando o 👉RBAC
code rbac.yaml;
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: ecomerce-user
namespace: ecomerce
rules:
- apiGroups: [""]
resources: ["pods", "services"]
verbs: ["get", "list", "watch", "create", "update", "delete", "patch"]
- apiGroups: ["apps"]
resources: ["replicasets", "deployments"]
verbs: ["get", "list", "watch", "create", "update", "delete", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ecomerce-user-bind
namespace: ecomerce
subjects:
- kind: User
name: saulo
roleRef:
kind: Role
name: ecomerce-user
apiGroup: rbac.authorization.k8s.io
Aplica o rbac
kubectl apply -f rbac.yaml;
Testar como o comando
kubectl get pods -n ecomerce --kubeconfig kubeconfig-saulo.yaml;
No video o Fabrício faz um teste realizadno um deploy usando as config criada expecificando o namespace (-n)
kubectl apply -f deployment.yaml -n ecomerce --kubeconfig kubeconfig-saulo.yaml;