2024/06 21

[교육] DevOps Engineering on AWS 2일차

소감실습 환경이 주어지니 직접 서비스를 구축하고 경험할 수 있어서 너무 좋았다! 이론CD ∙ Continuous Delivery / Continuous Deploy  → 둘의 차이는 관리자의 승인 유무 S3∙ 파일시스템이 아니므로, 버킷 내 오브젝트들은 사실은 평면으로 존재하는 파일∙ 폴더를 프리픽스(prefix)라 지칭 암호화∙ SSE-KMS (서버에서 저장할 때 암호화 & AWS KMS에서 키 관리) Chef∙ Ruby 기반 IT 인프라 관리 및 배포 자동화 도구∙ 레시피(Recipes)과 쿡북(Cookbooks)으로 구성 Puppet∙ IT 인프라 관리 및 배포 자동화 도구∙ 매니페스트(Manifests)와 모듈(Modules)으로 구성 AWS CodePipeline3단계 간단한 파이프라인Stage..

[교육] DevOps Engineering on AWS 1일차

소감3일간 진행하는 DevOps Engineering on AWS 교육 1일차 내용 이론과 실습을 정리해보았다.공유받은 자료 속 이론들이 매우 유익했다. (공유 불가능 ㅠ)작성하면서 느낀 점은 전체적으로 너무 내가 알아볼 수 있게끔만 작성한 것 같다.이후에 또 따라할 수 있도록 혹은 누가봐도 실습 내용을 이해할 수 있도록 작성 해야겠다. 이론모노 (mono=하나)ㄹ리식∙ 큰 단일 플랫폼∙ 긴 개발 주기∙ 크기 조정의 복잡성∙ 단일 서버에서 cpu/mem 하나의 컴포넌트 추가하기 힘듦 → 확장성 한계 존재 DevOps 방식으로 운영한다는 것∙ CI/CD, MSA, IaC, Monitoring, Logging, etc. 를 사용한다는 것 모니터링 및 로깅∙ 운영 가시성 및 인사이트∙ 지표 수집∙ 성능 개선 ..

[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

[Terraform] 배포 및 플래그

Terraform 배포 시 사용되는 명령어 및 플래그를 정리해 둔 공간입니다.배포initTerraform 작업 디렉터리를 초기화planTerraform 구성 파일 기반 실행 계획 생성실제로 리소스를 변경하지 않고, 어떤 리소스가 추가, 변경, 삭제될지 미리 보여줌applyTerraform plan 명령어에서 생성된 실행 계획을 실제로 실행하여 인프라 변경 terraform initprovider가 정의되어 있는 위치에서 해당 명령어를 입력한다면 provider, module, state를 설정한다. (사용준비) .terraform 디렉터리 생성, .terraform.lock.hcl 파일 생성 terraform plan이전 state와 비교하여 변경될 내역을 보여준다.terraform apply현재 작성된..

IaC/Terraform 2024.06.11