Использование Artifact Registry при развертывании приложений в Managed Kubernetes
Вы можете хранить Docker-образы в реестре Artifact Registry и использовать их при развертывании приложений в кластере Managed Kubernetes.
В этом руководстве загрузка образа в реестр и управление кластером Managed Kubernetes осуществляется с помощью виртуальной машины. В качестве примера используется образ nginx из официального репозитория Docker Hub.
Перед началом работы
Заголовок раздела «Перед началом работы»Создайте реестр Artifact Registry с именем
k8s-registry.Создайте NAT-шлюз для подсети, в которой будет развернут кластер Managed Kubernetes.
- C именем
sa-k8sи рольюregistry.puller— для работы группы узлов Managed Kubernetes. - С именем
sa-vmи ролямиeditorиregistry.pusher— для инициализации MWS CLI на виртуальной машине, загрузки образа и работы с утилитойkubectl.
Создайте кластер Managed Kubernetes и группу узлов для него. При создании группы используйте сервисный аккаунт
sa-k8s.Создайте виртуальную машину с внешним IP-адресом в той же сети, где развернут кластер Managed Kubernetes. При создании ВМ привяжите к ней сервисный аккаунт
sa-vm.
1. Подготовьте виртуальную машину
Заголовок раздела «1. Подготовьте виртуальную машину»Подключитесь к ВМ по SSH.
Инициализируйте профиль MWS CLI:
bash mws init --vm-saУстановите утилиту командной строки
kubectl.Получите kubeconfig:
bash mws mk8s get-kubeconfig --name <имя кластера>Убедитесь, что кластер доступен:
bash kubectl cluster-infoЕсли конфигурация настроена правильно, вы получите такой ответ:
bash Kubernetes control plane is running at https://<IP-адрес кластера>KubeDNS is running at https://<IP-адрес кластера>/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
2. Загрузите образ в Artifact Registry
Заголовок раздела «2. Загрузите образ в Artifact Registry»Скачайте образ
nginxиз репозитория Docker Hub:bash docker pull nginx:latestУстановите тег на образ. Тег нужен для идентификации версии образа в репозитории:
bash docker tag nginx:latest registry.mwsapis.ru/<имя проекта>/k8s-registry/nginx:latestЗагрузите образ в репозиторий MWS Artifact Registry:
bash docker push registry.mwsapis.ru/<имя проекта>/k8s-registry/nginx:latest
3. Разверните приложение
Заголовок раздела «3. Разверните приложение»Создайте файл
nginx-deployment.yaml, содержащий манифест для развертывания приложения. В качестве источника образа укажите путь к образу в Artifact Registry:yaml apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentlabels:app: nginxspec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: registry.mwsapis.ru/<имя проекта>/k8s-registry/nginx:latestports:- containerPort: 80resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"---apiVersion: v1kind: Servicemetadata:name: nginx-servicespec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: ClusterIPПримените манифест:
bash kubectl apply -f nginx-deployment.yamlУбедитесь, что под приложения запущен и работает:
bash kubectl get pods -l app=nginxОжидаемый результат:
bash NAME READY STATUS RESTARTS AGEnginx-deployment-dc7b9b9d6-ddd7v 1/1 Running 0 28m
4. Проверьте работу приложения
Заголовок раздела «4. Проверьте работу приложения»Создайте переадресацию порта для сервиса NGINX на виртуальной машине:
bash kubectl port-forward service/nginx-service 8080:80Откройте новую сессию подключения к ВМ, после чего получите содержимое приветственной страницы NGINX:
bash curl http://localhost:8080
Удалите ресурсы
Заголовок раздела «Удалите ресурсы»В руководстве были созданы ресурсы, которые могут тарифицироваться. Если вы не планируете использовать их, удалите: