반응형
AWS Architecture
- Fargate에 웹/앱 서비스 배포
- Fargate(web - was) - RDS 연동으로 3tier 아키텍처 구축
- HPA AutoScaling 자동화
- CloudWatch Container Insights로 EKS 모니터링
- 배치 작업으로 CloudWatch 로그를 매일 정각에 S3로 보관, 180일 경과된 로그는 S3 Glacier로 보관
- EKS Pod CPU Utilization 및 Memory Utilization 에 따른 SNS 알림
- ACM인증을 통한 Nginx Ingress(Network LoadBalancer)
목적
- Terraform으로 3tier 인프라 구축을 자동화하여 안전하고 효율적인 프로비저닝 기대
- 모니터링과 SNS 알림으로 실시간 장애 탐지
- S3 스토리지에 로그를 보관함으로써 시스템 취약점 분석 가능
Terraform 파일 구성 및 Github URL
https://github.com/miracle-21/fargate-cloudwatch-sns-terraform
GitHub - miracle-21/fargate-cloudwatch-sns-terraform: Fargate - CloudWatch - SNS 자동화
Fargate - CloudWatch - SNS 자동화. Contribute to miracle-21/fargate-cloudwatch-sns-terraform development by creating an account on GitHub.
github.com
파일명 | 설명 |
00. var.tf | Terraform 파일에서 사용되는 변수 |
01. init.tf | Terraform 설정 파일 |
02. vpc.tf | VCP 생성 |
03. eks.tf | EKS 클러스터, 노드그룹, IAM 역할 및 IAM 정책 생성 |
04. fargate.tf | fargate profile, fargate 배포, IAM 역할 및 IAM 정책 생성 |
05. sg.tf | 클러스터 및 데이터베이스 보안 그룹 |
06. bastion.tf | kubenetes 및 AWS CLI가 설치된 bastion 생성 |
07. rds.tf | MariaDB RDS 생성 |
08. sns.tf | CloudWatch 메트릭, SNS 주제, SNS 구독 대상 지정 |
기능 테스트
1. EKS 모니터링을 위한 Container Insights 및 로그 그룹
- bastion.tf 배포 시 쉘 스크립트 자동 실행
- CLI로 EKS 클러스터 환경에 맞게 yaml 파일 수정 후 배포
# eks.sh
cd /home/ec2-user/ && git clone https://github.com/miracle-21/yaml_file.git
sed -i 's/{{cluster_name}}/'${cluname}'/;s/{{region_name}}/'${region}'/;s/{{http_server_toggle}}/"'${FluentBitHttpServer}'"/;s/{{http_server_port}}/"'${FluentBitHttpPort}'"/;s/{{read_from_head}}/"'${FluentBitReadFromHead}'"/;s/{{read_from_tail}}/"'${FluentBitReadFromTail}'"/' /home/ec2-user/yaml_file/fluent-bit.yaml
sudo -u ec2-user kubectl apply -f /home/ec2-user/yaml_file/fluent-bit.yaml
- Containcer Insights 생성 결과
- CloudWatch 로그그룹 생성 결과
2. CloudWatch 로그 자동 백업
- EventBridge로 매일 자정에 CloudWatch로그를 S3에 보관하는 배치 작업 설정
3. EKA Pod 부하테스트 및 오토스케일링 테스트
- (Jmeter)로드발란서를 타깃으로 1초에 500명씩 800번 연속 접속
- 부하 증가에 따라 pod 개수가 2개에서 3개로 증가
4. CPU와 메모리 사용량에 따른 SNS 알림
- pod cpu utilization 경보 발생
- 설정한 대상의 이메일 주소로 알림 수신 확인
5. NLB에 ACM 인증서 등록
- var.tf에 등록된 변수 ACM_ARN 값에 따라 nginx controller 배포
6. ArgoCD로 서비스 자동 배포
- bastion.tf 배포 시 ArgoCD 자동 설치
- 로그인 후 ArgoCD로 서비스 자동 배포
반응형
'하이브리드 클라우드 엔지니어 양성 과정 > 프로젝트' 카테고리의 다른 글
EKS 바탕의 AWS 인프라 구축(ingress - nginx - tomcat - rds) (0) | 2023.06.16 |
---|