Доступ к изображениям ecr из контейнера jenkins docker ecs

Привет эксперты Jenkins / Docker -

Материал, который работает:

Используя предложенный здесь подход, я смог запустить образ докера Jenkins в кластере AWS ECS. С помощью -v объемные крепления для док-станции (/var/run/docker.sock) и докер (/usr/bin/docker) Я также могу получить доступ к процессу докера из контейнера Jenkins.

Вещи, которые не являются:

Последняя проблема, с которой я сталкиваюсь, это получение / отправка изображений в реестр AWS ECR и из него. Когда я пытаюсь выполнить команды Docker Pull / Push, я получаю - no basic auth credentials,

Я наткнулся на эту ссылку, объясняя мою проблему. Но я не могу использовать предложенные здесь решения, так как нет ~/.docker/config.json в хост-машине, чтобы поделиться с контейнером док-станции Jenkins.

Какие-либо предложения?

1 ответ

Решение

Пользователям Amazon ECR требуются разрешения для вызова ecr:GetAuthorizationToken, прежде чем они смогут аутентифицироваться в реестре и выдвигать или извлекать любые изображения из любого хранилища Amazon ECR. Amazon ECR предоставляет несколько управляемых политик для управления доступом пользователей на разных уровнях; для получения дополнительной информации см. ecr_managed_policies

AmazonEC2ContainerRegistryPowerUser

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

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "ecr:GetAuthorizationToken",
            "ecr:BatchCheckLayerAvailability",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetRepositoryPolicy",
            "ecr:DescribeRepositories",
            "ecr:ListImages",
            "ecr:DescribeImages",
            "ecr:BatchGetImage",
            "ecr:InitiateLayerUpload",
            "ecr:UploadLayerPart",
            "ecr:CompleteLayerUpload",
            "ecr:PutImage"
        ],
        "Resource": "*"
    }]
}

Таким образом, вместо использования ~ /.docker / config.json для этого назначьте вышеуказанную роль политики для вашей задачи ECS, и ваша служба контейнера докеров сможет вытолкнуть вытягивающий образ из ECR.

Роли IAM для задач

С помощью ролей IAM для задач Amazon ECS вы можете указать роль IAM, которая может использоваться контейнерами в задаче. Приложения должны подписывать свои запросы API AWS с помощью учетных данных AWS, и эта функция предоставляет стратегию управления учетными данными для использования вашими приложениями, подобно тому, как профили экземпляров Amazon EC2 предоставляют учетные данные для экземпляров EC2. Вместо создания и распространения учетных данных AWS среди контейнеров или использования роли экземпляра EC2 вы можете связать роль IAM с определением задачи ECS или операцией API RunTask. Затем приложения в контейнерах задачи могут использовать AWS SDK или CLI для отправки запросов API авторизованным сервисам AWS.

Преимущества использования ролей IAM для задач

Изоляция учетных данных: контейнер может получать учетные данные только для роли IAM, определенной в определении задачи, которой он принадлежит; Контейнер никогда не имеет доступа к учетным данным, которые предназначены для другого контейнера, который принадлежит другой задаче.

Авторизация. Несанкционированные контейнеры не могут получить доступ к учетным данным роли IAM, определенным для других задач.

Возможность аудита: доступ и регистрация событий доступны через CloudTrail для обеспечения ретроспективного аудита. Учетные данные задачи имеют контекст taskArn, который присоединен к сеансу, поэтому журналы CloudTrail показывают, какая задача использует какую роль.

Но вы должны выполнить эту команду, как указано выше, чтобы получить токен авторизации.

eval $(aws ecr get-login --no-include-email)

Вы получите ответ как

Войти успешно

Теперь вы нажимаете на изображение, когда получаете токен аутентификации из ECR.

docker push xxxxxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/nodejs:test

Автоматизировать ECR логин

Другие вопросы по тегам