Развернуть Docker-образ в Kubernetes
Если вы храните Docker-образы в Container Registry, вы можете развернуть под в кластере Managed Kubernetes или в кластере Kubernetes, который администрируете самостоятельно.
- Загрузите образ в реестр Container Registry.
- Настройте интеграцию Container Registry с кластером.
- Разверните приложение из образа.
Загрузить образ в 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>
Настроить интеграцию 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
Развернуть приложение из образа
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