Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Подключение к узлу по SSH
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение к кластеру
      • Обзор способов подключения
      • Настройка групп безопасности
      • Создание статического файла конфигурации
    • Установка приложений из Cloud Marketplace
      • Основы работы с Cloud Marketplace
      • Установка Argo CD
      • Установка Container Storage Interface для S3
      • Установка Crossplane
      • Установка External Secrets Operator
      • Установка Falco
      • Установка Filebeat
      • Установка Fluent Bit
      • Установка Gateway API
      • Установка GitLab Agent
      • Установка GitLab Runner
      • Установка HashiCorp Vault
      • Установка Ingress-контроллера Application Load Balancer
      • Установка Jaeger
      • Установка Kyverno & Kyverno Policies
      • Установка Loki
      • Установка Metrics Provider
      • Установка NodeLocal DNS
      • Установка Policy Reporter
      • Установка Thumbor
    • Сетевые сценарии
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка NodeLocal DNS для контроллера сетевых политик Cilium
    • Работа с постоянными томами
      • Динамическая подготовка тома
      • Статическая подготовка тома
      • Управление классами хранилищ
      • Увеличение размера тома для подов
      • Увеличение размера тома для контроллера StatefulSet
      • Подключение тома в блочном режиме
      • Интеграция с Object Storage
    • Управление кластером Kubernetes
      • Получение информации о кластере Kubernetes
      • Создание кластера Kubernetes
      • Изменение кластера Kubernetes
      • Создание пространства имен в кластере Kubernetes
      • Удаление кластера Kubernetes
    • Управление группой узлов
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Подключение к узлу по SSH
      • Настройка автомасштабирования
      • Изменение группы узлов
      • Управление метками узлов кластера Kubernetes
      • Удаление группы узлов
    • Подключение внешних узлов к кластеру
  • Практические руководства
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Интеграция с Container Registry
    • Подпись и проверка Docker-образов Container Registry
    • Сканирование уязвимостей Container Registry при непрерывном развертывании приложений с помощью GitLab
    • Запуск рабочих нагрузок с GPU
    • Установка Ingress-контроллера NGINX с Let's Encrypt®
    • Установка Ingress-контроллера NGINX с сертификатом из Certificate Manager
    • Резервное копирование в Object Storage
    • Горизонтальное масштабирование приложения в кластере
    • Вертикальное масштабирование приложения в кластере
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • Работа со снапшотами
    • Интеграция с корпоративной зоной DNS
    • Автоматическое масштабирование DNS по размеру кластера
    • Настройка локального кеширования DNS
    • Проверка DNS Challenge для сертификатов Let's Encrypt®
    • Мониторинг кластера с помощью Prometheus и Grafana
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Изменение параметров сервера метрик (Metrics Server)
    • Использование продуктов Cloud Marketplace
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка Application Load Balancer Ingress-контроллера
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование секретов
    • Использование объектов 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. Использование продуктов Cloud Marketplace
  3. Интеграция с Crossplane

Интеграция с Crossplane

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
  • Создайте ресурсы Managed Service for Kubernetes
  • Создайте ресурсы с помощью Crossplane
  • Удалите созданные ресурсы

Crossplane — надстройка для Kubernetes с открытым исходным кодом, которая позволяет собрать решения от разных поставщиков в единую инфраструктуру и предоставить разработчикам приложений доступ к ней через высокоуровневые API. С помощью Crossplane пользователи могут управлять сторонними сервисами так же, как ресурсами Kubernetes.

Чтобы создать виртуальную машину Yandex Compute Cloud с помощью приложения Crossplane, установленного в кластере Kubernetes:

  1. Создайте ресурсы Managed Service for Kubernetes.
  2. Создайте ресурсы с помощью Crossplane.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

    По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  2. Установите утилиту потоковой обработки JSON-файлов jq.

Создайте ресурсы Managed Service for Kubernetes

  1. Создайте кластер и группу узлов Kubernetes.

    Вручную
    С помощью Terraform
    1. Если у вас еще нет сети, создайте ее.

    2. Если у вас еще нет подсетей, создайте их в зонах доступности, где будут созданы кластер Kubernetes и группа узлов.

    3. Создайте сервисные аккаунты:

      • С ролью editor на каталог, в котором создается кластер Kubernetes. От его имени будут создаваться ресурсы, необходимые кластеру Kubernetes.
      • С ролью container-registry.images.puller. От его имени узлы будут скачивать из реестра необходимые Docker-образы.

      Совет

      Вы можете использовать один и тот же сервисный аккаунт для управления кластером Kubernetes и его группами узлов.

    4. Создайте кластер Kubernetes и группу узлов любой подходящей конфигурации.

    1. Если у вас еще нет Terraform, установите его.

    2. Скачайте файл с настройками провайдера. Поместите его в отдельную рабочую директорию и укажите значения параметров.

    3. Скачайте в ту же рабочую директорию файл конфигурации кластера k8s-cluster.tf. В файле описаны:

      • Сеть.
      • Подсеть.
      • Группа безопасности и правила, необходимые для работы кластера Managed Service for Kubernetes, группы узлов и контейнера Yandex Container Registry:
        • Правила для служебного трафика.
        • Правила для доступа к API Kubernetes и управления кластером с помощью kubectl через порты 443 и 6443.
      • Кластер Kubernetes.
      • Сервисный аккаунт, необходимый для работы кластера и группы узлов Managed Service for Kubernetes.
    4. Укажите в файле конфигурации:

      • Идентификатор каталога.
      • Версию Kubernetes для кластера и групп узлов Kubernetes.
      • CIDR кластера Kubernetes.
      • Имя сервисного аккаунта кластера Managed Service for Kubernetes.
    5. Выполните команду terraform init в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера.

    6. Проверьте корректность файлов конфигурации Terraform с помощью команды:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    7. Создайте необходимую инфраструктуру:

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

      2. Если вас устраивают планируемые изменения, внесите их:

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

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

      В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

  2. Установите kubectl и настройте его на работу с созданным кластером.

  3. Установите Crossplane в кластер Kubernetes.

  4. Включите NAT в интернет для подсети узлов кластера Kubernetes.

Создайте ресурсы с помощью Crossplane

  1. Создайте манифест Crossplane providerconfig.yml:

    apiVersion: yandex-cloud.jet.crossplane.io/v1alpha1
    kind: ProviderConfig
    metadata:
      name: yc-config
    spec:
      credentials:
        source: Secret
        secretRef:
          name: yc-creds
          namespace: <пространство имен для Crossplane>
          key: credentials
    
  2. Создайте манифест-шаблон vm-instance-template.yml, в котором описаны сеть, подсеть и ВМ crossplane-vm, создаваемые с помощью Crossplane:

    apiVersion: vpc.yandex-cloud.jet.crossplane.io/v1alpha1
    kind: Network
    metadata:
      name: <NET_NAME>
      annotations:
        crossplane.io/external-name: <NET_ID>
    spec:
      deletionPolicy: Orphan
      forProvider:
        name: <NET_NAME>
        folderId: <FOLDER_ID>
    ---
    apiVersion: vpc.yandex-cloud.jet.crossplane.io/v1alpha1
    kind: Subnet
    metadata:
      name: <SUBNET_NAME>
      annotations:
        crossplane.io/external-name: <SUBNET_ID>
    spec:
      deletionPolicy: Orphan
      forProvider:
        name: <SUBNET_NAME>
        networkIdRef:
          name: <NET_NAME>
        v4CidrBlocks:
          - <SUBNET_PREFIX>
        zone: <ZONE_ID>
        folderId: <FOLDER_ID>
    ---
    apiVersion: compute.yandex-cloud.jet.crossplane.io/v1alpha1
    kind: Instance
    metadata:
      name: <VM_NAME>
    spec:
      forProvider:
        name: <VM_NAME>
        platformId: standard-v2
        zone: <ZONE_ID>
        resources:
          - cores: 2
            memory: 4
        bootDisk:
          - initializeParams:
              # LEMP stack
              # yc compute image get --folder-id standard-images --name=lemp-v20220606 --format=json | jq -r .id
              - imageId: <IMAGE_ID>
        networkInterface:
          - subnetIdRef:
              name: <SUBNET_NAME>
        folderId: <FOLDER_ID>
    

    Где:

    • ZONE_ID — зона доступности.
    • VM_NAME — имя ВМ, которая будет создана средствами Crossplane.
    • NET_NAME — имя облачной сети кластера Kubernetes.
    • SUBNET_NAME — имя подсети узлов кластера Kubernetes.
    • SUBNET_ID — идентификатор подсети.
    • NET_ID — идентификатор сети.
    • SUBNET_PREFIX — CIDR подсети.
    • FOLDER_ID — идентификатор каталога.
    • IMAGE_ID — идентификатор загрузочного образа ВМ. Его можно получить вместе со списком образов. В данном примере используется образ LEMP.
  3. Примените манифест providerconfig.yml:

    kubectl apply -f providerconfig.yml
    
  4. Примените манифест vm-instance.yml:

    kubectl apply -f vm-instance.yml
    
  5. Проверьте состояние созданных ресурсов:

    kubectl get network
    kubectl get subnet
    kubectl get instance
    
  6. Убедитесь, что созданная ВМ crossplane-vm появилась в каталоге:

    yc compute instance list
    

Удалите созданные ресурсы

Если созданные ресурсы вам больше не нужны, удалите их:

  1. Удалите crossplane-vm:

    kubectl delete instance crossplane-vm
    
  2. Удалите остальные ресурсы:

    Вручную
    С помощью Terraform
    1. Удалите кластер Kubernetes.
    2. Удалите созданные подсети и сети.
    3. Удалите созданные сервисные аккаунты.
    1. В командной строке перейдите в директорию, в которой расположен актуальный конфигурационный файл Terraform с планом инфраструктуры.

    2. Удалите конфигурационный файл k8s-cluster.tf.

    3. Проверьте корректность файлов конфигурации Terraform с помощью команды:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    4. Подтвердите изменение ресурсов.

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

      2. Если вас устраивают планируемые изменения, внесите их:

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

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

      Все ресурсы, которые были описаны в конфигурационном файле k8s-cluster.tf, будут удалены.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Создайте ресурсы Managed Service for Kubernetes
  • Создайте ресурсы с помощью Crossplane
  • Удалите созданные ресурсы