Рейтинг:1

Ошибка ImagePullBackOff при извлечении образа докера в другом проекте в Google Cloud

флаг sd

Я пытаюсь вытащить частное изображение из Реестр артефактов репозиторий в Google Cloud из кластера kubernetes, работающего в другом проекте Google Cloud с использованием kubectl.

версия кубернета 1.20.15-gke.1000 

Учетной записи службы для kubernetes уже предоставлены разрешения на доступ к Artifactregistry.reader и storageobject.viewer, поскольку изображение находится в проекте, отличном от учетной записи службы kubernetes.

Я применяю приведенный ниже yaml к команде kubectl.

kubectl применить -f proxy_with_workload_identity.yaml

apiVersion: приложения/v1
вид: развертывание
метаданные:
  имя: тестовое приложение
спецификация:
  селектор:
    метки соответствия:
      приложение: приложение-проект
  стратегия:
    обновление:
      макс. всплеск: 1
      макс. недоступно: 1
    тип: RollingUpdate
  шаблон:
    метаданные:
      этикетки:
        приложение: приложение-проект
    спецификация:
      контейнеры:
        - среда:
            - имя: DB_USER
              значениеОт:
                секретная ссылка:
                  ключ: имя пользователя
                  имя: db-учетные данные
            - имя: DB_PASS
              значениеОт:
                секретная ссылка:
                  ключ: пароль
                  имя: db-учетные данные
            - имя: ИМЯ_БД
              значение: постгрес
          изображение: "us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1" 
          имя: приложение-проект
          порты:
            - контейнерПорт: 9376
              протокол: TCP
        - команда:
            - /cloud_sql_proxy 
            - "-instances=demo-dev:us-central1:1-sql-1=tcp:5432"
          изображение: "gcr.io/cloudsql-docker/gce-proxy: последний"
          имя: облако-sql-прокси
          Ресурсы:
            Запросы:
              процессор: 200 м
              память: 32Ми
          безопасностьКонтекст:
            рунаснонрут: правда
      serviceAccountName: testapp

Образ cloud-sql-proxy извлекается, и контейнер работает, но образ в частном репозитории не извлекается "us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1 "

когда я проверяю стручки, мне показывают эту ошибку:

code = Unknown desc = не удалось извлечь и распаковать образ «us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1:v1»: не удалось разрешить ссылку «us-central1-docker.pkg. dev/myproject/docker-repo/test-app:v1": не удалось авторизоваться: не удалось получить токен oauth: непредвиденный статус: 403 Запрещено

Может ли кто-нибудь сказать мне, как это решить?

Рейтинг:1
флаг pe

Использование изображений из других проектов в вашей конфигурации

На этой странице описывается, как настроить проект, чтобы Deployment Manager мог создавать экземпляры виртуальных машин Compute Engine, используя образы операционной системы, принадлежащие другому проекту.

Надеюсь, вы сможете использовать это для обновления реестра между проектами.

Рейтинг:0
флаг my

У меня была аналогичная проблема на этой неделе. Предположим, что ваш GKE и сервисный аккаунт находятся в проекте A, а реестр артефактов — в проекте B.

  1. Убедитесь, что вы даете Artifexregistry.reader роль в проекте Б (не А)
  2. Убедитесь, что вы назначаете эту роль правильной учетной записи службы. Учетная запись службы, извлекающая образ, является учетной записью службы узла, а не учетной записью службы модуля. В моем случае я использовал GKE Autopilot, настроенный через TerraForm. Из-за ошибки в модуле Terraform учетная запись службы, используемая узлом, По умолчанию (который является учетной записью службы вычислений по умолчанию, например, <project_number>@cloudservices.gserviceaccount.com)

Вы можете проверить, какая учетная запись службы запущена в вашем пуле узлов, с помощью Кластеры контейнеров gcloud описывают... команда.

Надеюсь, это поможет!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.