AWS ECS Fargate에서 웹 애플리케이션 스택을 프로비저닝하는 데 사용되는 일련의 테라 양식 템플릿.
참고 :이 템플릿에서 새로운 모듈 식 버전으로 이동하는 것이 좋습니다. 이 repo는 여전히 Terraform과 AWS 제공 업체가 진화함에 따라 호환성을 유지하기위한 업데이트를받을 수 있지만 대부분의 최신 기능은 모듈에서 구현됩니다. 여기에서 모듈을 찾을 수 있습니다 : https://github.com/warnermedia/terraform-ecs-fargate-module

템플릿은 사용자 정의하도록 설계되었습니다. .tf 파일을 간단히 삭제하여 선택적 구성 요소를 제거 할 수 있습니다.
템플릿은 인프라 문제를 관리하는 데 사용되며 템플릿은 기본 백엔드 Docker 이미지를 배포합니다. 이 인프라 위에 실제 애플리케이션 이미지 및 환경 변수를 배포하는 것과 같은 응용 프로그램 문제를 관리하기 위해 Fargate CLI를 사용하는 것이 좋습니다. Fargate CLI는 랩톱 또는 CI/CD 파이프 라인에 응용 프로그램을 배포하는 데 사용될 수 있습니다.
이러한 구성 요소는 모든 환경에서 공유합니다.
| 이름 | 설명 | 선택 과목 |
|---|---|---|
| main.tf | AWS 제공 업체, 출력 | |
| state.tf | Terraform 원격 상태를 저장하기위한 S3 버킷 백엔드 | |
| ecr.tf | 응용 프로그램 용 ECR 저장소 (모든 환경 공유) |
이러한 구성 요소는 특정 환경을위한 것입니다. 필요한 각 환경에 해당 디렉토리가 있어야합니다.
| 이름 | 설명 | 선택 과목 |
|---|---|---|
| main.tf | Terform 원격 상태, AWS 제공 업체, 출력 | |
| ecs.tf | ECS 클러스터, 서비스, 작업 정의, EcstaskexecutionRole, CloudWatch Log Group | |
| lb.tf | ALB, 대상 그룹, 액세스 로그 용 S3 버킷 | |
| NSG.TF | ALB 및 작업용 NSG | |
| lb-http.tf | HTTP 리스너, NSG 규칙. https 만 삭제하십시오 | 예 |
| lb-https.tf | HTTPS 리스너, NSG 규칙. HTTP 만 삭제하십시오 | 예 |
| 대시 보드 .tf | CloudWatch 대시 보드 : CPU, 메모리 및 HTTP 관련 메트릭 | 예 |
| 역할 .tf | 컨테이너의 적용 역할 | 예 |
| cicd.tf | CI/CD 시스템에서 사용할 수있는 iAM 사용자 | 예 |
| 오토 스케일 -perf.tf | 성능 기반 자동 스케일링 | 예 |
| 오토 스케일-시간 .tf | 시간 기반 자동 스케일링 | 예 |
| logs-logzio.tf | 컨테이너 로그를 logz.io에 배송합니다 | 예 |
| Secretsmanager.tf | CMK KMS 키로 비밀 관리자 비밀을 추가하십시오. 또한 앱 역할 및 ECS 작업 정의 역할 액세스를 제공하여 비밀 관리자의 비밀을 읽습니다. | 예 |
| Secrets-Sidecar.tf | 비밀 관리자 비밀을 파일에 쓰는 사이드카 컨테이너와 함께 앱을 배포하기위한 작업 정의 구성을 추가합니다. 이것은 secretsmanager.tf 를 선택하는 데 달려 있습니다. | 예 |
| ssm-parameters.tf | SSM 매개 변수 저장소와 함께 사용할 CMK KMS 키를 추가하십시오. 또한 ECS 작업 정의 역할 액세스를 제공하여 매개 변수 저장소에서 비밀을 읽습니다. | 예 |
| ECS-Event-stream.tf | ECS 이벤트 로그 대시 보드를 추가하십시오 | 예 |
일반적으로베이스 테라 형은 한 번만 실행되면 매우 드물게 변경해야합니다. 베이스가 구축 된 후 각 환경을 구축 할 수 있습니다.
# Move into the base directory
$ cd base
# Sets up Terraform to run
$ terraform init
# Executes the Terraform run
$ terraform apply
# Now, move into the dev environment
$ cd ../env/dev
# Sets up Terraform to run
$ terraform init
# Executes the Terraform run
$ terraform apply
terraform apply 후) 생성 된베이스 .tfstate 는 원격 상태 S3 버킷에 저장되지 않습니다. 기본 .tfstate 가 인프라 리포지션에 체크인 확인하십시오. GitHub에 의해 생성 된 기본 Terraform .gitignore 모든 .tfstate 파일을 무시합니다. 이것을 수정해야합니다!
또는 Fargate-Create CLI를 사용 하여이 템플릿을 기반으로 새로운 프로젝트를 발판 할 수 있습니다.
설치하다
curl -s get-fargate-create.turnerlabs.io | sh 입력 vars 파일 생성 ( terraform.tfvars )
# app/env to scaffold
app = " my-app "
environment = " dev "
internal = true
container_port = " 8080 "
replicas = " 1 "
health_check = " /health "
region = " us-east-1 "
aws_profile = " default "
saml_role = " admin "
vpc = " vpc-123 "
private_subnets = " subnet-123,subnet-456 "
public_subnets = " subnet-789,subnet-012 "
tags = {
application = " my-app "
environment = " dev "
team = " my-team "
customer = " my-customer "
contact-email = " [email protected] "
}$ fargate-create -f terraform.tfvars기본 readme
환경 dev readme
서식에 대한 TerraForm 코드를 확인하는 사전 커밋 후크를 설치하십시오
ln -s ../../pre-commit.sh .git/hooks/pre-commit