Перейти к содержанию

Установка пользовательских сертификатов для Web панели

Предварительная подготовка

Вам понадобится:

  • Админский kubeconfig управляющего кластера
  • Предварительно сгенерированные сертификат, ключ, CA сертификат
  • Настроенный kubectl

Внимание!

При выписывании сертификата обязательно необходимо указать доменное имя в CN и SAN.

Внимание!

При использовании промежуточных центров сертификации (Intermediate CAs) необходимо включить всю цепочку доверия (включая все промежуточные сертификаты), в файл ca.crt.

Заметка

Все действия выполняйте, используя админский kubeconfig, так как в момент обновления Боцман может быть недоступен.
Админский kubeconfig можно получить:
1. С АРМ Администратора из директории .bootsmanctl/management/
2. С любого мастер-узла управляющего кластера по пути /etc/kubernetes/admin.conf

Обновление сертификатов

Перед обновлением сертификатов отключите cert-manager, если он включен.

Воспользуйтесь одним из двух способов отключения работы cert-manager:

1. Вручную внесите изменения в конфигурацию работы модуля Rancher, выставив значение параметра ingress:tls:source:secret.

source_config
source_config

2. Используя kubectl shell управляющего кластера Боцман, введите следующую команду:

kubectl patch Config.addon.bootsman.tech $MGMT_CLUSTER_NAME-rancher --type=merge \
--patch='{"spec":{"values":{"ingress":{"tls":{"source":"secret"}},"privateCA":true}}}'

Перейдите в директорию с сертификатами и переименуйте файлы:

  • Сертификат - tls.crt,
  • Закрытый ключ - tls.key,
  • CA - ca.crt.

Заметка

Если устанавливается самоподписанный сертификат или сертификат от внутреннего удостоверяющего центра, то файл ca.crt у Вас уже должен быть.
Для сертификатов, подписанных публичным удостоверяющим центром Вам может понадобиться вручную выделить в файл ca.crt цепочку промежуточных сертификатов вплоть до корневого.

Выполните следующую команду:

kubectl create secret generic tls-bootsman-web \
  --from-file=tls.crt --from-file=tls.key --from-file=ca.crt \
  -n cattle-system --type=kubernetes.io/tls \
  --dry-run=client -o yaml | kubectl replace -f -

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