terraform ecs fargate
v3.0.3
一组用于在AWS ECS Fargate上配备Web应用程序堆栈的Terraform模板。
注意:我们建议从这个模板转移到我们的较新的模块化版本。随着TerraForm和AWS提供商的发展,此存储库仍将收到更新,以保持兼容性,但是大多数新功能将在模块中实现。您可以在此处找到该模块:https://github.com/warnermedia/terraform-ecs-fargate-module

这些模板被设计为自定义。可以通过简单地删除.tf文件来删除可选组件。
这些模板用于管理基础架构问题,因此,模板部署了默认的后端Docker映像。我们建议使用Fargate CLI来管理应用程序问题,例如在此基础架构之上部署实际的应用程序图像和环境变量。 Fargate CLI可用于从笔记本电脑或CI/CD管道中部署应用程序。
这些组件由所有环境共享。
| 姓名 | 描述 | 选修的 |
|---|---|---|
| main.tf | AWS提供商,输出 | |
| state.tf | S3存储器存储Terraform远程状态的后端 | |
| ecr.tf | 用于应用的ECR存储库(所有环境共享) |
这些组件适用于特定的环境。每个环境都应有一个相应的目录。
| 姓名 | 描述 | 选修的 |
|---|---|---|
| main.tf | Terronfor远程状态,AWS提供商,输出 | |
| ecs.tf | ECS群集,服务,任务定义,ecstaskexecutionrole,CloudWatch日志组 | |
| lb.tf | ALB,目标组,用于访问日志的S3存储桶 | |
| NSG.TF | NSG用于ALB和任务 | |
| lb-http.tf | HTTP听众,NSG规则。如果仅删除仅https | 是的 |
| lb-https.tf | HTTPS侦听器,NSG规则。如果仅删除仅http | 是的 |
| dashboard.tf | CloudWatch仪表板:CPU,内存和与HTTP相关的指标 | 是的 |
| 角色 | 容器的应用角色 | 是的 |
| cicd.tf | CI/CD系统可以使用的IAM用户 | 是的 |
| Autoscale-perf.tf | 基于性能的自动缩放 | 是的 |
| Autoscale time.tf | 基于时间的自动缩放 | 是的 |
| logs-logzio.tf | 将容器日志运送到logz.io | 是的 |
| Secretsmanager.tf | 使用CMK KMS密钥添加秘密经理秘密。还提供应用程序角色和ECS任务定义角色访问秘密经理阅读秘密的角色访问 | 是的 |
| Secrets-Sidecar.tf | 添加了用于部署应用程序的任务定义配置以及将您的Secrets Manager秘密写入文件的Sidecar容器。请注意,这取决于选择secretsmanager.tf 。 | 是的 |
| SSM-Parameters.tf | 添加一个CMK KMS密钥,以与SSM参数存储一起使用。还可以使ECS任务定义角色访问参数存储的读取秘密。 | 是的 |
| ecs-event-stream.tf | 添加ECS事件日志仪表板 | 是的 |
通常,基本地Terraform只需要运行一次,然后只需要很少需要更改即可。建造基地后,可以构建每个环境。
# 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基本读数
环境dev人员
安装检查Terraform代码是否格式化的预加压钩
ln -s ../../pre-commit.sh .git/hooks/pre-commit