Додавання додаткового публічного доменного імені до кластеру Kubernetes.
Якщо ви налаштували кластер Kubernetes з публічним доменним іменем, але потім вирішили вдосконалити його та додати ще одне ім’я з будь-якої причини, ця стаття про це.
Кластер Kubernetes зберігає сертифікати apiserver в одному місці, це два файли:
- /etc/kubernetes/pki/apiserver.crt
- /etc/kubernetes/pki/apiserver.key
Перед будь-якими змінами ОБОВ'ЯЗКОВО збережіть! ці файли як резервну копію.
Продовжимо, перше, що потрібно зробити — перевірити існуючі альтернативні імена та IP-адреси, які вже використовуються.
sudo -i
cd /etc/kubernetes/pki
openssl x509 -in apiserver.crt -text -noout | grep -A 1 "Subject Alternative Name"
Після виконання цієї команди ви отримаєте повний список доменів і IP-адрес, що вже використовуються. Залиште цей список на випадок, якщо ви згенеруєте новий, і щось може бути втрачене без видимих причин.
Тепер видалимо! ці файли, пам'ятайте, що ви вже зробили резервну копію.
rm apiserver.crt
rm apiserver.key
Час генерувати нові імена.
kubeadm init phase certs apiserver --apiserver-cert-extra-sans=extra.example.com
Нові файли з'являться, але не радійте завчасно, вам потрібно знову перевірити повний список альтернативних імен.
openssl x509 -in apiserver.crt -text -noout | grep -A 1 "Subject Alternative Name"
Тепер ви повинні мати старий список + нове додаткове ім’я, якщо щось відсутнє, видаліть і згенеруйте їх знову, додавши відсутні.
rm apiserver.crt
rm apiserver.key
kubeadm init phase certs apiserver --apiserver-cert-extra-sans=extra.example.com,missing-host.com,MISSING_IP
Перевіряйте ще раз і ще раз, і сподіваємось, тепер все в порядку.
ApiServer повинен перезапуститися автоматично, якщо цього не сталося, просто відредагуйте файл.
cd /etc/kubernetes/manifests
nano kube-apiserver.yaml
Додайте туди
- --apiserver-cert-extra-sans=extrahost,EXTRA_IP
Це мені особисто не допомогло, тому я редагував щось інше, і apiServer був перезапущений.
Тепер перевірте нові сертифікати apiserver.
openssl s_client -connect YOUR_HOST_OR_IP_NO_HTTPS:6443 -showcerts | openssl x509 -text -noout | grep -A 1 "Subject Alternative Name"
І переконайтеся, що список альтернативних імен містить всі старі імена плюс нові.
Після цього ви можете зробити поетапне оновлення нового сертифікату в усіх інших конфігураціях.
kubeadm init phase kubeconfig all
Далі скопіюйте
/etc/kubernetes/admin.conf to .kube/config
на всі машини користувачів, де це потрібно.
Готово, тепер ваш кластер Kubernetes має нове ім’я в сертифікаті, і ви можете створювати CI/CD пайплайн.
Перекладено з: How to add Alternative Subject Name to Kubernetes cluster