Развернуть Docker-образ в Kubernetes
Если вы храните Docker-образы в Container Registry, вы можете развернуть под в кластере Managed Kubernetes или в кластере Kubernetes, который администрируете самостоятельно.
- Загрузите образ в реестр Container Registry.
- Настройте интеграцию Container Registry с кластером.
- Разверните приложение из образа.
1. Загрузить образ в 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>
2. Настроить интеграцию Container Registry с кластером
Для кластера Managed Kubernetes после интеграции данные для аутентификации автоматически добавляются в сервисный аккаунт, используемый по умолчанию, и в секрет ко всем пространствам имен кластера.
В кластере Kubernetes вы создаете объект Secret — секрет с данными токена Container Registry самостоятельно.
Managed Kubernetes
Kubernetes
Вы можете настроить интеграцию из реестра Container Registry с одним или несколькими кластерами Managed Kubernetes.
- В панели управления в верхнем меню нажмите Продукты и выберите Container Registry.
- Откройте вкладку Реестры.
- Откройте страницу реестра.
- Нажмите Доступ к реестру.
- Выберите Интеграция с Kubernetes.
- Нажмите Продолжить.
- Выберите кластеры Managed Kubernetes, которым будет предоставлен доступ к выбранному реестру. Вы можете выбрать только кластеры со статусом
ACTIVE. Кластеры с другими статусами обозначены какINACTIVE. - Если вы настраиваете интеграцию в первый раз, нажмите Интегрировать.
- Если вы изменяете настройки интеграции, нажмите Сохранить.
Информация о кластерах Managed Kubernetes, которым предоставлен доступ к выбранному реестру, отображается на странице реестра, под его названием.
-
Создайте секрет:
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
3. Развернуть приложение из образа
Managed Kubernetes
Kubernetes
-
Создайте файл 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Укажите:
<registry>— имя реестра;<image_name>— имя образа.
-
Разверните приложение:
kubectl apply -f deployment.yaml -
Проверьте статус подов — они должны быть в статусе
running:kubectl get pods
-
Создайте файл 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