ECS Cluster를 생성하실 떄 Container Insights를 활성화하면 CPU, 메모리, 디스크 및 네트워크 같은 컴퓨팅 사용률과 컨테이너 다시 시작 실패 같은 진단 정보를 수집, 집계 및 요약하여 클러스터 관련 문제를 격리하고 빠르게 해결하는 데 도움을 주도록 ECS 클러스터 리소스 사용률이 Cloudwatch로 로그가 저장됩니다.
Fargate 유형은 awsvpc 밖에 지원하지 않습니다.
ECS Service에 IAM은 작업 정의를 생성할 때 아래 부분에서 설정한다는 것을 명심해야합니다. 즉, 예를 들어서 Task가 S3 Bucket에 대한 접근이 필요하면 Task Role에 S3 Bucket에 대한 접근 권한을 추가해줘야합니다.
Fargate ASG - https://aws.amazon.com/ko/premiumsupport/knowledge-center/ecs-fargate-service-auto-scaling/
Autoscaling은 Role을 신경씁니다. 해당 정책은 아래와 같습니다.
#신뢰 정책{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "application-autoscaling.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Attach Policy: AmazonEC2ContainerServiceAutoscaleRole
만약 사용자가 container insights 활성화하고 싶다면 하시면 됩니다! container insights는 사용해 컨테이너화된 애플리케이션 및 마이크로서비스의 지표 및 로그를 수집하고 집계하며 요약할 수 있습니다
💡 CodeDeploy를 위한 서비스 역할은 아래와 같습니다.
#즉 역할을 생성하실 때 Codedeploy-ECS 용으로 생성하면 됩니다.
#신뢰 관계
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "codedeploy.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
#권한에 연결되어있는 Policy
AWSCodeDeployRoleForECS
VPC를 선택합니다. 그런 다음 Private 영역에 Subnet을 선택하도록 합니다.
보안 그룹은 8080 Port가 열려 있도록 구성합니다. 즉, Container Port와 매칭 시킵니다.
보안상 ECS Service가 생성되면, ALB로만 트래픽이 가도록 인 바운드 규칙을 편집합니다
로드 벨런싱 부분에서 Application Load Balancer를 선택합니다.
로드 벨런서 이름을 확인한 후 로드벨런서에 추가를 선택합니다.
프로덕션 리스너 포트 부분에서 80:HTTP를 선택합니다. 이것은 ALB에 기존 리스너를 말합니다. 그런다음 생성해둔 대상그룹을 선택하도록 합니다. 테스트 리스너를 추가해주도록 하겠습니다. 테스트 리스너 포트는 8080 Port로 설정합니다. 그런 다음 ALB 보안 그룹에 8080 Port를 주가해줍니다. 리스너는 자동으로 8080이 Attach 됩니다! 또한 보안을 고려하면 ALB에 아웃바운드를 80, 443, 8080을 열어주어야합니다.
Blue/ Green 배포 특성상 대상 그룹이 2개가 필요합니다. 하나는 기존에 대상 그룹을 사용하며 하나는 새로 생성해줍니다.
다음 단계 → 다음 단계 → 서비스 생성을 합니다. Blue/ Green 특성상 자동으로 Codedeploy에 대한 Application이 생성됩니다.
이제 작업 부분에서 서비스에서 생성되는 Task에 상태가 Running이 될 때까지 기다립니다.
그리고 꼭 ALB Target그룹에서 Container에 상태를 확인합니다. 즉, Healthy를 확인합니다.