본문 바로가기

반응형

AWS

(55)
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #1 - 개요, 아키텍처 개요 간단한 Hello world를 출력하는 Node.js Express 애플리케이션을 Code Pipeline으로 CI/CD 파이프라인 구성을 해볼것이다. 1. IAM IAM이 필요한 서비스로는 Code Pipeline, Code Deploy, Code Build, S3, EC2, ECS 등이 있다. 이에 대한 접근 권한을 각각 알맞게 부여해주어야 한다. API Endpoint 접근 → API Action 권한 2가지 모두 허용이 되어야 한다. 만약 VPC 내부에서만 접근이 가능한 서비스라면 내부용 엔드포인트 서비스를 사용해야 할 것이며 그게 아니라면 Endpoint에 대해서는 걱정하지 않아도 될 것이다. 하지만 API Action에 대해서는 고려해봐야 한다. 특정 서비스에 Endpoint로 접근은 했..
[AWS] ALB, NLB 기본 개념 정리하기 ELB : AWS의 로드밸런서 서비스 - Basic - 서버 부하 분산 - EC2, ECS의 컨테이너, Lambda, .. - 타겟 그룹에 대한 헬스 체크 - 고정 세션 - SSL Offload (SSL 암복호화) - 헬스 체크를 통한 다운 서버 제외 .. - HTTP Header를 조작하여 전달 대상을 정하거나 고정 페이지를 반환, ACM의 SSL 인증서를 탑재하여 EC2의 부하 를 줄이고, WAS를 앞에 내세워 보안 기능을 강화하거나, CF를 연결하여 반응 속도를 향상하며 최근에 나온 Global Accelerator를 사용하여 Global Server Load Balancing (GSLB)의 기능을 활성화시키는 등 다양한 기능을 할 수 있다. - AutoScaling # ELB 아키텍쳐 - AWS의..
[EKS] AWS Load Balancer Controller 알아보기 #2 - 실습 실습 전체적인 순서 cert-manager 배포 ⇒ cert-manager가 설치되어 있지 않을 경우 AWS Load Balancer Controller에서 Certificate를 배포하지 못한다. 미리 설치되어 있어야 한다. AWS Load Balancer Controller 배포 Cluster name, VPC ID, Region Name, AWS Load Balancer Controller 전용 IAM Role ARN 4개의 값을 미리 알고 있어야 한다. ⇒ .yaml 파일에 기입해줘야함. 만약 각각의 값을 넣는 과정이 귀찮다면 쉘 스크립트를 짤 수도 있을 것이다. 데모용 Ingress 배포 ⇒ Pod와 연결된 Service가 있다고 가정할 시 Ingress를 적절하게 생성할 경우 이를 Trigge..
[EKS] AWS Load Balancer Controller 알아보기 #1 - 개념 Amazon EKS Loadbalencer Controller이란? 개념은 사실 간단하다. 쿠버네티스가 외부의 트래픽을 받기 위해 Ingress 리소스를 생성할 경우 자동으로 AWS Load Balancer Controller가 트리거하여 ingress.yaml 템플릿에 명시된대로 로드밸런서를 생성해주는 컨트롤러이다. 즉, Cluster에 Ingress 자원이 생성될 때 ALB 및 필요한 자원이 생성되도록 Trigger하는 컨트롤러이다. Ingress 자원들은 ALB를 구성하여 HTTP 혹은 HTTPS 트래픽을 클러스터 내 Pod로 라우팅하게 된다. 오픈소스인만큼 GitHub에 자세히 설명되어 있음 https://github.com/kubernetes-sigs/aws-load-balancer-contro..
[Bash] S3에 저장되어 있는 AWS FlowLogs 추출하는 Shell Script S3에 저장되어 있는 Flowlogs들은 엄청나게 많이 쌓여 있으며 하나하나 Download하기 굉장히 힘들다. 이러한 이유 때문에 간단한 Script를 짜두면 좋은데 능력이 부족하여 AWS CLI를 통해 간단한 스크립트를 작성하였다. ~/.aws/credentials 파일에 Access Key와 Secret Key가 저장되어 있다고 가정하며 S3 ReadOnly 권한만 있으면 된다. Bash Shell에서 AWS CLI를 이용하여 S3의 객체들을 Download하여 하나의 파일로 저장한 뒤 모든 Log 파일들은 삭제한다. 아래의 정보를 파악한 후 Script를 돌리면 된다. Bucket Name Profile Name ( ~/.aws/credentials) Region Name Flowlogs ID 보..
[CICD] Terraform을 통한 AWS 3 Tier 구성 및 CI/CD 파이프라인 배포 #5 - CodeDeploy를 통한 ASG Blue-Green 배포 #4에서 S3로 zip 파일이 업로도된 것을 확인하였다. CodeDeploy를 통한 war 파일 배포 Tomcat Server에서 S3에 있는 파일을 가져오기 위해 IAM Instance Profile이 해당 WAS EC2에 Attach되어 있어야 한다. 아래의 EC2 Metadata로 잘 붙어있는지 확인할 수 있다. - CodeDeploy Agent 설치 #!/bin/bash sudo yum -y install ruby sudo yum -y install wget cd /home/ec2-user sudo wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install sudo chmod +x ./instal..
[CICD] Terraform을 통한 AWS 3 Tier 구성 및 CI/CD 파이프라인 배포 #4 - Jenkins, Github 연동 및 Maven Build ** Role 설정 CI/CD 작업을 진행하면서 3개의 Role을 생성해주어야 한다. 1. Tomcat IAM Role (tomcat 서버에서 s3에 .zip 파일을 가져올 수 있는 Policy 부여) : S3FullAccess (.zip 파일을 s3에서 가져오기) 2. Jenkins IAM Role (Jenkins가 S3에 파일 업로드하고 CodeDeploy에게 Deployment 생성 및 배포 요청하는 Policy) : S3FullAccess : CodeDeployFullAccess 3. CodeDeploy IAM Role (CodeDeploy가 CD 작업을 수행할 수 있도록 Policy 부여) : AWSCodeDeployRole : CodeDeployAdditionalPolicy (If use La..
[CICD] Terraform을 통한 AWS 3 Tier 구성 및 CI/CD 파이프라인 배포 #3 - 3 Tier 인프라 구축 * 본 글에서는 Terraform 코드에 대한 자세한 설명은 진행하지 않습니다. * - Module은 EC2, VPC, RDS - MySQL 3개만 구현하였고, 나머지는 Resource를 사용하여 인프라를 구현하였다. - 동적으로 Infra의 설정 값을 변경할 수 있도록 variables.tf를 적절히 활용하였고, 각 Test, Dev, Stg, Prd 등 각 환경마다 변수 값을 다르게 설정할 수 있도록 env/~.tfvars 처럼 tfvars 파일을 생성하였다. - 아직 Module화, count, for_each 등의 Terraform 함수들을 활용하여 좀 더 간결하여 동적인 Code로 리팩터링하는 작업이 필요할 것으로 보인다. - Tomcat AMI는 Packer로 생성하였는데, 아래의 링크에서 확..

반응형