Установка пользовательских сертификатов для Web панели
Предварительная подготовка
Вам понадобится:
- Админский kubeconfig управляющего кластера
- Админский kubeconfig всех подчинённых кластеров
- Предварительно сгенерированные сертификат, ключ, CA сертификат
- Настроенный kubectl
- Обязательно!!! При выписывании сертификата указать доменное имя в CN и SAN.
Внимание!
При использовании промежуточных центров сертификации (Intermediate CAs) необходимо включить всю цепочку доверия (включая все промежуточные сертификаты), в файл cacerts.pem в формате PEM-bundle.
Заметка
Все действия выполняйте, используя админский kubeconfig, так как в момент обновления Боцман может быть недоступен.
Админский kubeconfig можно получить:
1. С АРМ Администратора из директории .bootsmanctl/management/
2. С любого мастер-узла управляющего кластера по пути /etc/kubernetes/admin.conf
Обновление сертификатов
Перейдите в директорию с сертификатами и переименуйте файлы:
- Сертификат -
tls.crt - Закрытый ключ -
tls.key - CA -
cacerts.pem
Обновите секрет с CA
kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem \
--dry-run=client --save-config -o yaml | kubectl apply -f -
Обновите конфигурацию модуля Web панели
Задайте имя управляющего кластера для будущих команд
Выполните команду
kubectl patch Config.addon.bootsman.tech $MGMT_CLUSTER_NAME-rancher --type=merge \
--patch="{\"spec\": {\"values\": {\"ingress\": {\"tls\": {\"source\": \"secret\"}},\"privateCA\": true }}}"
Дождитесь перезагрузки подов rancher и rancher-webhook
Текущий статус:
Обновление сертификата 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 панели
kubectl patch secret tls-rancher-ingress -n cattle-system --patch="{\"data\":{\"ca.crt\":\"$base64ca\",\"tls.crt\":\"$base64cert\",\"tls.key\":\"$base64key\" }}"
Перезапуск Provisioning-operator
Обновление сертификатов в подчинённых кластерах
Предупреждения!
Действия из этого раздела повторите для всех подчинённых кластеров
Используйте команду для определение на каком кластере проводятся работы
После обновления сертификатов Web панели через некоторое время подчинённые кластеры отключатся от него.
Для восстановления соединения требуется обновить CA хеш сумму для агента на каждом подчиненном кластере
Задайте параметр URL Web панели
Получите Хеш суммы нового CA сертификата и примените это значение к агенту
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.