Добавление внешнего (белого) IP адреса в сертификат API сервера Kubernetes

Эта инструкция поможет добавить альтернативное имя субъекта (SAN) в TLS-сертификат сервера API Kubernetes, развернутого через Kubespray. Процесс полезен, например, при добавлении балансировщика нагрузки или нового имени хоста для доступа к серверу API. Инструкция подходит для кластеров с одной или несколькими мастер-нодами.

Шаги по обновлению сертификата сервера API

Зайдите на мастер ноду по ssh. 

Нам понадобится файл конфигурации kubeadm. Чтобы извлечь конфигурацию из кластера во внешний файл, выполните следующую команду:

kubectl -n kube-system get configmap kubeadm-config \
-o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml

Это создает файл с именем kubeadm.yaml, содержимое которого может выглядеть примерно так (файл из вашего кластера может иметь другие значения):

В этом конкретном примере дополнительные SAN не указаны. Чтобы добавить хотя бы один SAN, добавьте их в certSANs в разделе apiServer:

Этот пример добавляет SAN для IP-адреса 185.205.3.15 - белый IP edge gateway vOrg, в которой развернут кластер. Это дополняет стандартный список имен SAN, включающий localhost и некоторые служебные имена для Kubernetes, которые создаются по умолчанию.

 

Теперь следует переместить существующие сертификаты, иначе кубернетес не даст выпустить новые.

Выполняем команду:

mv /etc/kubernetes/pki/apiserver.{crt,key} ~

Она переместит сертификаты в домашнюю директорию пользователя.

Генерируем новые сертификаты и ключ для API-сервера, с помощью следующей команды:

kubeadm init phase certs apiserver --config kubeadm.yaml

 

Перезапустим API сервер, для применения изменений:

Выполните команду 

crictl pods | grep kube-apiserver | cut -d' ' -f1

чтобы получить идентификатор пода API.

 

Останавливаем под:

crictl stopp <id_пода_API>

Удаляем под:

crictl rmp <id_пода_API>

Kubelet автоматически перезапустит контейнер, который получит новый сертификат. Как только API-сервер перезапустится, вы сразу же сможете подключиться к нему, используя один из добавленных IP-адресов или имён хостов.

Теперь следует обновить ConfigMap, kubeadm хранящийся в кластере. Это важно, чтобы при последующем обновлении кластера присутствовал в сертификате. Просто выполните 


kubeadm init phase upload-config kubeadm --config kubeadm.yaml

Осталось только добавить порт 6443 в правила NAT и создать разрешающее правило на фаерволе. О том как это сделать описано в этой статье.

  • k8s, kubernetes, kubespray
  • 0 Korisnici koji smatraju članak korisnim
Je li Vam ovaj odgovor pomogao?

Vezani članci

Управление нодой NFS и создание PV

Основные преимущества использования NFS в Kubernetes   Использовать существующее хранилище, вы...

Управление кластером kubernetes

Обзор На этой странице представлены основные команды, которые позволяют пользователям создавать,...

Введение в CSE

Описание Container Service Extension (CSE) - это расширение VMware Cloud Director (VCD), которое...

Создание кластера Kubernetes через vCloud Director

Для создания кластера нужно войти в личный tenant с пользователем который обладает правами...

Развёртывание кластера kubernetes c помощью CLI

Для развёртывания и управления kubernetes в vCloud можно воспользоваться инструментом container...