Я использую Terraform для загрузки Интернета в AWS. Эта ECS с изображением докера выдает ошибку 500, когда я пытаюсь перейти к назначенному DNS-имени A-записи. Для этого сервиса я выделил несколько ресурсов AWS:
Образ Docker:
<some-image>
Соответствующая конфигурация:
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
]
Локальный запуск контейнера докеров дает мне успешный ответ. Ясно, что мне не хватает некоторых ресурсов.
Я поспрашивал, и похоже, что у elb нет хоста резервного контейнера. Значит ли это, что мне нужен ec2 ами и пример? Вот какая у меня конфигурация aws terraform выглядит как (с моими неудачными попытками конфигов ami и instance).
Я не вижу способа в terraform направить эти ресурсы на кластер или сервис secs. В обратном направлении, в ECS никуда. кластер, служба или определение задачи, вижу ли я способ определить ami или экземпляр AWS. Как мне настроить это в терраформе?
Короче говоря, вы не должны связывать ALB / ELB напрямую с экземплярами внутри кластера ECS. Это возможно, но это не согласуется с видением инструмента. Если это то, что вы хотите, вы можете создать экземпляр EC2 с запущенным докером и самостоятельно управлять запуском / остановкой контейнеров.
Если вы хотите использовать службы и кластеры ECS для управления размещением вашего контейнера, вы можете сделать это. Сделано через terraform, cli, cloudformation, ansible и т. Д.
Создайте кластер ECS, чтобы установить имя и arn
Создайте роли IAM для службы ECS и экземпляра кластера ECS. Они указаны в документации и создаются при запуске демонстрационного кластера.
Создайте конфигурацию запуска EC2, которая указывает правильное имя кластера в сценарии пользовательских данных
При необходимости создайте группы безопасности EC2, VPC, подсеть для желаемой настройки.
Создайте группу автоматического масштабирования, которая включает элементы на шагах 2, 3 и 4. Это будет использоваться для управления размером вашего кластера ECS.
Создайте репозиторий ECR, который будет использоваться для хранения ваших образов докеров. Вы также можете получить данные из частного реестра докеров, но на шаге 3 будут дополнительные шаги.
Создайте определения задач, которые будут использоваться для описания того, как ECS должен запускать ваши докер-контейнеры. Определения задач имитируют дух docker-compose, но являются самостоятельными вещами, поэтому вам придется их прочитать.
Создайте ALB, который будет действовать как LB для вашего веб-сервиса. Это будет принимать трафик от клиентов и направлять его к работающим контейнерам докеров.
Создайте службу ECS, которая свяжет ваш ALB с вашей веб-службой, работающей на докере.
Загрузите образ докера в репозиторий ECR, созданный на шаге 6.
Служба ECS будет управлять количеством веб-служб, работающих в кластере, и обеспечивать, чтобы они были присоединены к правильному ALB.