Рубрики
Uncategorized

Террафом — Развертывайте образечку Docker на AWS Appleunner от репозитория ECR

В этой статье мы говорим о том, как мы можем развернуть образечку Docker из репозитория ECR на AWS … Помечено с AWS, Terraform, Docker, Devops.

В этой статье мы говорим о том, как мы можем развернуть документ Docker с репозитория ECR на службе AWS Applignner с использованием террафора.

AWS App Runner Runner — это полностью управляемая служба, которая позволяет разработчикам быстро развернуть контейнерные веб-приложения и API, в масштабе и без необходимого опыта инфраструктуры.

Начните с исходного кода или изображения контейнера. Runner App Punner автоматически создает и развертывает веб-приложение и загрузки уравновешивания трафика с шифрованием.

Runner App Runner также автоматически включается вверх или вниз, чтобы соответствовать потребностям вашего трафика. С приложенным бегуном, вместо того, чтобы думать о серверах или масштабирования, у вас есть больше времени, чтобы сосредоточиться на ваших приложениях.

Функции бегуна приложения

AWS приложил много усилий, чтобы сделать все возможное для разработчиков, особенно для мелких проектов, которые не нуждаются в бегинской инфраструктуре. Она имеет:

  • Простое автоматическое масштабирование : Информации начинаются и остановлены в качестве изменений спроса, между настраиваемыми мин и максимальными пределами.
  • Балансировка нагрузки : Услуга включает в себя прозрачный, не настраиваемый балансировщик нагрузки.
  • SSL включен : Вы получаете конечные точки HTTPS для всех ваших приложений с AWS-управляемыми сертификатами. Вам не нужно выдавать или возобновлять сертификаты.
  • Создание сервиса : Вы можете протолкнуть свои собственные изображения или позволить AWS построить их для вас из кода.
  • Постоянные URL-адреса : Услуга назначает случайно генерируемые URL для каждой среды. Вы можете необязательно сопоставить их до областей своих собственных доменов.

Приложение бегун может работать в двух режимах.

  1. В режиме сборки AWS вытягивает код из GitHub и создает приложение на каждом изменении.

  2. В режиме контейнеров он развертывает докеренные совместимые изображения от публичных или частных реестров ECR AWS.

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

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

  • Мы требуем ключа AWS IAM API (ключ доступа и секретный ключ) для создания и удаления разрешений для всех ресурсов AWS.
  • ЭКР репозиторий и докерный образ толкал на нем.
  • Террафом должен быть установлен на машине. Если Terraform не существует, вы можете загрузить и установить его отсюда.

версия

Чтобы построить AWS App Runner, вам нужно соответствовать следующим версиям:

  • Terraform V0.12 или выше * последняя версия AWS поставщика (3.42.0) Настройка приложения Runner в поставщике Terraform AWS

На этот раз я построил его со следующей версией.

$ terraform version
Terraform v1.0.0
on linux_amd64

Ресурсы Amazon созданы с использованием террафора

Модуль Terraform — это набор файлов конфигурации террафора в одном каталоге. Даже простая конфигурация, состоящая из одного каталога с одним или несколькими .tf Файлы — это модуль. Когда вы запускаете команды Terraporm непосредственно из такого каталога, он считается корневым модулем

  1. IAM модуль
  • IAM роль и политика
  1. Утверждающий модуль
  • Конфигурация автоматического масштабирования
  • AWS Applunner Service

Создайте роль IAM, чтобы предоставить app runner

Настройте роль IAM, чтобы построить AWS App Runner. Ключ build.approunner.amazonaws.com это tasks. combinunner.amazonaws.com указать и для службы, на которую присваивается предположение. После этого AWS подготовил политику для Runner App Runner, поэтому прикрепите его к роли IAM.

resource "aws_iam_role" "role" {
   name = "test-role"
   assume_role_policy = <

Создайте приложение Runner

Наконец, создайте ресурс бегуна приложения в террафоре. Есть некоторые ресурсы, связанные с бегуном приложения, но они являются основными ресурсами для фактического создания приложения Runner AWS_ABRUNNER_SERVICE, Source_Configuration

У нас есть 2 способа развертывания приложения Runner с репозиторий ECR.

  • Разверните приложение Runner с ECR Частный репозиторий
  • Развернуть приложение Runner с публичным хранилищем ECR

Разверните приложение Runner с ECR Частный репозиторий

resource "aws_apprunner_auto_scaling_configuration_version" "ngnix-apprunner-autoscaling" {
  auto_scaling_configuration_name = "demo_auto_scalling"
  max_concurrency = 100
  max_size        = 5
  min_size        = 1

  tags = {
    Name = "demo_auto_scalling"
  }
}

resource "aws_apprunner_service" "ngnix-apprunner-service-ecr" {
  service_name = "demo_apprunner"

  source_configuration {
    image_repository {
      image_configuration {
        port = "80"
      }
      image_identifier      = "XXXXX.dkr.ecr.us-east-2.amazonaws.com/nginx-web:latest"
      image_repository_type = "ECR"
    }
    authentication_configuration{
      access_role_arn = aws_iam_role.role.arn
    }
    auto_deployments_enabled = true
  }

  auto_scaling_configuration_arn = aws_apprunner_auto_scaling_configuration_version.ngnix-apprunner-autoscaling.arn

  health_check_configuration {
          healthy_threshold   = 1
          interval            = 10
          path                = "/"
          protocol            = "TCP"
          timeout             = 5
          unhealthy_threshold = 5
        }

  tags = {
    Name = "demo_apprunner"
  }
}

Развернуть приложение Runner с публичным хранилищем ECR

Примечание: В таком подходе нам не нужна роль IAM.

resource "aws_apprunner_auto_scaling_configuration_version" "ngnix-apprunner-autoscaling" {
  auto_scaling_configuration_name = "demo_auto_scalling"
  max_concurrency = 100
  max_size        = 5
  min_size        = 1

  tags = {
    Name = "demo_auto_scalling"
  }
}

resource "aws_apprunner_service" "ngnix-apprunner-service-ecr-public" {
  service_name = "demo_apprunner"

  source_configuration {
    image_repository {
      image_configuration {
        port = var.port
      }
      image_identifier      = "public.ecr.aws/nginx/nginx:latest"
      image_repository_type = "ECR_PUBLIC"
    }
    auto_deployments_enabled = false
  }

  auto_scaling_configuration_arn = aws_apprunner_auto_scaling_configuration_version.ngnix-apprunner-autoscaling.arn

  health_check_configuration {
          healthy_threshold   = 1
          interval            = 10
          path                = "/"
          protocol            = "TCP"
          timeout             = 5
          unhealthy_threshold = 5
        }

  tags = {
    Name = "demo_apprunner"
  }
}

Проверьте URL App Runner, созданный путем подачи заявки

Я хочу проверить URL созданного Runner App Runner в качестве результата выполнения команды Apply, поэтому вывод набор.

output "app_runner_url" {
  value = aws_apprunner_service.example.service_url
}

После этого просто запустите следующие команды.

Terraform init Terraform Plan Terraform применять

Для завершения выполнения потребуется от 2 до 3 минут. Когда выполнение завершено, URL будет отображаться, как показано ниже, поэтому давайте доступен на него.

app_runner_url = "xxxxx.us-east-2.awsapprunner.com/"

Спасибо за чтение, если у вас есть что добавить, пожалуйста, отправьте ответ или добавьте записку!

Оригинал: «https://dev.to/prashant_b/terraform-deploy-docker-image-on-aws-apprunner-from-ecr-repository-164c»