В этой статье мы говорим о том, как мы можем развернуть документ Docker с репозитория ECR на службе AWS Applignner с использованием террафора.
AWS App Runner Runner — это полностью управляемая служба, которая позволяет разработчикам быстро развернуть контейнерные веб-приложения и API, в масштабе и без необходимого опыта инфраструктуры.
Начните с исходного кода или изображения контейнера. Runner App Punner автоматически создает и развертывает веб-приложение и загрузки уравновешивания трафика с шифрованием.
Runner App Runner также автоматически включается вверх или вниз, чтобы соответствовать потребностям вашего трафика. С приложенным бегуном, вместо того, чтобы думать о серверах или масштабирования, у вас есть больше времени, чтобы сосредоточиться на ваших приложениях.
Функции бегуна приложения
AWS приложил много усилий, чтобы сделать все возможное для разработчиков, особенно для мелких проектов, которые не нуждаются в бегинской инфраструктуре. Она имеет:
- Простое автоматическое масштабирование : Информации начинаются и остановлены в качестве изменений спроса, между настраиваемыми мин и максимальными пределами.
- Балансировка нагрузки : Услуга включает в себя прозрачный, не настраиваемый балансировщик нагрузки.
- SSL включен : Вы получаете конечные точки HTTPS для всех ваших приложений с AWS-управляемыми сертификатами. Вам не нужно выдавать или возобновлять сертификаты.
- Создание сервиса : Вы можете протолкнуть свои собственные изображения или позволить AWS построить их для вас из кода.
- Постоянные URL-адреса : Услуга назначает случайно генерируемые URL для каждой среды. Вы можете необязательно сопоставить их до областей своих собственных доменов.
Приложение бегун может работать в двух режимах.
В режиме сборки AWS вытягивает код из GitHub и создает приложение на каждом изменении.
В режиме контейнеров он развертывает докеренные совместимые изображения от публичных или частных реестров 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 непосредственно из такого каталога, он считается корневым модулем
- IAM модуль
- IAM роль и политика
- Утверждающий модуль
- Конфигурация автоматического масштабирования
- 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»