Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Настройка групп безопасности
    • Подключение к узлу по SSH
    • Создание файла конфигурации
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Установка приложений
      • Основы работы с Cloud Marketplace
      • Установка Jaeger
      • Установка Metrics Provider
    • Сетевые сценарии
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка Node Local DNS для контроллера сетевых политик Cilium
    • Работа с постоянными томами
      • Динамическая подготовка тома
      • Статическая подготовка тома
      • Управление классами хранилищ
      • Увеличение размера тома для подов
      • Увеличение размера тома для контроллера StatefulSet
      • Подключение тома в блочном режиме
      • Интеграция с Yandex Object Storage
    • Управление кластером Kubernetes
      • Добавление учетных данных кластера Kubernetes в конфигурационный файл kubectl
      • Информация об имеющихся кластерах
      • Создание кластера Kubernetes
      • Изменение кластера Kubernetes
      • Создание пространства имен в кластере Kubernetes
      • Удаление кластера Kubernetes
    • Управление группой узлов
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Изменение группы узлов
      • Управление метками узлов кластера Kubernetes
      • Удаление группы узлов
    • Подключение внешних узлов к кластеру
  • Практические руководства
    • Все руководства
    • Интеграция с Container Registry
    • Запуск рабочих нагрузок с GPU
    • Установка NGINX Ingress-контроллера с Let's Encrypt®
    • Настройка Application Load Balancer Ingress-контроллера
    • Резервное копирование в Object Storage
    • Горизонтальное масштабирование приложения в кластере
    • Работа со снапшотами
    • Интеграция с корпоративной зоной DNS
    • Автоматическое масштабирование DNS по размеру кластера
    • Настройка локального кеширования DNS
    • Настройка Fluent Bit для работы с Yandex Cloud Logging
    • Синхронизация с секретами Yandex Lockbox
    • Использование продуктов Yandex Cloud Marketplace
      • Использование Jaeger для трассировки запросов в Yandex Managed Service for YDB
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование секретов
    • Использование объектов API Kubernetes
      • Том
      • Сервис
    • Группа узлов
      • Автоматическое масштабирование группы узлов
      • Расселение подов с узла
      • Динамическое резервирование ресурсов для узла
      • Группы узлов с GPU
    • Сеть в Managed Service for Kubernetes
    • Внешние узлы кластера
    • Сетевые настройки и политики кластера
    • Автоматическое масштабирование
    • Квоты и лимиты
    • Рекомендации по использованию Managed Service for Kubernetes
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • NodeGroupService
      • VersionService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listNodeGroups
        • listNodes
        • listOperations
        • start
        • stop
        • update
      • NodeGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listNodes
        • listOperations
        • update
      • Version
        • Overview
        • list
  • Вопросы и ответы
    • Общие вопросы
    • Хранилище данных
    • Настройка и обновление
    • Автоматическое масштабирование
    • Ресурсы
    • Логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Создание файла конфигурации

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

Статья создана
Yandex Cloud
,
улучшена
  • Получите уникальный идентификатор кластера Kubernetes
  • Подготовьте сертификат кластера Kubernetes
  • Создайте объект ServiceAccount
  • Подготовьте токен объекта ServiceAccount
  • Получите IP-адрес кластера Kubernetes
  • Создайте и заполните файл конфигурации
  • Проверьте результат

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

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

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

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

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

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

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

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

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

    В блоке Общая информация отобразится уникальный идентификатор кластера Kubernetes.

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

    Bash
    PowerShell

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

    CLUSTER_ID=catb3ppsdsh7vajr216f
    

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

    $CLUSTER_ID = "catb3ppsdsh7vajr216f"
    

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

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

Bash
PowerShell

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

  • Получает информацию о кластере в формате 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. Получите подробную информацию о кластере Kubernetes в формате JSON и сохраните ее в переменную $CLUSTER:

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

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

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

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

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

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

    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 в кластере 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 | \
    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-адрес кластера Kubernetes

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

Bash
PowerShell

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

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

Для подключения к API кластера Kubernetes из интернета (вне Облака).

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

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

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

Выполните команду для подключения к API кластера Kubernetes из интернета (вне Облака):

$MASTER_ENDPOINT = $CLUSTER.master.endpoints.external_v4_endpoint

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

$MASTER_ENDPOINT = $CLUSTER.master.endpoints.internal_v4_endpoint

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

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

    Bash
    PowerShell

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

    kubectl config set-cluster sa-test2 \
                   --certificate-authority=ca.pem \
                   --server=$MASTER_ENDPOINT \
                   --kubeconfig=test.kubeconfig
    
    kubectl config set-cluster sa-test2 `
                   --certificate-authority=ca.pem `
                   --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

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Получите уникальный идентификатор кластера Kubernetes
  • Подготовьте сертификат кластера Kubernetes
  • Создайте объект ServiceAccount
  • Подготовьте токен объекта ServiceAccount
  • Получите IP-адрес кластера Kubernetes
  • Создайте и заполните файл конфигурации
  • Проверьте результат