Как определить образ частного репозитория в Gitlab Runner

#docker #gitlab #amazon-ecr

#docker #gitlab #amazon-ecr

Вопрос:

У меня есть реестр gitlab runner с docker machine исполнителем, и я настроил свой `.gitlab-ci.yml’, как показано ниже:

 stages:
  - RUN_TESTS
  - CLEAN

image:
  name: <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<NAMESPACE>:<TAG>
 

И изображение <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<NAMESPACE>:<TAG> является частным AWS репозиторием ECR. И это каждый раз терпит неудачу, поскольку это частный репозиторий.

Как я могу настроить это для извлечения этого частного образа?

Я получил пароль ecr с помощью aws ecr get-login-password --region us-east-2 команды, и он дал пароль.

Я изучил этот docker-credential-ecr-login инструмент и установил его в экземпляре runner. И я настроил учетные данные AWS, используя aws configure и учетные данные теперь находятся в ~/.aws/credentials

А также добавьте следующий блок ~/.docker/config.json , как показано ниже:

 "credHelpers": {
        "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login"
    }
 

Но когда я пытаюсь docker pull <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<NAMESPACE>:<TAG> , это выдает следующую ошибку:

Ответ об ошибке от демона: Получить https://Account-ID.dkr.ecr.REGION.amazonaws.com/v2/spot-runner-image/manifests/latest : нет базовых учетных данных для авторизации

Есть ли какое-либо отношение к docker-credential-ecr-login

Ответ №1:

Вы получаете эту ошибку, потому что ваш runner (и / или задание) не проходит проверку подлинности в реестре ECR, прежде чем он попытается извлечь изображение. Вам нужно будет предоставить данные аутентификации в одной из следующих форм:

Документы по настройке DOCKER_AUTH_CONFIG находятся здесь: https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#define-an-image-from-a-private-container-registry.

Чтобы определить, что должно быть в DOCKER_AUTH_CONFIG переменной, вы можете войти в свой реестр со своего локального компьютера с docker login example-registry.example.com --username my_user --password my_password помощью . Это создаст config.json файл в ~/.docker каталоге. Однако на моем mac учетные данные хранятся в моей цепочке ключей, а файл config.json не может быть использован Gitlab. В этом случае вам придется создавать содержимое вручную. Вся эта информация и многое другое содержится в документах: https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#determining-your-docker_auth_config-data