Запуск контейнерного приложения в кластере Managed Kubernetes
В этой лабораторной работе вы соберете и загрузите демонстрационный образ контейнерного приложения в Artifact Registry, создадите кластер Managed Kubernetes и развернете приложение из загруженного образа в кластере Managed Kubernetes.
Для развертывания вы будете использовать следующие сервисы:
Artifact Registry — сервис для хранения, совместного использования и управления Docker-образами и Helm-чартами.
Managed Kubernetes — сервис управления кластерами Kubernetes на вычислительных ресурсах облачной архитектуры Cloud.ru.
sNAT-шлюзы — сервис управления сетевыми шлюзами облака.
Публичный IP-адрес для доступа к виртуальной машине и кластеру Managed Kubernetes с локального устройства.
Для лабораторной работы вам потребуется создать два публичных IP-адреса.
Шаги:
Перед началом работы
Если вы уже зарегистрированы, войдите под своей учетной записью.
1. Сгенерируйте SSH-ключ и загрузите его публичную часть в облако Cloud.ru Evolution
2. Создайте виртуальную машину
Выполните шаги инструкции по созданию виртуальной машины в облаке Cloud.ru Evolution до шага 4 раздела «Порядок работы».
Подключите виртуальную машину к подсети: в разделе Сетевые настройки нажмите Подключить к сети.
В открывшемся боковом меню оставьте значения по умолчанию для полей VPC, Подсети и Группы безопасности.
Нажмите Подключить.
По умолчанию значение группы безопасности — SSH-access_ru.AZ-<availability-zone-number>. Такая настройка позволит подключаться к ВМ по протоколу SSH на TCP-порт 22.
Чтобы у виртуальной машины был доступ в интернет, оставьте активной опцию Назначить публичный IP.
Выберите тип публичного IP-адреса: Плавающий.
В разделе Авторизация пользователя выберите оба метода аутентификации пользователя — Публичный ключ и Пароль.
В выпадающем меню Публичный ключ выберите загруженный ранее публичный SSH-ключ.
Придумайте пароль и введите в поле Пароль.
Нажмите Создать.
На главном экране сервиса «Виртуальные машины» в списке появится новая ВМ. Примерно через минуту ее статус должен измениться на «Запущена».
3. Создайте sNAT-шлюз
Рабочие узлы кластера Managed Kubernetes используют sNAT-шлюз для выхода в интернет. Создайте его:
Перейдите в личный кабинет.
На верхней панели слева нажмите
, выберите Сеть → sNAT-шлюз и нажмите Создать шлюз.
Выберите зону доступности и заполните описание.
Нажмите Создать.
Для sNAT-шлюза потребуется публичный IP-адрес. В случае необходимости вы можете расширить квоту по запросу в техническую поддержку.
4. Создайте кластер Managed Kubernetes
На верхней панели слева нажмите
, выберите Контейнеры → Managed Kubernetes и нажмите Подключить.
Подключение сервиса занимает примерно пять минут.
На странице сервиса Managed Kubernetes нажмите Создать кластер.
На шаге Общие параметры оставьте все значения по умолчанию и нажмите Продолжить.
На шаге Сеть включите опцию Публичный IP-адрес, остальные параметры оставьте по умолчанию и нажмите Продолжить.
Публичный IP — опциональный параметр для кластера Managed Kubernetes. Он необходим, чтобы подключаться к кластеру с локального устройства, а не через виртуальную машину.
На шаге Группы узлов нажмите Добавить группу узлов, в появившемся меню настройки создаваемой группы узлов, оставьте значения по умолчанию и нажмите Продолжить.
На шаге Интеграция оставьте все значения по умолчанию и нажмите Создать.
Создание кластера занимает примерно пять минут.
5. Создайте приватный репозиторий в Artifact Registry и загрузите в него образ контейнера
Соберите и загрузите образ в репозиторий Artifact Registry.
Используйте наше демонстрационное приложение react-hello-world.
Для сборки и тегирования образа на локальном компьютере выполните команду в Docker CLI или любом удобном терминале:
docker build --tag <registry_name>.cr.cloud.ru/react-hello-world https://gitverse.ru/cloudru/evo-containerapp-react-sample.git#master --platform linux/amd64Для загрузки образа выполните команду:
docker push <registry_name>.cr.cloud.ru/react-hello-world:latestУбедитесь, что в реестре появился репозиторий react-hello-world с артефактами образа.
6. Подключитесь с созданной ВМ к кластеру Managed Kubernetes
7. Разверните приложение в Managed Kubernetes
Создайте containerapp-deployment.yaml и откройте его для редактирования:
nano containerapp-deployment.yamlВставьте содержимое манифеста:
apiVersion: apps/v1kind: Deploymentmetadata:name: containerappspec:replicas: 1selector:matchLabels:app: lab-apptemplate:metadata:labels:app: lab-appspec:containers:- name: containerappimage: <registry_name>.cr.cloud.ru/react-hello-world:latestports:- containerPort: 80imagePullPolicy: AlwaysПримените манифест при помощи команды:
kubectl apply -f containerapp-deployment.yamlЧтобы создать внешний балансировщик нагрузки для доступа к приложению из интернета, создайте containerapp-lb.yaml и откройте его для редактирования:
nano containerapp-lb.yamlВставьте содержимое манифеста:
apiVersion: v1kind: Servicemetadata:name: containerapp-lbannotations:loadbalancer.mk8s.cloud.ru/type: "external"loadbalancer.mk8s.cloud.ru/health-check-timeout-seconds: "5"loadbalancer.mk8s.cloud.ru/health-check-interval-seconds: "5"loadbalancer.mk8s.cloud.ru/health-check-unhealthy-threshold-count: "4"loadbalancer.mk8s.cloud.ru/health-check-healthy-threshold-count: "4"spec:type: LoadBalancerselector:app: lab-appports:- port: 80name: cloudru-portСоздайте балансировщик нагрузки при помощи команды:
kubectl apply -f containerapp-lb.yamlПосмотрите созданные сервисы в кластере при помощи команды:
kubectl get svc
После создания внешнего балансировщика нагрузки платформа начнет создание объекта LoadBalancer. После того как балансировщик будет создан и получит публичный IP, IP-адрес отобразится в поле EXTERNAL-IP.
Подождите примерно 5–10 минут и проверьте, получил ли балансировщик нагрузки публичный IP.
После получения IP-адреса проверьте доступность приложения — введите в адресную строку браузера: http://<EXTERNAL-IP>.

Что дальше
В лабораторной работе вы развернули кластер Managed Kubernetes и запустили в нем приложение из приватного реестра Artifact Registry. Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.
- Перед началом работы
- 1. Сгенерируйте SSH-ключ и загрузите его публичную часть в облако Cloud.ru Evolution
- 2. Создайте виртуальную машину
- 3. Создайте sNAT-шлюз
- 4. Создайте кластер Managed Kubernetes
- 5. Создайте приватный репозиторий в Artifact Registry и загрузите в него образ контейнера
- 6. Подключитесь с созданной ВМ к кластеру Managed Kubernetes
- 7. Разверните приложение в Managed Kubernetes
- Что дальше