Laboratorio 5: Generazione dei file di configurazione di Kubernetes per l'autenticazione¶
Info
Si tratta di un fork dell'originale "Kubernetes the hard way" scritto originariamente da Kelsey Hightower (GitHub: kelseyhightower). A differenza dell'originale, che si basa su distribuzioni simili a Debian per l'architettura ARM64, questo fork si rivolge a distribuzioni Enterprise Linux come Rocky Linux, che gira su architettura x86_64.
In questo laboratorio, si genereranno i file di configurazione client Kubernetes, che vengono solitamente chiamati kubeconfig. Questi file configurano i client Kubernetes per connettersi e autenticarsi con i server API Kubernetes.
Configurazioni di autenticazione del client¶
In questa sezione si generano i file kubeconfig per kubelet
e per l'utente admin
.
Il file di configurazione kubelet Kubernetes¶
Quando si generano i file kubeconfig per i Kubelet, è necessario far corrispondere il certificato del client al nome del nodo del Kubelet. Questo assicura che i Kubelets siano autorizzati correttamente dal [Node Authorizer] di Kubernetes (https://kubernetes.io/docs/reference/access-authn-authz/node/).
I comandi seguenti devono essere eseguiti nella stessa directory utilizzata per generare i certificati SSL durante il laboratorio Generazione di certificati TLS.
Generare un file kubeconfig per i nodi di lavoro node-0 e node-1:
for host in node-0 node-1; do
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=${host}.kubeconfig
kubectl config set-credentials system:node:${host} \
--client-certificate=${host}.crt \
--client-key=${host}.key \
--embed-certs=true \
--kubeconfig=${host}.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:node:${host} \
--kubeconfig=${host}.kubeconfig
kubectl config use-context default \
--kubeconfig=${host}.kubeconfig
done
Risultati:
node-0.kubeconfig
node-1.kubeconfig
Il file di configurazione di Kubernetes kube-proxy¶
Generare un file kubeconfig per il servizio kube-proxy
:
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=kube-proxy.kubeconfig
kubectl config set-credentials system:kube-proxy \
--client-certificate=kube-proxy.crt \
--client-key=kube-proxy.key \
--embed-certs=true \
--kubeconfig=kube-proxy.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-proxy \
--kubeconfig=kube-proxy.kubeconfig
kubectl config use-context default \
--kubeconfig=kube-proxy.kubeconfig
Risultati:
kube-proxy.kubeconfig
Il file di configurazione di Kubernetes di kube-controller-manager¶
Generare un file kubeconfig per il servizio kube-controller-manager
:
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config set-credentials system:kube-controller-manager \
--client-certificate=kube-controller-manager.crt \
--client-key=kube-controller-manager.key \
--embed-certs=true \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-controller-manager \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config use-context default \
--kubeconfig=kube-controller-manager.kubeconfig
Risultati:
kube-controller-manager.kubeconfig
Il file di configurazione di kube-scheduler Kubernetes¶
Generare un file kubeconfig per il servizio kube-scheduler
:
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-credentials system:kube-scheduler \
--client-certificate=kube-scheduler.crt \
--client-key=kube-scheduler.key \
--embed-certs=true \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-scheduler \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config use-context default \
--kubeconfig=kube-scheduler.kubeconfig
Risultati:
kube-scheduler.kubeconfig
Il file di configurazione Kubernetes dell'amministratore¶
Generare un file kubeconfig per l'utente admin
:
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://127.0.0.1:6443 \
--kubeconfig=admin.kubeconfig
kubectl config set-credentials admin \
--client-certificate=admin.crt \
--client-key=admin.key \
--embed-certs=true \
--kubeconfig=admin.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=admin \
--kubeconfig=admin.kubeconfig
kubectl config use-context default \
--kubeconfig=admin.kubeconfig
Risultati:
admin.kubeconfig
Distribuire i file di configurazione di Kubernetes¶
Copiare i file kubelet
e kube-proxy
nelle istanze node-0
e node-1
:
for host in node-0 node-1; do
ssh root@$host "mkdir /var/lib/{kube-proxy,kubelet}"
scp kube-proxy.kubeconfig \
root@$host:/var/lib/kube-proxy/kubeconfig \
scp ${host}.kubeconfig \
root@$host:/var/lib/kubelet/kubeconfig
done
Copiare i file kubeconfig kube-controller-manager
e kube-scheduler
nell'istanza del controller:
scp admin.kubeconfig \
kube-controller-manager.kubeconfig \
kube-scheduler.kubeconfig \
root@server:~/
Successivo: Generazione della configurazione e della chiave di crittografia dei dati
Author: Wale Soyinka
Contributors: Steven Spencer, Ganna Zhyrnova