Вы можете добавить новые альтернативные имена субъекта (SAN) к сертификату сервера API Kubernetes, выполнив следующие действия:
Сначала вам потребуется файл конфигурации kubeadm
. Это создаст файл с именем kubeadm.yaml
:
kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml
Теперь откройте файл в редакторе и найдите список certSANs
в разделе apiServer
. Если он не существует, вам нужно добавить его;если это так, вы просто добавите еще одну запись в этот список. Пример:
apiServer:
certSANs:
- "172.29.50.162"
- "k8s.domain.com"
- "other-k8s.domain.net"
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
Теперь переместите старые сертификаты в другую папку, иначе kubeadm
не создаст новые заново:
mv /etc/kubernetes/pki/apiserver.{crt,key} ~
Используйте kubeadm
длясоздать новые сертификаты apiserver:
kubeadm init phase certs apiserver --config kubeadm.yaml
Теперь перезапустите ваш kubeapiserver контейнер:
- Выполните
docker ps | grep kube-apiserver | grep -v pause
, чтобы получить идентификатор контейнерадля контейнера, на котором запущен сервер API Kubernetes - Запустите
docker kill <containerID>
, чтобы уничтожить контейнер. - Kubelet автоматически перезапустит контейнер, который получит новый сертификат.
Если все работает должным образом, не забудьте обновить kubeadm
ConfigMap, хранящуюся в кластере, в противном случае в будущем обновлении kubeadm
будет не хватать вашей новой конфигурации:
kubeadm config upload from-file --config kubeadm.yaml
В этой статье содержится более полное руководство о том, как добавить имя в сертификат сервера API Kubernetes