Docker — Исполнитель Gitlab Не Может Получить Изображения Aws Ecr В Текущей Учетной Записи Aws.

  • Автор темы Zhanna.zotova.72
  • Обновлено
  • 19, Oct 2024
  • #1

GitLab и программы запуска GitLab работают на одном хосте (я знаю, насколько это плохо). К EC2, на котором работает GitLab, прикреплена роль IAM.

Эта роль IAM дает разрешение выполнять некоторые действия с ECR с несколькими счетами.

Бегуны используют Docker в качестве исполнителя и прекрасно берут на себя роль по отправке и извлечению изображений.

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

aws ecr get-login...
and I was able to login on the account.

Я провел небольшой тест: вручную запустил контейнер прямо на хосте GitLab и запустил

Я установил amazon-ecr-credential-helper и настроил, как указано в документе.

Я не понимаю, почему бегуны не могут вытащить изображения из аккаунта...

Zhanna.zotova.72


Рег
01 Nov, 2019

Тем
79

Постов
187

Баллов
592
  • 25, Oct 2024
  • #2

Я использую этот скрипт в gitlab-ci.yml

#!/bin/bash
set -e
apt update -y && apt install awscli make -y
curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb
dpkg -i gitlab-runner_amd64.deb
sed -i -e '/volumes/s/\["\/cache\"]/\["\/cache","\/var\/run\/docker.sock:\/var\/run\/docker.sock"]/' /etc/gitlab-runner/config.toml
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && usermod -aG docker gitlab-runner
gitlab-runner register \

--non-interactive \

--url "https://gitlab.com/" \

--registration-token "${GITLAB_RUNNER_TOKEN}" \

--executor "docker" \

--docker-image "docker:latest" \

--description "gitlab-runner" \

--tag-list "gitlab,runner,aws" \

--run-untagged="true" \

--locked="false" \

--access-level="not_protected"
echo -e "export AWS_SDK_LOAD_CONFIG=true \nexport AWS_REGION=${AWS_REGION}" >> ~/.bashrc
source ~/.bashrc && mkdir ~/.docker
cat <<EOF >>~/.docker/config.json
{

"credsStore": "ecr-login"
}
EOF
git clone https://github.com/awslabs/amazon-ecr-credential-helper.git
cd amazon-ecr-credential-helper/ && make docker
cp bin/local/docker-credential-ecr-login /usr/local/bin/
systemctl restart docker  && gitlab-runner restart
export AWS_REGION=${AWS_REGION} && docker-credential-ecr-login list

... и укажите переменные AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY в разделе «Настройки»/CI-CD.

Убедитесь, что ваш регион с изображениями совпадает с тем, где вы входите в систему.

 

Scottru69


Рег
24 Nov, 2020

Тем
65

Постов
198

Баллов
543
  • 25, Oct 2024
  • #3

Этот скрипт можно использовать в качестве сценария начальной загрузки для регистрации частного запуска Gitlab и настройки бегуна для доступа к AWS ECR. Вы можете использовать Ubuntu 18 LTS AMI и запустить экземпляр AWS EC2 для размещения средства запуска Gitlab.

Прикрепите роль AWS IAM, чтобы предоставить экземпляру EC2 доступ к AWS ECR и двухтактным образам Docker. Кроме того, можно использовать команду awscli AWS configure или экспортировать AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY в качестве переменных среды.

image: docker:19.03
services:
- docker:19.03.0-dind
before_script:
- $(aws ecr get-login --no-include-email --region eu-central-1)
 

Elinnamem


Рег
14 Apr, 2011

Тем
77

Постов
195

Баллов
630
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно