-
Notifications
You must be signed in to change notification settings - Fork 1
Emissione certificati per Kubernetes
Per richiedere l'emissione di un certificato per accesso al cluster Kubernetes è necessario disporre di una chiave privata RSA. Se non disponibile è possibile crearne una con il comando:
openssl genrsa -out <utente>.key 4096
Con la chiave disponibile è possibile creare una Certificate Signing Request mediante il comando:
openssl req -new -key <utente>.key -nodes -out <utente>.csr -subj '/CN=<utente>/O=<organizzazione>'
Il parametro rappresenta il nome utente che sarà usato nell'ambito del cluster.
È necessario aggiungere al cluster la CSR con il seguente comando:
cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
name: <utente>
spec:
request: $(cat <utente>.csr | base64 | tr -d '\n')
usages:
- digital signature
- key encipherment
- server auth
- client auth
EOF
Successivamente la richiesta va approvata con il comando:
kubectl certificate approve <utente>
Il certificato firmato può quindi essere salvato con:
kubectl get csr <utente> -o jsonpath={.status.certificate} | base64 --decode > <utente>.crt
Per ottenere il certificato della CA si può usare il comando:
kubectl config view --minify --raw --output 'jsonpath={..cluster.certificate-authority-data}' | base64 -d > wai-ca.crt
Il certificato dell'utente e quello dalla CA così ottenuti, possono essere inviati al richiedente.
Ricevuto il certificato dell'utente e il certificato della CA del cluster Kubernetes è possibile configurare il contesto per il client kubectl
con i seguenti comandi:
kubectl config set-credentials <utente> --client-certificate=<utente>.crt --client-key=<utente>.key --embed-certs
kubectl config set-cluster wai --server=https://<ip api server>:<porta api server> --certificate-authority=wai-ca.crt --embed-certs
kubectl config set-context <utente>-wai --cluster=wai --user=<utente>
kubectl config use-context <utente>-wai