AWS 80

CodeSeries를 활용한 CI/CD 구성 (Backend Pipeline)

구성도Backend CI/CD Pipeline CodeCommit에 Dev, Prod 브랜치 생성 (two-branch 전략) 환경별(Dev,Prod) 프론트, 백엔드 파이프라인 구성 (총 4개)  -- 이 페이지에서는 백엔드파이프라인만 설명!CodeBuild는 buildspec.yml(dev-buildspec.yml과 prd-buildspec.yml)을 통해 빌드 및 테스트 진행CodeDeploy는 appspec.yml을 통해 S3 내 아티팩트를 가져와 EC2 및 Auto Scaling Group에 배포Dev 환경은 EC2에 In-place 배포, Prod환경에서는 Auto Scaling Group에 Blue/Green 배포 전략 상이함* CodePipeline은 승인자의 허가에 의해 진행된다. 이 글..

AWS/Project 2024.06.28

CodeSeries를 활용한 CI/CD 구성 (Frontend Pipeline)

구성도Frontend CI/CD PipelineCodeCommit에 Dev, Prod 브랜치 생성 (two-branch 전략)dev 환경은 dev 브랜치에서 개발 및 검증 진행. 이후 master 브랜치에 병합하여 prod 환경 배포 예정 환경별(Dev,Prod) 프론트, 백엔드 파이프라인 구성 (총 4개)  -- 이 페이지에서는 프론트 파이프라인만 설명하겠음!!CodeBuild는 buildspec.yml(dev-buildspec.yml과 prd-buildspec.yml)을 통해 빌드 및 테스트 진행CodePipeline에서 배포 단계는 각 환경별 S3 버킷으로 정적 웹사이트 배포 * CodePipeline은 승인자의 허가에 의해 진행된다.  이 글 내용은 Frontend CI/CD Pipeline 구성..

AWS/Project 2024.06.28

GWLB(Gateway Loadbalancer)

GWLB의 로드밸런싱 프로세스 ① 인터넷 클라이언트가 92.75.20.100으로 FTP 접속한다.② IGW에 유입된 트래픽은 라우팅 테이블의 안내를 Endpoint로 이동한다.③ 엔드포인트에 유입된 트래픽은 Endpoint Service를 통과해 Appliance VPC의 GWLB로 액세스 한다.④ 2개의 어플라이언스 중 하나(13.246.50.101)를 채택한다. GWLB는 클라이언트가 보낸 트래픽을 GENEVE 헤더로 캡슐화해 13.246.50.101로 전달한다. 전송 시 UDP 6081 포트를 사용한다.⑤ 가상 어플라이언스에 도착한 GENEVE 패킷은 역캡슐화를 거쳐 원본 패킷으로 변환된다.통과된 패킷은 다시 GENEVE 헤더로 캡슐화되어 GWLB로 전달된다.⑥ GWLB는 전달된 트래픽의 GENEV..

AWS/Service 2024.06.24

[Terraform] TroubleShooting

MFA 정책으로 인한 배포 불가ErrorUnauthorizedOperation - SCP 권한 없음 Cause리소스에 접근하기 전 Organizations SCP 정책인 MFA 인증을 받아야 하나, sts 토큰 인증을 받지 못하여 발생하는 문제 Solve토큰을 받아 설정하는 방식이 2 가지 (수동과 자동) 있다.필자는 자동을 권고한다. 이 글은 자동으로 쉘 스크립트를 작성하여 토큰을 받아 설정하였다.물론 토큰은 12시간동안만 유효하다. (수동) aws cli로 sts session token 발급하여 환경 변수 또는 aws configure에 등록 후 provider에 경로 지정aws sts get-session-token --profile default --serial-number ${mfa_arn} ..

AWS/Project 2024.06.22

[CI/CD] TroubleShooting

CI/CD 구성 중 발생하는 모든 TroubleShooting 항목을 정리해둔 페이지이다.  Unable to locate package kubelet, kubeadm, kubectl 에러Error  Solve명령어 잘못 쳐서 저렇게 뜨는 경우가 있다. 복붙 말고 직접 다시 입력해도 안된다면... 아래처럼 시도echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.listcurl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Rele..

AWS/Project 2024.06.22

[CI/CD] 환경 구성 - ECR(Elastic Container Registry) 구성

k8s 노드들을 배포할 때 사용할 이미지 저장소인 ECR을 생성한다.생성 후 k8s 노드들과 ecr 연동도 진행한다. ECR 생성 프라이빗 레포지토리를 생성한다.    ECR에 접근할 IAM 역할 생성이제 EC2가 ECR에 접근하기 위한 IAM 권한을 생성한다.AmazonEC2ContainerRegistryFullAccess 정책이 AWS 관리형으로 이미 생성되어있어, 이걸 인스턴스 프로파일에 연결해주었다.만약 레파지토리를 Public으로 만들었을 경우, AmazonEC2ContainerRegistryPublicFullAccess 으로 추가해야한다!그럼 aws configure을 설정하지 않아도 ECR에 접근이 된다.     K8S(EC2)와 ECR 연동생성한 ECR에 들어가서 푸시 명령 보기를 누른다...

AWS/Project 2024.06.22

[CI/CD] 환경 구성 - EC2(K8S Master / Worker) 구성

참고 블로그: https://www.skyer9.pe.kr/wordpress/?p=8209k8s Master Node, Worker Node 생성 시스템 업데이트sudo apt updatesudo sed -i "/#\$nrconf{restart} = 'i';/s/.*/\$nrconf{restart} = 'a';/" /etc/needrestart/needrestart.confsudo apt -y upgrade Swap off AWS EC2 인스턴스는 default로 swap을 disable 하여 필요 없다. 선택사항!sudo swapoff -a && sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab방화벽 offsudo ufw disable커널 파라미터 수정sudo ..

AWS/Project 2024.06.22

[CI/CD] 환경 구성 - EC2(Jenkins, GitLab) 설치

참고 블로그: https://rainbound.tistory.com/entry/Ubuntu-jenkins-%EC%84%A4%EC%B9%98  이번 실습은 CI/CD 구축을 위해 실습 환경을 구성한다.EC2 2대에 Jenkins와 GitLab을 설치한다.OS는 ubuntu 24.04이다.1. Jenkins 설치 시스템 업데이트sudo apt updatesudo apt upgrade -y  java 11 설치sudo apt install openjdk-11-jdk -y  key 등록curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \    /usr/share/keyrings/jenkins-keyring.asc > /dev/null..

AWS/Project 2024.06.22

[CI/CD] CI/CD - Jenkins, GitLab 구성

참고 블로그: [Hands On] EC2 CI/CD – 교보DTS 기술 블로그 (kyobodts.co.kr)  회사에서 내부 과제 프로젝트로 IaC로 CI/CD 구성을 시켰는데.. CI/CD를 한번도 구성해본 적이 없어서 사전에 별도로 CI/CD 연습 및 이해를 해보기 위해 실습하도록 한다. 전체 아키텍처   흐름Developer가 Gitlab에 코드를 pushGitlab이 CI 진행 후 webhook을 통해 Jenkins에게 이를 알리고 코드를 넘김Jenkins는 Gitlab에게 코드를 받고 이미지 생성이미지를 docker hub와 같은 이미지 저장소에 푸시 (이미지 저장)이미지를 k8s 배포(deployment)에 업데이트하여 새 이미지를 사용하도록 함 (현 환경에 이미지 배포) 여기서 내가 해야할 ..

AWS/Project 2024.06.19

Route53 ACM 인증서 요청

Route53에서 도메인 구매 후 ACM 인증서 요청을 하려는데 갱신 자격 부적격이 뜨며, 상태가 계속 검증 대기중이 뜬다...ACM 요청 전 해주어야 할 프로세스가 있다는 것을 몰랐다.우선 ACM 인증서 요청 방법은 아래와 같다.인증서 요청*.[발급받은 도메인].com 을 입력한다. 호스팅 영역 생성[발급받은 도메인].com 의 이름을 가진 호스팅 영역을 생성한다.  호스팅 영역에 CNAME 레코드 추가아까 요청한 ACM 인증서 항목에 들어가면 도메인 항목에 Route53에서 레코드 생성 버튼이 있다.CNAME으로 요청했으므로 반드시 CNAME으로 레코드 추가해야 한다.수동으로 추가해도 되지만 저 버튼을 누르면 자동으로 추가된다. 발급 완료정상적으로 발급되었음을 확인했다.

AWS/Project 2024.06.13