Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Создание кластера Kubernetes без доступа в интернет
    • Запуск рабочих нагрузок с GPU
    • Использование групп узлов c GPU без предустановленных драйверов
    • Установка Time-Slicing GPUs
    • Миграция ресурсов в другую зону доступности
    • Использование модулей Yandex Cloud в Terraform
    • Шифрование секретов в Managed Service for Kubernetes
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Настройка логирования для L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
      • Проверка состояния приложений в кластере Managed Service for Kubernetes с помощью L7-балансировщика Application Load Balancer
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
      • Редактирование изображений для сайтов с помощью Thumbor
      • Использование Istio
      • Использование HashiCorp Vault для хранения секретов
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Необходимые платные ресурсы
  • Подготовьте облако к работе
  • Создайте ресурсы Managed Service for Kubernetes
  • Создайте ресурсы Yandex Cloud с помощью Crossplane
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Использование продуктов Cloud Marketplace
  3. Интеграция с Crossplane

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

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Необходимые платные ресурсы
  • Подготовьте облако к работе
  • Создайте ресурсы Managed Service for Kubernetes
  • Создайте ресурсы Yandex Cloud с помощью Crossplane
  • Удалите созданные ресурсы

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

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

  1. Подготовьте облако к работе.
  2. Создайте ресурсы Managed Service for Kubernetes.
  3. Создайте ресурсы Yandex Cloud с помощью Crossplane.

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

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за кластер Managed Service for Kubernetes: использование мастера и исходящий трафик (см. тарифы Managed Service for Kubernetes).
  • Плата за узлы кластера (ВМ): использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).
  • Плата за публичный IP-адрес, если он назначен узлам кластера (см. тарифы Virtual Private Cloud).
  • Плата за использование NAT-шлюза (см. тарифы Virtual Private Cloud).

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

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

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

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

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

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

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

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

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

      Совет

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

    4. Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.

      Важно

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

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

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

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

    3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

    4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

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

      • Сеть.

      • Подсеть.

      • Кластер Kubernetes.

      • Сервисный аккаунт, необходимый для работы кластера и группы узлов Managed Service for Kubernetes.

      • Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.

        Важно

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

    6. Укажите в файле конфигурации:

      • Идентификатор каталога.
      • Версию Kubernetes для кластера и групп узлов Kubernetes.
      • CIDR кластера Kubernetes.
      • Имя сервисного аккаунта кластера Managed Service for Kubernetes.
    7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

      terraform validate
      

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

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

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

        terraform plan
        

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

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

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

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

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

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

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

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

  4. Настройте NAT-шлюз для подсети узлов кластера Kubernetes.

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

  1. Определите, какие ресурсы вы хотите создать с помощью Crossplane. Чтобы получить список доступных ресурсов, выполните команду:

    kubectl get crd | grep yandex-cloud.jet.crossplane.io
    
  2. Определите параметры этих ресурсов. Чтобы посмотреть доступные параметры для конкретного ресурса, выполните команду:

    kubectl describe crd <имя_ресурса>
    
  3. Создайте манифест-шаблон vm-instance-template.yml, в котором описаны существующие в каталоге сеть и подсеть, а также новая ВМ crossplane-vm, создаваемая с помощью Crossplane:

    # Добавление в конфигурацию существующей сети
    apiVersion: vpc.yandex-cloud.jet.crossplane.io/v1alpha1
    kind: Network
    metadata:
      name: <имя_существующей_сети>
      annotations:
        # Указать провайдеру на существующую сеть
        crossplane.io/external-name: <идентификатор_существующей_сети>
    spec:
      # Запретить удаление существующей сети
      deletionPolicy: Orphan
      forProvider:
        name: <имя_существующей_сети>
      providerConfigRef:
        name: default
    ---
    # Добавление в конфигурацию существующей подсети
    apiVersion: vpc.yandex-cloud.jet.crossplane.io/v1alpha1
    kind: Subnet
    metadata:
      name: <имя_существующей_подсети>
      annotations:
        # Указать провайдеру на существующую подсеть
        crossplane.io/external-name: <идентификатор_существующей_подсети>
    spec:
      # Запретить удаление существующей подсети
      deletionPolicy: Orphan
      forProvider:
        name: <имя_существующей_подсети>
        networkIdRef:
          name: <имя_существующей_сети>
        v4CidrBlocks:
          - <IPv4_CIDR_существующей_подсети>
      providerConfigRef:
        name: default
    ---
    # Создание ВМ
    apiVersion: compute.yandex-cloud.jet.crossplane.io/v1alpha1
    kind: Instance
    metadata:
      name: crossplane-vm
    spec:
      forProvider:
        name: crossplane-vm
        platformId: standard-v1
        zone: ru-central1-a
        resources:
          - cores: 2
            memory: 4
        bootDisk:
          - initializeParams:
              - imageId: fd80bm0rh4rkepi5ksdi
        networkInterface:
          - subnetIdRef:
              name: <имя_существующей_подсети>
            # Автоматически предоставить ВМ публичный IP-адрес
            nat: true
        metadata:
          ssh-keys: "<публичный_ключ_SSH>"
      providerConfigRef:
        name: default
      # Записать реквизиты для подключения к ВМ в секрет
      writeConnectionSecretToRef:
        name: instance-conn
        namespace: default
    

    В блоке с конфигурацией ВМ:

    • zone: ru-central1-a — зона доступности, в которой будет развернута ВМ.
    • name: crossplane-vm — имя ВМ, которая будет создана средствами Crossplane.
    • imageId: fd80bm0rh4rkepi5ksdi — идентификатор загрузочного образа ВМ. Его можно получить вместе со списком образов. В данном примере используется образ Ubuntu 22.04 LTS.

    Примеры конфигурации ресурсов Yandex Cloud см. в репозитории провайдера на GitHub.

  4. Примените манифест vm-instance-template.yml:

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

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

    yc compute instance list
    
  7. Чтобы получить из секрета данные для подключения к ВМ, выполните команду:

    kubectl get secret instance-conn -o json | jq -r '.data | map_values(@base64d)'
    

    Ожидаемый результат:

    {
      "external_ip": "<публичный_IP-адрес>",
      "fqdn": "<полное_доменное_имя>",
      "internal_ip": "<внутренний_IP-адрес>"
    }
    

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

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

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

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

    Вручную
    Terraform
    1. Удалите кластер Kubernetes.
    2. Удалите созданные подсети.
    3. Удалите таблицу маршрутизации.
    4. Удалите NAT-шлюз.
    5. Удалите сети.
    6. Удалите созданные сервисные аккаунты.
    1. В терминале перейдите в директорию с планом инфраструктуры.

      Важно

      Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

    2. Удалите ресурсы:

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

        terraform destroy
        
      2. Подтвердите удаление ресурсов и дождитесь завершения операции.

      Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

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

Предыдущая
Интеграция с Argo CD
Следующая
Синхронизация с секретами Yandex Lockbox
Проект Яндекса
© 2025 ООО «Яндекс.Облако»