Начало работы с Amazon Elastic Container Registry

Amazon Elastic Container Registry (ECR) — это полностью управляемый реестр контейнеров Docker, который предлагает удобный и безопасный способ хранения, управления и развертывания образов Docker.

В этой статье вы получите обзор основных возможностей ECR, а также узнаете, как выполнять некоторые из наиболее распространенных задач ECR:

— Создание репозитория Amazon ECR

— Подключение к Amazon ECR с помощью AWS CLI

— Отправка образа Docker в ECR

Что такое Amazon ECR?

При работе с образами Docker вы часто будете выталкивать и извлекать их из реестра контейнеров, который используется для хранения и централизованного доступа. Самым популярным реестром является Docker Hub, который является общедоступным, но многие облачные провайдеры предлагают частные реестры контейнеров. Elastic Container Registry от AWS — один из таких реестров, предоставляющий собственный реестр для вашей учетной записи AWS.

ECR изначально интегрирован с другими службами AWS, такими как ECS, EKS и App Runner.

Ценообразование ECR

Amazon Elastic Container Registry не требует предварительных затрат. Ценообразование ECR основано на следующих факторах:

— Хранение: Изображения, хранящиеся в ECR, оплачиваются по $0,10 за ГБ/мес.

— Трафик на выходе: Трафик, который выходит из ECR, например, запросы на извлечение; входящий трафик (трафик, входящий в ECR или загруженный в него) является бесплатным.

Используйте калькулятор цен AWS для создания индивидуальной оценки ECR.

AWS Free Tier — если вы новый клиент AWS, вы получаете 500 МБ / месяц хранения для ваших частных репозиториев на один год. Как новые, так и существующие клиенты получают 50 ГБ / месяц бесплатного хранения для своих публичных хранилищ.

Безопасность образов контейнеров

Сканирование образов Amazon ECR помогает выявить уязвимости безопасности, которые могут существовать в ваших образах контейнеров. ECR предлагает следующие типы сканирования:

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

— Улучшенное сканирование с помощью Amazon Inspector: ECR интегрируется с Amazon Inspector, который представляет собой управляемое решение для сканирования программного обеспечения, обеспечивающее автоматизированное непрерывное сканирование образов, находящихся в вашем реестре. Вы можете сканировать изображения в любое время, когда они попадают в ECR, а также сканировать изображения, которые уже находятся в ECR. Amazon Inspector сканирует пакеты операционной системы и языка программирования образа. Результаты возвращаются в консоль ECR & Inspector.

По умолчанию Amazon ECR включает базовое сканирование всех частных реестров.

Настройка Amazon ECR

Предварительные условия

Прежде чем использовать Amazon ECR, убедитесь, что у вас установлены:

  1. Docker

  2. AWS CLI. Если вам необходимо установить или обновить, смотрите раздел Установка AWS CLI.

Создание частного репозитория контейнеров с помощью консоли управления AWS

В ECR образы контейнеров хранятся в репозиториях. Репозитории контейнеров могут быть общедоступными или частными. Публичный репозиторий — это место, куда любой может загружать и извлекать образы. При использовании частного репозитория наши образы будут храниться конфиденциально, и только человек с соответствующими разрешениями сможет извлечь эти образы.

Следующие шаги позволяют создать частный репозиторий с помощью консоли управления AWS Management Console.

  1. В строке поиска консоли введите ECR и выберите Elastic Container Registry.

  2. Для параметров видимости выберите Private. Нажмите на кнопку Create Repository.

  3. Введите имя для вашего хранилища. Я назвал свое хранилище my-app.

4. Tag Immutablity предотвращает перезапись тегов изображений.

5. Scan on push означает, что сканирование образа на предмет уязвимостей будет производиться каждый раз, когда новый образ будет загружен в хранилище.

6. Для KMS-шифрования вы можете включить шифрование изображений в хранилище на стороне сервера с помощью AWS Key Management Service.

7. Нажмите на кнопку Create Repository. Когда репозиторий будет создан, результат будет выглядеть следующим образом:

Создание пользователя IAM

ECR использует AWS IAM для аутентификации и авторизации пользователей для отправки и извлечения изображений. Чтобы использовать наш только что созданный репозиторий, нам нужно создать пользователя IAM, которому будет разрешено использовать службу ECR.

  1. В строке поиска консоли введите IAM и выберите первый вариант.

  2. В панели навигации выберите Пользователи, затем нажмите на Добавить пользователей.

  3. Введите имя пользователя (в моем случае ecr-repo) и установите флажок рядом с Programmatic Access.

4. Нажмите Далее: Разрешения.

5. В разделе Установить разрешения выберите Прикрепить существующие политики напрямую. Выполните поиск контейнера. Выберите AmazonEC2ContainerRegistryFullAccess.

6. Нажмите кнопку Далее: Теги. Это необязательный раздел, в котором вы можете добавить некоторые метаданные пользователя.

7. Нажмите Далее: Обзор, затем выберите Создать пользователя. Загрузите файл .csv, содержащий учетные данные пользователя.

Теперь в терминале введите:

AWS configure
Войти в полноэкранный режим Выйти из полноэкранного режима

Приведенная выше команда предложит вам установить учетные данные AWS. Используйте AWS Acces Key ID и AWS Secret Access Key из предыдущего шага.

Сборка, маркировка и отправка образа Docker в ECR

Чтобы запустить образ Docker в частный репозиторий, мы должны сначала войти в этот репозиторий, чтобы мы могли аутентифицировать себя. AWS предоставляет команду aws ecr get-login-password, которая похожа на команду входа в docker.

Выберите созданный репозиторий и нажмите View push commands.

  1. Скопируйте и вставьте предоставленную команду из консоли в окно терминала. Первая команда дает вам токен авторизации, который действителен в течение 12 часов.
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
Вход в полноэкранный режим Выйти из полноэкранного режима

После выполнения этой команды вы должны увидеть сообщение Login succeeded
в вашем терминале.

2. Если вы еще не сделали этого, создайте локальный образ docker из Dockerfile с помощью команды docker build.

3. Перед отправкой образа Docker в ECR необходимо пометить его URI репозитория. Это настроит команду docker push для отправки образа в определенное хранилище. Пометьте образ, который вы хотите отправить в ECR, URI репозитория, вставив команду docker tag из консоли в окно терминала.

docker tag e9ae3c220b23 aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
Вход в полноэкранный режим Выйдите из полноэкранного режима

Теперь вы готовы к отправке в ECR!

4. Отправьте помеченный образ в репозиторий с помощью команды docker push:

docker push aws_account_id.dkr.ecr.region.amazonaws.com/my-app:latest
Войти в полноэкранный режим Выйти из полноэкранного режима

5.Вы можете просмотреть изображение, которое вы отправили, зайдя в консоль ECR.

Вы также можете просмотреть свое изображение, посетив место его хранения в Amazon S3. Amazon ECR хранит изображения в ведрах Amazon S3, которые управляются ECR для обеспечения высокой доступности. В настоящее время ECR имеет ограничение в 10 000 изображений на хранилище.

РЕЗЮМЕ

Существует множество способов запуска контейнеров на AWS — ECS On Fargate, EC2, App Runner и многие другие. ECR находится в центре всех этих способов. Он позволяет нам надежно развертывать контейнеры для наших приложений и обладает многочисленными преимуществами:

— Полное управление
— безопасность
— высокая доступность
— масштабируемость
— Упрощенный рабочий процесс

Для обеспечения безопасности ваших изображений у вас есть гибкий выбор между базовым и расширенным сканированием с использованием режимов Amazon Inspector.

При использовании ECR нет никаких авансовых платежей или обязательств. Вы платите только за объем данных, хранящихся в ваших хранилищах, и данных, передаваемых в Интернет.

Если у вас есть вопросы или отзывы, пожалуйста, оставьте комментарий.

Вы также можете найти меня в блогах на Hashnode.

Спасибо за чтение!

Оцените статью
devanswers.ru
Добавить комментарий