Добавление внешнего (белого) 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-адресов или имён хостов.

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

  • k8s, kubernetes, kubespray
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

NFS node management and PV creation

  Advantages of using NFS in Kubernetes   Using existing storage. You can mount an existing...

Managing a Kubernetes cluster

Overview Learn the basic commands that allow users to create, manage, and delete Kubernetes...

Adding a network load balancer

Данная инструкция описывает как настроить баллансировщик для Kubernetes Cluster созданного c...

Introduction to CSE

The Container Service Extension (CSE) is an extension to VMware Cloud Director (VCD) that helps...

How to create a Kubernetes cluster via vCloud Director

To create the cluster, you need to log in to a personal tenant with an administrator user at...