Обновить сертификат
Вы можете обновить сертификат вручную или использовать Service Account Token (в этом случае для авторизации в Kubernetes API не нужно обновлять сертификаты).
Обновить вручную
Каждые 30 дней автоматически обновляются сертификаты, используемые для системных компонентов Kubernetes. Также обновляется сертификат, который находится в файле доступа кластера.
- В панели управления перейдите в раздел Облачная платформа ⟶ Kubernetes.
- Откройте страницу кластера ⟶ вкладка Настройки.
- В блоке Доступ к кластеру нажмите Обновить сертификаты.
- Заново подключитесь к кластеру.
Получить Service Account Token
Service Account Token — один из способов авторизации в Kubernetes API, альтернатива Static Token File и клиентским сертификатам, которые обновляются вручную.
Каждый созданный ServiceAccount будет иметь токен, хранящийся в Kubernetes API-секрете.
-
Создайте ServiceAccount:
kubectl -n kube-system create serviceaccount <service-account-name>
-
Создайте ClusterRoleBinding и добавьте роль с правами администратора (cluster-admin):
kubectl create clusterrolebinding <clusterrolebinding-name> --clusterrole=cluster-admin --serviceaccount=kube-system:<service-account-name>
-
Получите имя секрета созданного ServiceAccount, в котором хранится токен:
export TOKENNAME=$(kubectl -n kube-system get serviceaccount/<service-account-name> -o jsonpath='{.secrets[0].name}')
-
Получите токен из секрета в base64, декодируйте и добавьте в переменную окружения
TOKEN
:export TOKEN=$(kubectl -n kube-system get secret $TOKENNAME -o jsonpath='{.data.token}' | base64 --decode)
-
Проверьте работоспособность токена, сделайте запрос в Kubernetes API с токеном в заголовке
"Authorization: Bearer <TOKEN-HERE>"
:curl -k -H "Authorization: Bearer $TOKEN" -X GET "https://<KUBE-API-IP>:6443/api/v1/nodes" | json_pp
-
Добавьте ServiceAccount в kubeconfig:
kubectl config set-credentials <service-account-name> --token=$TOKEN
-
Переключите контекст:
kubectl config set-context --current --user=<service-account-name>
-
Проверьте работоспособность:
kubectl get nodes
Обновленный kubeconfig будет находиться в домашней директории $HOME/.kube/config