본문 바로가기

반응형

분류 전체보기

(176)
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #5 - CodeBuild 생성 및 빌드, Fargate 배포 1. CodeBuild 생성 프로젝트 이름, 소스 등을 설정 어떤 환경에서 빌드를 할 것인지 설정 추가 구성 클릭 후 추가 구성하기 제한 시간, VPC 설정, 서브넷 설정, 보안 그룹 설정 등을 할 수 있으며 환경 변수를 buildspec.yml 에서뿐만 아니라 웹 콘솔에서도 가능하다. AccountID는 웹콘솔에 지정해보았음 Buildspec.yml 파일이 어디 있는지, Artifact는 어느 S3의 버킷에 저장되는지 등을 설정할 수 있다. CodeBuild가 지니고 있는 IAM Role에 권한 추가 - CloudWatch Logs 관련 권한 - SecretManager 관련 권한 - ECR 관련 권한 2. Build 수행 빌드 시작을 누르면 빌드를 수행할 수 있다. 빌드 로그 또한 실시간으로 확인할 ..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #4 - buildspec.yml, appspec.yml, taskdef.json 설정 해당 부분에서는 Secret 설정 및 변수 설정 등을 진행하며, appspec.yml과 buildspec.yml, taskdef.json 파일 생성 등에 대해 다룰 것이다. Git에서 형상 변화가 일어나면 CodePipeline이 이를 감지하고, Build → Deploy 까지 배포 자동화 프로세스를 구현하기 위해 스크립트 파일을 잘 작성해야 한다. 또한 생성한 컨테이너 이미지나 빌드 아티팩트들이 S3 혹은 Container Registry에 저장될 수 있도록 Buildspec.yml에서 잘 설정해주어야 한다. 1. Secrets Manager 생성 간단하게 APP_NAME 및 ECR_REPOSITORY_URI 시크릿을 생성해준다. 그 외, 데이터베이스의 암호 등을 이 시크릿 매니저를 통해 설정해 줄 수..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #3 - 테라폼으로 인프라 기본 환경 프로비저닝 Terraform을 활용하여 간단한 인프라 환경을 프로비저닝 하였다. 기본적인 VPC, Security Groups, ECS Cluster, Application Load Balancer, Blue-Green을 위한 Target Group A, B 등을 생성하였다. Dev, Stg, Prd 등 각 환경마다 설정을 다르게 하고 싶다면 env 디렉터리에 각각 설정값을 저장한 tfvars 파일 생성 후 각 Workspace에서 terraform 명령을 수행하면 된다. 예를 들어, Dev 환경 인프라를 만든 후 STG 환경을 만들고싶다면 VPC 대역, ENV 이름 등을 겹치지 않게 수정 후 별도 Workspace에서 terraform init, .. 등을 수행하면 된다. Code Build, Deploy, Pi..
[CICD / ECS] CodePipeline으로 ECS Fargate 배포 자동화 #2 - 도커 빌드 및 테스트 배포 간단하게 Local에서 docker가 정상 작동하는지 확인해 볼 예정이다. ❯ cat server.js 'use strict'; const express = require('express'); // Variables const PORT = 8080; const HOST = '0.0.0.0'; // Application const app = express(); app.get('/', (req, res) => { res.send("Hello world " + process.env.HELLO + " v1"); }); app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`) ❯ cat Dockerfile FROM node:12 WORKDI..
[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..

반응형