Развернуть образ из Container Registry в Managed Kubernetes

Вы можете разворачивать приложения в Managed Kubernetes из образов, которые вы храните в Container Registry.

Подготовить окружение

Перед началом работы:

  1. Создайте кластер Managed Kubernetes.
  2. Настройте окружение kubectl.
  3. Создайте реестр Container Registry.
  4. Получите токен — логин (username) и пароль (password).

Загрузить образ в Container Registry

  1. Авторизуйтесь в реестре.
  2. Введите логин (username) и пароль (password).
  3. Присвойте образу тег:

    docker tag <image> cr.selcloud.ru/<registry>/<image>:<tag>

    Укажите:

    • <image> — имя образа, можно посмотреть с помощью docker image list
    • <registry> — имя реестра, в который нужно загрузить образ;
    • <tag> — тег.
  4. Загрузите образ в реестр:

    docker push cr.selcloud.ru/<registry>/<image>:<tag>

Создать секрет

Чтобы развернуть образ контейнера в кластере Managed Kubernetes, создайте объект Secret — секрет.

  1. Создайте секрет:

    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> — укажите имя своего namespace, если вы создаете контейнер в пространстве имён, отличном от default.
  2. Проверьте, что секрет создан:

    kubectl get secret <secret_name> --output=yaml

Развернуть приложение из образа

  1. Создайте файл deployment.yaml:

    nano deployment.yaml
  2. Скопируйте в файл содержимое:

    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> — имя секрета.
  3. Разверните приложение:

    kubectl apply -f deployment.yaml
  4. Проверьте статус подов — они должны быть в статусе running:

    kubectl get pods