Обновить сертификаты для системных компонентов
Для взаимодействия системных компонентов Kubernetes нужны актуальные сертификаты. Они обновляются автоматически каждые 30 дней. Если при обновлении сертификатов возникает ошибка, вы можете обновить сертификаты в панели управления или через API Managed Kubernetes.
Информация об обновлении сертификатов отражается в логах кластера.
При каждом обновлении сертификатов меняется kubeconfig-файл, поэтому к кластеру нужно заново подключаться. Чтобы не подключаться заново, настройте обновление через ServiceAccount Token.
Обновить сертификаты при возникновении ошибки
Если при автоматическом обновлении сертификатов возникла ошибка ROTATE CERTS = ERROR
, можно обновить сертификаты в панели управления или через API Managed Kubernetes.
- В панели управления перейдите в раздел Облачная платформа → Kubernetes.
- Откройте страницу кластера → вкладка Настройки.
- В блоке Доступ к кластеру нажмите Обновить сертификаты.
- Заново подключитесь к кластеру.
Настроить обновление сертификатов через ServiceAccount Token
ServiceAccount Token — это способ авторизации в Kubernetes API. Он позволяет не обновлять kubeconfig-файл после каждого обновления сертификатов.
Процесс получения ServiceAccount Token зависит от версии Kubernetes:
Для версии Kubernetes 1.23 и ниже
Linux
Windows
-
Создайте ServiceAccount:
kubectl -n kube-system create serviceaccount <serviceaccount_name>
Укажите
<serviceaccount_name>
— имя сервисного аккаунта. -
Создайте ClusterRoleBinding (группу для нового пользователя) и добавьте роль с правами администратора (cluster-admin):
kubectl create clusterrolebinding <clusterrolebinding_name> --clusterrole=cluster-admin --serviceaccount=kube-system:<serviceaccount_name>
Укажите
<clusterrolebinding_name>
— имя группы для нового пользователя. -
Добавьте в переменную окружения
TOKENNAME
имя секрета созданного ServiceAccount, в котором хранится токен:export TOKENNAME=$(kubectl -n kube-system get serviceaccount/<serviceaccount_name> -o jsonpath='{.secrets[0].name}')
-
Добавьте в переменную окружения
TOKEN
декодированный токен из секрета:export TOKEN=$(kubectl -n kube-system get secret $TOKENNAME -o jsonpath='{.data.token}' | base64 --decode)