Перейти к содержимому

Установка пользовательских сертификатов для 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.

Связанные статьи ​

Команда Боцман