Тема
Установка пользовательских сертификатов для Web панели
Предварительная подготовка
Вам понадобится:
- Админский kubeconfig управляющего кластера
- Админский kubeconfig всех подчинённых кластеров
- Предварительно сгенерированные сертификат, ключ, CA сертификат
- Настроенный kubectl
- Обязательно!!! При выписывании сертификата указать доменное имя в CN и SAN.
Заметка
Все действия выполняйте, используя админский kubeconfig, так как в момент обновления Боцман может быть недоступен.
Админский kubeconfig можно получить:
1. С АРМ Администратора из директории .bootsmanctl/management/
2. С любого мастер-узла управляющего кластера по пути /etc/kubernetes/admin.conf
Обновление сертификатов
Перейдите в директорию с сертификатами и переименуйте файлы:
- Сертификат -
tls.crt - Закрытый ключ -
tls.key - CA -
cacerts.pem
Обновите секрет с CA
bash
kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem \
--dry-run=client --save-config -o yaml | kubectl apply -f -Обновите конфигурацию модуля Web панели
Задайте имя управляющего кластера для будущих команд
bash
MGMT_CLUSTER_NAME=example-cluster-nameВыполните команду
bash
kubectl patch Config.addon.bootsman.tech $MGMT_CLUSTER_NAME-rancher --type=merge \
--patch="{\"spec\": {\"values\": {\"ingress\": {\"tls\": {\"source\": \"secret\"}},\"privateCA\": true }}}"Дождитесь перезагрузки подов rancher и rancher-webhook
Текущий статус:
bash
kubectl get pods -n cattle-systemОбновление сертификата Web панели
Закодируйте содержимое в base64
base64ca=$(cat cacerts.pem | base64 -w0)
base64cert=$(cat tls.crt | base64 -w0)
base64key=$(cat tls.key | base64 -w0)Далее потребуется изменить значение в secret tls-rancher-ingress в namespace cattle-system. Это можно сделать с помощью kubectl, Web панели
bash
kubectl patch secret tls-rancher-ingress -n cattle-system --patch="{\"data\":{\"ca.crt\":\"$base64ca\",\"tls.crt\":\"$base64cert\",\"tls.key\":\"$base64key\" }}"Перезапуск Provisioning-operator
bash
kubectl rollout restart -n provisioning-system deployment provisioning-controller-managerОбновление сертификатов в подчинённых кластерах
Предупреждения!
Действия из этого раздела повторите для всех подчинённых кластеров
Используйте команду для определение на каком кластере проводятся работы
bash
kubectl cluster-infoПосле обновления сертификатов Web панели через некоторое время подчинённые кластеры отключатся от него.
Для восстановления соединения требуется обновить CA хеш сумму для агента на каждом подчиненном кластере
Задайте параметр URL Web панели
bash
BOOTSMAN_WEB_URL=https://example.comПолучите Хеш суммы нового CA сертификата и примените это значение к агенту
bash
CATTLE_CA_CHECKSUM=$(curl -k -s -fL ${BOOTSMAN_WEB_URL}/v3/settings/cacerts | jq -r .value | sha256sum | awk '{print $1}')
kubectl set env -n cattle-system deployment/cattle-cluster-agent -c cluster-register CATTLE_CA_CHECKSUM=${CATTLE_CA_CHECKSUM}Немного подождите, и кластер вновь станет доступным в web-панели rancher.