Перейти до змісту

Лабораторна робота 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