Вступление

Первоначальная концепция облачных вычислений заключалась в автоматических сервисах по запросу, которые динамически масштабировались для удовлетворения спроса.

Хотя это видение стало реальностью, оно не происходит само по себе. Автоматизация облака сложна и требует специализированных инструментов, опыта и упорной работы.

В этом посте мы продолжим наше исследование.

План состоит в том, чтобы создать контейнер и отправить его в реестр контейнеров, и все это из 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