Вступление
Первоначальная концепция облачных вычислений заключалась в автоматических сервисах по запросу, которые динамически масштабировались для удовлетворения спроса.
Хотя это видение стало реальностью, оно не происходит само по себе. Автоматизация облака сложна и требует специализированных инструментов, опыта и упорной работы.
В этом посте мы продолжим наше исследование.
План состоит в том, чтобы создать контейнер и отправить его в реестр контейнеров, и все это из Bitbucket Pipelines.
Что такое конвейеры Bitbucket?
Определение Bitbucket Pipelines согласно их документации:
Интегрированная служба CI / CD, встроенная в Bitbucket. Он позволяет автоматически создавать, тестировать и даже развертывать код на основе файла конфигурации в вашем репозитории.
По сути, мы создаем для вас контейнеры в облаке. Внутри этих контейнеров вы можете запускать команды (например, на локальном компьютере), но со всеми преимуществами новой системы, настроенной и настроенной для ваших нужд.
Так что именно это означает?
Bitbucket предлагает эту услугу, которая позволяет создавать, тестировать и развертывать код на основе файла конфигурации из репозитория.
Этот файл называется YAML файлом с именем bitbucket-pipelines.yml, который находится в корне репозитория.
Что такое Amazon Elastic Container Registry (ECR)?
Amazon Elastic Container Registry (Amazon ECR) - это управляемая AWS служба реестра образов контейнеров, которая поддерживает частные репозитории образов контейнеров с разрешениями на основе ресурсов с использованием AWS IAM.
Это сделано для того, чтобы указанные пользователи или инстансы Amazon EC2 могли получить доступ к вашим репозиториям и изображениям контейнеров.
Вы можете использовать предпочитаемый интерфейс командной строки для отправки, извлечения и управления образами Docker, образами Open Container Initiative (OCI) и артефактами, совместимыми с OCI.
Amazon ECR содержит следующие компоненты:
- Реестр
Реестр Amazon ECR предоставляется каждой учетной записи AWS; вы можете создавать репозитории образов в своем реестре и хранить в них изображения.
Для получения дополнительной информации см. Частные реестры Amazon ECR.
- Токен авторизации
Ваш клиент должен пройти аутентификацию в реестрах Amazon ECR в качестве пользователя AWS, прежде чем он сможет отправлять и получать изображения.
Для получения дополнительной информации см. Аутентификация в частном реестре.
- Репозиторий
Репозиторий образов Amazon ECR содержит образы Docker, образы Open Container Initiative (OCI) и артефакты, совместимые с OCI.
Для получения дополнительной информации см. Частные репозитории Amazon ECR.
- Политика репозитория
Вы можете контролировать доступ к своим репозиториям и изображениям в них с помощью политик репозитория.
Для получения дополнительной информации см. Политики репозитория.
- Изображение
Вы можете отправлять и извлекать образы контейнеров в свои репозитории. Вы можете использовать эти образы локально в своей системе разработки или использовать их в определениях задач Amazon ECS и спецификациях модулей Amazon EKS.
Дополнительные сведения см. В разделах Использование образов Amazon ECR с Amazon ECS и Использование образов Amazon ECR с Amazon EKS.
Что такое докер?
Docker - это инструмент, предназначенный для упрощения создания, развертывания и запуска приложений с использованием контейнеров.
Контейнеры позволяют разработчику упаковать приложение со всеми необходимыми ему частями, такими как библиотеки и другие зависимости, и развернуть его как один пакет.
Поступая таким образом, благодаря контейнеру, разработчик может быть уверен, что приложение будет работать на любой другой машине Linux, независимо от каких-либо индивидуальных настроек, которые может иметь эта машина, которые могут отличаться от машины, используемой для написания и тестирования кода.
Что такое образ Docker?
Образы Docker - это инструкции, записанные в специальном файле с именем Dockerfile
. Он имеет собственный синтаксис и определяет, какие шаги Docker предпримет для создания вашего контейнера.
Поскольку контейнеры представляют собой только уровни изменений, каждая новая команда, которую вы создаете в образе Docker, будет создавать новый слой в контейнере.
Когда вы запускаете docker build .
в том же каталоге, что и Dockerfile, демон Docker начнет создавать образ и упаковывать его, чтобы вы могли его использовать. Затем вы можете запустить docker run <image-name>
, чтобы запустить новый контейнер.
Настройка конвейера для сборки и развертывания
Настроить конвейер Bitbucket можно двумя способами:
- Прямая запись файла YAML.
- Воспользуйтесь мастером пользовательского интерфейса, предоставленным Bitbucket.
Преимущество использования мастера настройки Bitbucket заключается в том, что он предоставляет некоторые шаблоны, которые переопределяют любое содержимое конфигурации.
В этом руководстве мы отправим образ докера в реестр AWS Elastic Container Registry (ECR).
Сборка приложения и настройка наших учетных данных AWS выполняется простым вызовом команды docker build и созданием канала для отправки нашего образа в ECR.
Чтобы использовать канал, у вас должен быть пользователь IAM, настроенный с программным доступом или роль поставщика веб-идентификации (OIDC), с необходимыми разрешениями для отправки образов докеров в ваш репозиторий ECR.
Вам также необходимо настроить реестр контейнеров ECR, если у вас его еще нет.
Вот руководство AWS Приступая к работе с AWS ECR о том, как настроить новый реестр.
image: atlassian/default-image:2 pipelines: branches: master: - step: name: Build and AWS Setup services: - docker script: # change directory to application folder - cd application-folder # creates variables (timestamp, image name and tag) - export TIMESTAMP="$(date +%Y%m%d)" - export IMAGE_NAME=application - export TAG="$TIMESTAMP" # builds docker image from a local dockerfile - docker build -t application . # tags image as a way to id it by the timestamp - docker tag application application:$TIMESTAMP # use pipe to push the image to AWS ECR - pipe: atlassian/aws-ecr-push-image:1.3.0 variables: AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION: us-east-2 IMAGE_NAME: application:$TIMESTAMP TAGS: "$TIMESTAMP $BITBUCKET_BUILD_NUMBER"
Переменные AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
и AWS_DEFAULT_REGION
настроены как переменные репозитория, поэтому нет необходимости объявлять их в конвейере.
После того, как наш конвейер зафиксирован, Bitbucket генерирует анализ кода вместе с аннотациями, показателями и отчетами.
Если операция прошла успешно, образ приложения должен находиться в репозитории Elastic Container Registry.
Надеюсь, вы нашли эту статью полезной. Спасибо за чтение.
Больше контента на plainenglish.io