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

Вы можете обновить сертификат вручную или использовать Service Account Token (в этом случае для авторизации в Kubernetes API не нужно обновлять сертификаты).

Обновить вручную

Каждые 30 дней автоматически обновляются сертификаты, используемые для системных компонентов Kubernetes. Также обновляется сертификат, который находится в файле доступа кластера.

  1. В панели управления перейдите в раздел Облачная платформа ⟶ Kubernetes.
  2. Откройте страницу кластера вкладка Настройки.
  3. В блоке Доступ к кластеру нажмите Обновить сертификаты.
  4. Заново подключитесь к кластеру.

Получить Service Account Token

Service Account Token — один из способов авторизации в Kubernetes API, альтернатива Static Token File и клиентским сертификатам, которые обновляются вручную.

Каждый созданный ServiceAccount будет иметь токен, хранящийся в Kubernetes API-секрете.

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