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

Вы можете обновить сертификат вручную или использовать 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>
  2. Создайте ClusterRoleBinding и добавьте роль с правами администратора (cluster-admin):

    kubectl create clusterrolebinding <clusterrolebinding-name> --clusterrole=cluster-admin --serviceaccount=kube-system:<service-account-name>
  3. Получите имя секрета созданного ServiceAccount, в котором хранится токен:

    export TOKENNAME=$(kubectl -n kube-system get serviceaccount/<service-account-name> -o jsonpath='{.secrets[0].name}')
  4. Получите токен из секрета в base64, декодируйте и добавьте в переменную окружения TOKEN:

    export TOKEN=$(kubectl -n kube-system get secret $TOKENNAME -o jsonpath='{.data.token}' | base64 --decode)
  5. Проверьте работоспособность токена, сделайте запрос в Kubernetes API с токеном в заголовке "Authorization: Bearer <TOKEN-HERE>":

    curl -k -H "Authorization: Bearer $TOKEN" -X GET "https://<KUBE-API-IP>:6443/api/v1/nodes" | json_pp
  6. Добавьте ServiceAccount в kubeconfig:

    kubectl config set-credentials <service-account-name> --token=$TOKEN
  7. Переключите контекст:

    kubectl config set-context --current --user=<service-account-name>
  8. Проверьте работоспособность:

    kubectl get nodes  

    Обновленный kubeconfig будет находиться в домашней директории $HOME/.kube/config