Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все инструкции
    • Подключение к узлу по SSH
    • Подключение к узлу через OS Login
    • Обновление Kubernetes
    • Настройка автомасштабирования
      • Обзор способов подключения
      • Настройка групп безопасности
      • Создание статического файла конфигурации
    • Подключение внешних узлов к кластеру
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Получите уникальный идентификатор кластера
  • Подготовьте сертификат кластера
  • Создайте объект ServiceAccount
  • Подготовьте токен объекта ServiceAccount
  • Получите IP-адрес кластера
  • Дополните файл конфигурации
  • Проверьте результат
  1. Пошаговые инструкции
  2. Подключение к кластеру
  3. Создание статического файла конфигурации

Создание статического файла конфигурации

Статья создана
Yandex Cloud
Улучшена
Обновлена 31 октября 2024 г.
  • Перед началом работы
  • Получите уникальный идентификатор кластера
  • Подготовьте сертификат кластера
  • Создайте объект ServiceAccount
  • Подготовьте токен объекта ServiceAccount
  • Получите IP-адрес кластера
  • Дополните файл конфигурации
  • Проверьте результат

Статические файлы конфигурации позволяют получить доступ к кластеру Managed Service for Kubernetes без использования CLI, например из систем непрерывной интеграции.

Также с помощью статического файла конфигурации можно настроить доступ к нескольким кластерам Managed Service for Kubernetes. Между описанными в конфигурациях кластерами Managed Service for Kubernetes можно быстро переключаться с помощью команды kubectl config use-context. Подробнее о настройке доступа к нескольким кластерам Managed Service for Kubernetes читайте в документации Kubernetes.

Чтобы создать файл конфигурации:

  • Получите уникальный идентификатор кластера.
  • Подготовьте сертификат кластера Managed Service for Kubernetes.
  • Создайте объект ServiceAccount.
  • Подготовьте токен объекта ServiceAccount.
  • Создайте и заполните файл конфигурации.
  • Проверьте результат.

Для выполнения bash-команд вам понадобится парсер JSON-файлов — jq.

Перед началом работыПеред началом работы

  1. Создайте сервисный аккаунт.
  2. Создайте кластер Managed Service for Kubernetes любой подходящей конфигурации.
  3. Создайте группу узлов любой подходящей конфигурации.
  4. Установите kubectl и настройте его на работу с созданным кластером. Учетные данные добавьте в конфигурационный файл test.kubeconfig с помощью флага --kubeconfig=test.kubeconfig.

Получите уникальный идентификатор кластераПолучите уникальный идентификатор кластера

Для обращения к кластеру Managed Service for Kubernetes используйте его уникальный идентификатор. Запишите его в переменную для использования в других командах.

  1. Узнайте уникальный идентификатор кластера Managed Service for Kubernetes:

    Консоль управления
    CLI
    1. Перейдите на страницу каталога и выберите Managed Service for Kubernetes.
    2. Нажмите на имя нужного кластера Managed Service for Kubernetes.

    В поле Идентификатор отобразится уникальный идентификатор кластера Managed Service for Kubernetes.

    yc managed-kubernetes cluster list
    

    Результат:

    +----------------------+--------+---------------------+---------+---------+------------------------+--------------------+
    |          ID          |  NAME  |     CREATED AT      | HEALTH  | STATUS  |    EXTERNAL ENDPOINT   |  INTERNAL ENDPOINT |
    +----------------------+--------+---------------------+---------+---------+------------------------+--------------------+
    | catb3ppsdsh7******** | my-k8s | 2019-09-04 15:17:11 | HEALTHY | RUNNING | https://84.201.148.31/ | https://10.0.0.24/ |
    +----------------------+--------+---------------------+---------+---------+------------------------+--------------------+
    
  2. Запишите уникальный идентификатор кластера Managed Service for Kubernetes в переменную:

    Bash
    PowerShell
    CLUSTER_ID=catb3ppsdsh7********
    
    $CLUSTER_ID = "catb3ppsdsh7********"
    

Подготовьте сертификат кластераПодготовьте сертификат кластера

Сохраните сертификат кластера Managed Service for Kubernetes в файл ca.pem. С помощью этого сертификата подтверждается подлинность кластера Managed Service for Kubernetes.

Bash
PowerShell

Выполните команду, которая:

  • Получает информацию о кластере Managed Service for Kubernetes в формате JSON.
  • Оставляет только информацию о сертификате и убирает лишние кавычки из содержимого сертификата.
  • Убирает лишние символы из содержимого сертификата.
  • Сохраняет сертификат в файл ca.pem.
yc managed-kubernetes cluster get --id $CLUSTER_ID --format json | \
  jq -r .master.master_auth.cluster_ca_certificate | \
  awk '{gsub(/\\n/,"\n")}1' > ca.pem
  1. Получите подробную информацию о кластере Managed Service for Kubernetes в формате JSON и сохраните ее в переменную $CLUSTER:

    $CLUSTER = yc managed-kubernetes cluster get --id $CLUSTER_ID --format json | ConvertFrom-Json
    
  2. Получите сертификат кластера Managed Service for Kubernetes и сохраните его в файл ca.pem:

    $CLUSTER.master.master_auth.cluster_ca_certificate | Set-Content ca.pem
    

Создайте объект ServiceAccountСоздайте объект ServiceAccount

Создайте объект ServiceAccount для взаимодействия с API Kubernetes внутри кластера Managed Service for Kubernetes.

  1. Сохраните следующую спецификацию для создания объекта ServiceAccount и секрета для него в YAML-файл с названием sa.yaml.

    Подробную спецификацию объекта ServiceAccount читайте в документации Kubernetes.

    Версия Kubernetes 1.24 и выше
    Версия Kubernetes 1.23 и ниже
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: admin-user
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: admin-user
      namespace: kube-system
    ---
    apiVersion: v1
    kind: Secret
    type: kubernetes.io/service-account-token
    metadata:
      name: admin-user-token
      namespace: kube-system
      annotations:
        kubernetes.io/service-account.name: "admin-user"
    
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: admin-user
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: admin-user
      namespace: kube-system
    
  2. Создайте объект ServiceAccount и секрет для него:

    kubectl create -f sa.yaml
    

Подготовьте токен объекта ServiceAccountПодготовьте токен объекта ServiceAccount

Токен необходим для аутентификации объекта ServiceAccount в кластере Managed Service for Kubernetes.

Bash
PowerShell

Выполните команду, которая:

  • Получает информацию о созданном сервисном аккаунте admin-user в формате JSON.
  • Оставляет только информацию о токене и убирает лишние кавычки из содержимого токена.
  • Раскодирует токен из формата Base64.
  • Записывает содержимое токена в переменную SA_TOKEN.
SA_TOKEN=$(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | \
  grep admin-user-token | \
  awk '{print $1}') -o json | \
  jq -r .data.token | \
  base64 -d)
  1. Получите токен объекта ServiceAccount. Кавычки из содержимого уберутся автоматически:

    $SECRET = kubectl -n kube-system get secret -o json | `
      ConvertFrom-Json | `
      Select-Object -ExpandProperty items | `
      Where-Object { $_.metadata.name -like "*admin-user*" }
    
  2. Раскодируйте токен из формата Base64:

    $SA_TOKEN = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($SECRET.data.token))
    

Получите IP-адрес кластераПолучите IP-адрес кластера

Получите IP-адрес кластера Managed Service for Kubernetes и добавьте его в переменную MASTER_ENDPOINT для дальнейшего использования.

Bash
PowerShell

Выполните команду, которая:

  • Получает в формате JSON информацию о кластере Managed Service for Kubernetes по его уникальному идентификатору.
  • Оставляет только IP-адрес кластера Managed Service for Kubernetes.
  • Убирает лишние кавычки из содержимого.
  • Записывает IP-адрес в переменную MASTER_ENDPOINT.

Для подключения к API кластера Managed Service for Kubernetes из интернета (вне Yandex Cloud).

MASTER_ENDPOINT=$(yc managed-kubernetes cluster get --id $CLUSTER_ID \
  --format json | \
  jq -r .master.endpoints.external_v4_endpoint)

Для подключения к API кластера Managed Service for Kubernetes для подключения к мастеру из облачных сетей.

MASTER_ENDPOINT=$(yc managed-kubernetes cluster get --id $CLUSTER_ID \
  --format json | \
  jq -r .master.endpoints.internal_v4_endpoint)

Выполните команду для подключения к API кластера Managed Service for Kubernetes из интернета (вне Yandex Cloud):

$MASTER_ENDPOINT = $CLUSTER.master.endpoints.external_v4_endpoint

Для подключения к API кластера Managed Service for Kubernetes из облачных сетей выполните команду:

$MASTER_ENDPOINT = $CLUSTER.master.endpoints.internal_v4_endpoint

Дополните файл конфигурацииДополните файл конфигурации

  1. Добавьте сведения о кластере Managed Service for Kubernetes в файл конфигурации.

    Bash
    PowerShell

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

    kubectl config set-cluster sa-test2 \
      --certificate-authority=ca.pem \
      --embed-certs \
      --server=$MASTER_ENDPOINT \
      --kubeconfig=test.kubeconfig
    

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

    kubectl config set-cluster sa-test2 `
      --certificate-authority=ca.pem `
      --embed-certs `
      --server=$MASTER_ENDPOINT `
      --kubeconfig=test.kubeconfig
    
  2. Добавьте информацию о токене для admin-user в файл конфигурации.

    Bash
    PowerShell

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

    kubectl config set-credentials admin-user \
      --token=$SA_TOKEN \
      --kubeconfig=test.kubeconfig
    

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

    kubectl config set-credentials admin-user `
      --token=$SA_TOKEN `
      --kubeconfig=test.kubeconfig
    
  3. Добавьте информацию о контексте в файл конфигурации.

    Bash
    PowerShell

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

    kubectl config set-context default \
      --cluster=sa-test2 \
      --user=admin-user \
      --kubeconfig=test.kubeconfig
    

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

    kubectl config set-context default `
      --cluster=sa-test2 `
      --user=admin-user `
      --kubeconfig=test.kubeconfig
    
  4. Используйте созданную конфигурацию для дальнейшей работы.

    Bash
    PowerShell

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

    kubectl config use-context default \
      --kubeconfig=test.kubeconfig
    

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

    kubectl config use-context default `
      --kubeconfig=test.kubeconfig
    

Проверьте результатПроверьте результат

Проверьте, что конфигурация настроена верно, выполнив команду:

kubectl get namespace --kubeconfig=test.kubeconfig

Результат:

NAME     STATUS  AGE
default  Active  9d

Была ли статья полезна?

Предыдущая
Настройка групп безопасности
Следующая
Основы работы с Cloud Marketplace
Проект Яндекса
© 2025 ООО «Яндекс.Облако»