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
      • Интеграция с Container Registry
      • Подпись и проверка Docker-образов Container Registry
      • Хранение Docker-образов из проектов Managed Service for GitLab
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте сервисные аккаунты
  • Создайте сервисный аккаунт для ресурсов
  • Создайте сервисный аккаунт для узлов кластера
  • Создайте группы безопасности
  • Подготовьте ресурсы Kubernetes
  • Создайте кластер Managed Service for Kubernetes
  • Создайте группу узлов Managed Service for Kubernetes
  • Подготовьте ресурсы Container Registry
  • Создайте реестр
  • Сконфигурируйте Docker Credential helper
  • Подготовьте Docker-образ
  • Подключитесь к кластеру Managed Service for Kubernetes
  • Запустите тестовое приложение
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Использование Container Registry
  3. Интеграция с Container Registry

Интеграция с Container Registry

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Создайте сервисные аккаунты
    • Создайте сервисный аккаунт для ресурсов
    • Создайте сервисный аккаунт для узлов кластера
  • Создайте группы безопасности
  • Подготовьте ресурсы Kubernetes
    • Создайте кластер Managed Service for Kubernetes
    • Создайте группу узлов Managed Service for Kubernetes
  • Подготовьте ресурсы Container Registry
    • Создайте реестр
    • Сконфигурируйте Docker Credential helper
    • Подготовьте Docker-образ
  • Подключитесь к кластеру Managed Service for Kubernetes
  • Запустите тестовое приложение
  • Удалите созданные ресурсы

Yandex Container Registry — сервис для хранения и распространения Docker-образов. Интеграция с ним позволяет Managed Service for Kubernetes запускать поды с приложениями из Docker-образов, которые хранятся в реестре Container Registry. Для взаимодействия с Container Registry настраивается Docker Credential helper. Он позволяет работать с приватными реестрами с помощью сервисного аккаунта.

Чтобы интегрировать Managed Service for Kubernetes с Container Registry:

  1. Создайте сервисные аккаунты.
    1. Создайте сервисный аккаунт для ресурсов.
    2. Создайте сервисный аккаунт для узлов Managed Service for Kubernetes.
  2. Создайте группы безопасности.
  3. Подготовьте необходимые ресурсы Kubernetes.
    1. Создайте кластер Managed Service for Kubernetes.
    2. Создайте группу узлов Managed Service for Kubernetes.
  4. Подготовьте необходимые ресурсы Container Registry.
    1. Создайте реестр.
    2. Сконфигурируйте Credential helper.
    3. Подготовьте Docker-образ.
  5. Подключитесь к кластеру Managed Service for Kubernetes.
  6. Запустите тестовое приложение.
  7. Удалите созданные ресурсы.

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

Перейдите в консоль Yandex Cloud и выберите каталог, в котором будете выполнять операции. Если такого каталога нет, создайте его:

Консоль управления
CLI
API
  1. В консоли управления в списке слева выберите нужное облако.

  2. Справа сверху нажмите кнопку Создать каталог.

  3. Введите имя каталога. Требования к имени:

    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  4. (Опционально) Введите описание каталога.

  5. Выберите опцию Создать сеть по умолчанию. Будет создана сеть с подсетями в каждой зоне доступности. Также в этой сети будет создана группа безопасности по умолчанию, внутри которой весь сетевой трафик разрешен.

  6. Нажмите кнопку Создать.

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

  1. Посмотрите описание команды создания каталога:

    yc resource-manager folder create --help
    
  2. Создайте новый каталог:

    • с именем и без описания:

      yc resource-manager folder create \
         --name new-folder
      
      • длина — от 2 до 63 символов;
      • может содержать строчные буквы латинского алфавита, цифры и дефисы;
      • первый символ — буква, последний — не дефис.
    • с именем и описанием:

      yc resource-manager folder create \
         --name new-folder \
         --description "my first folder with description"
      

Воспользуйтесь методом create для ресурса Folder сервиса Yandex Resource Manager.

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

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

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

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

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

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

Создайте сервисный аккаунт для ресурсовСоздайте сервисный аккаунт для ресурсов

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

  1. Запишите в переменную идентификатор каталога из конфигурации вашего профиля CLI:

    Bash
    PowerShell
    FOLDER_ID=$(yc config get folder-id)
    
    $FOLDER_ID = yc config get folder-id
    
  2. Создайте сервисный аккаунт:

    Bash
    PowerShell
    yc iam service-account create --name k8s-res-sa-$FOLDER_ID
    
    yc iam service-account create --name k8s-res-sa-$FOLDER_ID
    
  3. Запишите в переменную идентификатор сервисного аккаунта:

    Bash
    PowerShell
    RES_SA_ID=$(yc iam service-account get --name k8s-res-sa-${FOLDER_ID} --format json | jq .id -r)
    
    $RES_SA_ID = (yc iam service-account get --name k8s-res-sa-$FOLDER_ID --format json | ConvertFrom-Json).id
    
  4. Назначьте сервисному аккаунту роль k8s.clusters.agent на каталог:

    yc resource-manager folder add-access-binding \
      --id $FOLDER_ID \
      --role k8s.clusters.agent \
      --subject serviceAccount:$RES_SA_ID
    
  5. Назначьте сервисному аккаунту роль vpc.publicAdmin на каталог:

    yc resource-manager folder add-access-binding \
      --id $FOLDER_ID \
      --role vpc.publicAdmin \
      --subject serviceAccount:$RES_SA_ID
    

Создайте сервисный аккаунт для узлов кластераСоздайте сервисный аккаунт для узлов кластера

Чтобы создать сервисный аккаунт, от имени которого узлы Managed Service for Kubernetes будут скачивать из реестра необходимые Docker-образы.

  1. Запишите в переменную идентификатор каталога из конфигурации вашего профиля CLI:

    Bash
    PowerShell
    FOLDER_ID=$(yc config get folder-id)
    
    $FOLDER_ID = yc config get folder-id
    
  2. Создайте сервисный аккаунт:

    Bash
    PowerShell
    yc iam service-account create --name k8s-node-sa-$FOLDER_ID
    
    yc iam service-account create --name k8s-node-sa-$FOLDER_ID
    
  3. Запишите в переменную идентификатор сервисного аккаунта:

    Bash
    PowerShell
    NODE_SA_ID=$(yc iam service-account get --name k8s-node-sa-${FOLDER_ID} --format json | jq .id -r)
    
    $NODE_SA_ID = (yc iam service-account get --name k8s-node-sa-$FOLDER_ID --format json | ConvertFrom-Json).id
    
  4. Назначьте сервисному аккаунту роль container-registry.images.puller на каталог:

    yc resource-manager folder add-access-binding \
      --id $FOLDER_ID \
      --role container-registry.images.puller \
      --subject serviceAccount:$NODE_SA_ID
    

Создайте группы безопасностиСоздайте группы безопасности

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

Важно

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

Подготовьте ресурсы KubernetesПодготовьте ресурсы Kubernetes

Создайте кластер Managed Service for KubernetesСоздайте кластер Managed Service for Kubernetes

Совет

В данном примере используются базовые параметры кластера. Часть настроек, например выбор Container Network Interface, шифрование секретов с помощью Yandex Key Management Service и ряд других, нельзя изменить после создания кластера. Рекомендуем ознакомиться с подробной инструкцией по созданию кластера Managed Service for Kubernetes.

Создайте кластер Managed Service for Kubernetes и укажите ранее созданные сервисные аккаунты во флагах --service-account-id и --node-service-account-id и группы безопасности во флаге --security-group-ids.

Bash
PowerShell

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

yc managed-kubernetes cluster create \
  --name k8s-demo \
  --network-name yc-auto-network \
  --zone ru-central1-a \
  --subnet-name yc-auto-subnet-0 \
  --public-ip \
  --service-account-id $RES_SA_ID \
  --node-service-account-id $NODE_SA_ID \
  --security-group-ids <идентификаторы_групп_безопасности>

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

yc managed-kubernetes cluster create `
  --name k8s-demo `
  --network-name yc-auto-network `
  --zone ru-central1-a `
  --subnet-name yc-auto-subnet-0 `
  --public-ip `
  --service-account-id $RES_SA_ID `
  --node-service-account-id $NODE_SA_ID `
  --security-group-ids <идентификаторы_групп_безопасности>

Создайте группу узлов Managed Service for KubernetesСоздайте группу узлов Managed Service for Kubernetes

  1. Проверьте, что создание кластера Managed Service for Kubernetes успешно завершено.

    1. В консоли управления выберите каталог, в котором был создан кластер Managed Service for Kubernetes.
    2. В списке сервисов выберите Managed Service for Kubernetes.
    3. Проверьте, что кластер Managed Service for Kubernetes успешно создан:
      • В столбце Статус должно быть указано Running.
      • В столбце Состояние должно быть указано Healthy.
  2. Создайте группу узлов Managed Service for Kubernetes и укажите ранее созданные группы безопасности во флаге --network-interface security-group-ids:

    Bash
    PowerShell
    yc managed-kubernetes node-group create \
      --name k8s-demo-ng \
      --cluster-name k8s-demo \
      --platform standard-v3 \
      --cores 2 \
      --memory 4 \
      --core-fraction 50 \
      --disk-type network-ssd \
      --fixed-size 2 \
      --network-interface subnets=yc-auto-subnet-0,ipv4-address=nat,security-group-ids=[<идентификаторы_групп_безопасности>] \
      --async
    
    yc managed-kubernetes node-group create `
      --name k8s-demo-ng `
      --cluster-name k8s-demo `
      --platform standard-v3 `
      --cores 2 `
      --memory 4 `
      --core-fraction 50 `
      --disk-type network-ssd `
      --fixed-size 2 `
      --network-interface subnets=yc-auto-subnet-0,ipv4-address=nat,security-group-ids=[<идентификаторы_групп_безопасности>] `
      --async
    

Подготовьте ресурсы Container RegistryПодготовьте ресурсы Container Registry

Создайте реестрСоздайте реестр

Создайте реестр контейнеров:

yc container registry create --name yc-auto-cr

Сконфигурируйте Docker Credential helperСконфигурируйте Docker Credential helper

Для упрощения аутентификации в Container Registry сконфигурируйте Docker Credential helper. Он позволяет работать с приватными реестрами Yandex Cloud, не выполняя команду docker login.

Для настройки Credential helper выполните команду:

yc container registry configure-docker

Подготовьте Docker-образПодготовьте Docker-образ

Соберите Docker-образ и загрузите его в реестр.

  1. Создайте Dockerfile hello.dockerfile и сохраните в него следующие строки:

    FROM ubuntu:latest
    CMD echo "Hi, I'm inside"
    
  2. Соберите Docker-образ.

    1. Получите идентификатор реестра, созданного ранее, и запишите его в переменную:

      Bash
      PowerShell
      REGISTRY_ID=$(yc container registry get --name yc-auto-cr --format json | jq .id -r)
      
      $REGISTRY_ID = (yc container registry get --name yc-auto-cr --format json | ConvertFrom-Json).id
      
    2. Соберите Docker-образ:

      docker build . -f hello.dockerfile -t cr.yandex/$REGISTRY_ID/ubuntu:hello
      
    3. Загрузите Docker-образ в реестр:

      docker push cr.yandex/${REGISTRY_ID}/ubuntu:hello
      
  3. Проверьте, что Docker-образ загрузился в реестр:

    yc container image list
    

    Результат:

    +----------------------+---------------------+-----------------------------+-------+-----------------+
    |          ID          |       CREATED       |            NAME             | TAGS  | COMPRESSED SIZE |
    +----------------------+---------------------+-----------------------------+-------+-----------------+
    | crpa2mf008mp******** | 2019-11-20 11:52:17 | crp71hkgiolp********/ubuntu | hello | 27.5 MB         |
    +----------------------+---------------------+-----------------------------+-------+-----------------+
    

Подключитесь к кластеру Managed Service for KubernetesПодключитесь к кластеру Managed Service for Kubernetes

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

Запустите тестовое приложениеЗапустите тестовое приложение

Запустите под с приложением из Docker-образа и убедитесь, что для загрузки Docker-образа не потребовалась дополнительная аутентификация в Container Registry.

  1. Запустите под с приложением из Docker-образа:

    kubectl run --attach hello-ubuntu --image cr.yandex/${REGISTRY_ID}/ubuntu:hello
    
  2. Найдите запущенный под и посмотрите его полное имя:

    kubectl get po
    

    Результат:

    NAME                           READY  STATUS     RESTARTS  AGE
    hello-ubuntu-5847fb9***-*****  0/1    Completed  3         61s
    
  3. Посмотрите логи контейнера, запущенного на этом поде:

    kubectl logs hello-ubuntu-5847fb9***-*****
    

    Результат:

    Hi, I'm inside
    

    Под загрузил Docker-образ без дополнительной аутентификации на стороне Container Registry.

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

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

  1. Удалите кластер Managed Service for Kubernetes:

    yc managed-kubernetes cluster delete --name k8s-demo
    
  2. Удалите сервисные аккаунты:

    Важно

    Не удаляйте сервисный аккаунт до удаления кластера Managed Service for Kubernetes.

    • Удалите сервисный аккаунт для ресурсов:

      yc iam service-account delete --id $RES_SA_ID
      
    • Удалите сервисный аккаунт для узлов Managed Service for Kubernetes:

      yc iam service-account delete --id $NODE_SA_ID
      
  3. Удалите ресурсы Container Registry.

    1. Узнайте имя Docker-образа, загруженного в реестр:

      Bash
      PowerShell
      IMAGE_ID=$(yc container image list --format json | jq .[0].id -r)
      
      $IMAGE_ID = (yc container image list --format json | ConvertFrom-Json).id
      
    2. Удалите Docker-образ:

      yc container image delete --id $IMAGE_ID
      
    3. Удалите реестр:

      yc container registry delete --name yc-auto-cr
      

См. такжеСм. также

  • Docker-образ в Container Registry.
  • Аутентифицироваться в Container Registry.
  • Пошаговые инструкции для Container Registry.

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

Предыдущая
Установка Ingress-контроллера NGINX с сертификатом из Certificate Manager
Следующая
Подпись и проверка Docker-образов Container Registry
Проект Яндекса
© 2025 ООО «Яндекс.Облако»