Лабораторна робота 5: Створення файлів конфігурації Kubernetes для автентифікації¶
Info
Це гілка розгалуження від оригінальної "Kubernetes the hard way", Келсі Хайтауера (GitHub: kelseyhightower). На відміну від оригіналу, який базується на дистрибутивах, подібних до Debian, для архітектури ARM64, ця гілка націлена на дистрибутиви Enterprise Linux, такі як Rocky Linux, який працює на архітектурі x86_64.
У цій лабораторній роботі ви створите файли конфігурації клієнта Kubernetes, які зазвичай називаються kubeconfigs. Ці файли налаштовують клієнти Kubernetes для підключення та автентифікації за допомогою серверів API Kubernetes.
Конфігурації автентифікації клієнта¶
У цьому розділі ви створите файли kubeconfig для користувачів kubelet
і admin
.
Файл конфігурації kubelet Kubernetes¶
Під час генерації файлів kubeconfig для Kubelets ви повинні зіставити сертифікат клієнта з назвою вузла Kubelet. Це забезпечить належну авторизацію Kubelets Kubernetes Node Authorizer.
Наступні команди потрібно виконати в тому самому каталозі, який використовується для створення сертифікатів SSL під час лабораторної роботи Створення сертифікатів TLS.
Згенеруйте файл kubeconfig для робочих вузлів node-0 і 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
Результати:
node-0.kubeconfig
node-1.kubeconfig
Файл конфігурації kube-proxy Kubernetes¶
Згенеруйте файл kubeconfig для служби 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
Результати:
kube-proxy.kubeconfig
Файл конфігурації kube-controller-manager Kubernetes¶
Згенеруйте файл kubeconfig для служби 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
Результати:
kube-controller-manager.kubeconfig
Файл конфігурації kube-scheduler Kubernetes¶
Згенеруйте файл kubeconfig для служби 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
Результати:
kube-scheduler.kubeconfig
Файл конфігурації Kubernetes адміністратора¶
Створіть файл kubeconfig для користувача 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
Результати:
admin.kubeconfig
Поширюйте файли конфігурації Kubernetes¶
Скопіюйте файли kubeconfig kubelet
і kube-proxy
до екземплярів node-0
і 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
Скопіюйте файли kubeconfig kube-controller-manager
і kube-scheduler
до примірника контролера:
scp admin.kubeconfig \
kube-controller-manager.kubeconfig \
kube-scheduler.kubeconfig \
root@server:~/
Далі: Створення конфігурації та ключа шифрування даних
Author: Wale Soyinka
Contributors: Steven Spencer, Ganna Zhyrnova