Развернуть образ из Container Registry в Managed Kubernetes
Вы можете разворачивать приложения в Managed Kubernetes из образов, которые вы храните в Container Registry.
Подготовить окружение
Перед началом работы:
- Создайте кластер Managed Kubernetes.
- Настройте kubectl.
- Создайте реестр Container Registry.
- Получите токен — логин (username) и пароль (password).
Загрузить образ в Container Registry
-
Введите логин (username) и пароль (password).
-
Присвойте образу тег:
docker tag <image> cr.selcloud.ru/<registry>/<image>:<tag>
Укажите:
<image>
— имя образа, можно посмотреть с помощьюdocker image list
<registry>
— имя реестра, в который нужно загрузить образ;<tag>
— тег.
-
Загрузите образ в реестр:
docker push cr.selcloud.ru/<registry>/<image>:<tag>
Создать секрет
Чтобы развернуть образ контейнера в кластере Managed Kubernetes, создайте объект Secret — секрет.
-
Создайте секрет:
kubectl create secret docker-registry <secret_name> \ --docker-server=cr.selcloud.ru \ --docker-username=<username> \ --docker-password=<password> \ --namespace=<namespace>
Укажите:
<secret_name>
— имя секрета;<username>
— пользователь, созданный при получении токена;<password>
— пароль, созданный при получении токена;<namespace>
— опционально: если вы создаете контейнер в пространстве имен, отличном от default, укажите имя своего пространства имен.
-
Проверьте, что секрет создан:
kubectl get secret <secret_name> --output=yaml
Развернуть приложение из образа
-
Создайте файл deployment.yaml:
nano deployment.yaml
-
Скопируйте в файл содержимое:
apiVersion: apps/v1 kind: Deployment metadata: name: example-deployment labels: app: example-deployment spec: replicas: 2 selector: matchLabels: app: example-deployment template: metadata: labels: app: example-deployment spec: containers: - name: <image_name> image: cr.selcloud.ru/<registry>/<image>:latest imagePullSecrets: - name: <secret_name>
Укажите:
<registry>
— имя реестра;<image_name>
— имя образа;<secret_name>
— имя секрета.
-
Разверните приложение:
kubectl apply -f deployment.yaml
-
Проверьте статус подов — они должны быть в статусе running:
kubectl get pods