본문 바로가기

전체 글

(148)
EKS Cluster 구축 - 2. VPC, Subnet, IAM, EKS Cluster 생성 먼저 AWS 기본 구성 구축 - 2 까지의 구축을 끝내주신 후, vpc에서 dns 확인 및 호스트 이름을 활성화 해주겠습니다. DNS를 활성화하는 이유는 AWS에서 EKS Master와 ETCD 노드를 관리하기 위해 EKS 플랫폼에 구축을 하게 되는데, 이 플랫폼안에 만들어진 마스터와 제 VPC Worker Node는 Private Link로 통신을 하게 되기 때문에 VPC Endpoints 구성을 위해서는 DNS에 관한 부분이 모두 활성화 되어야 제대로 클러스터가 구성될 수 있습니다. 이제 그러면, Cluster Role과 Worker Node Role을 각각 만들어 주겠습니다. 먼저 EKS Cluster Role입니다. IAM Role을 콘솔에서 만드실 경우 EKS를 선택하시고 아래 Policy를 추..
EKS Cluster 구축 - 1. Intro 저는 쿠알못입니다. 하지만 Kubernetes를 AWS에서 EKS를 통해 데모를 구축했던 부분을 상세히 적어보려합니다. 그전에, 간단하게 Kubernetes와 EKS를 왜 사용할까? 에 대한 부분을 조금 나눠보려합니다. 쿠알못이기에, 틀린 부분이 있을 수 있으니 틀렸다면 댓글로 과감하게 말씀해주세요. 아래의 링크에서 상당히 좋은 강의를 보고 그 이유를 알 수 있습니다. https://www.youtube.com/watch?v=O3znWPUdt18 Kubernetes는 정의형 오케스트레이션 툴 입니다. 도커스웜, ECS, 쿠버네티스등 많은 오케스트레이션 툴 중 Kubernetes가 표준이 된 이유가 무엇일까요? 제가 생각했을 때는 나중에 올릴 포스트에서 나올 여러 오픈소스들과의 연동이 매우 쉽게 가능하고 ..
ECS CICD Automation - 8. Jenkins Job (ECS Fargate Blue Green) 자 먼저 젠킨스 잡을 ECS Fargate Rolling에서 Copy하시고, 변수는 아래와 같이 설정해주시면 됩니다. 스크립트 또한 아래와 같이 입력해주신 후 저장하고 젠킨스 빌드를 해주도록 하겠습니다. pipeline { agent any stages { stage('Git Clone') { steps { script { try { git url: "https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/cb-test-api", branch: "master", credentialsId: "$GIT_CREDENTIALS_ID" sh "sudo rm -rf ./.git" env.cloneResult=true } catch (error) { print(e..
ECS CICD Automation - 8. ECS Fargate Blue/Green 생성 ECS EC2 Cluster 구성과 같이 먼저 타겟그룹을 하나 더 만들어 주도록 하겠습니다. 구성은 앞의 롤링에서 배포 옵션만 바꿔주신다고 생각해도 무방합니다. 자, 이제 서비스가 뜨는 모습을 볼 수 있습니다. Target Group에서도 정상적으로 헬스체크가 되고 url을 통해 들어왔을 때도 정상적으로 서비스가 수행되고 있는 모습입니다. (아까 롤링배포한 컨테이너 이미지여서 그래요) 자, 이제 다음 포스트에서 블루그린 배포 Jenkins Job을 만들고 수행함으로써 ECS 기본 배포 자동화에 대한 부분을 끝내보도록 하겠습니다.
ECS CICD Automation - 7. Jenkins Job (ECS Fargate Rolling) 이전 ECS 배포 잡을 카피해서 만들어 줍시다. 변수는 아래와 같이 수정해줍니다. 그리고 스크립트를 아래와 같이 넣어주세요 pipeline { agent any stages { stage('Git Clone') { steps { script { try { git url: "https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/cb-test-api", branch: "master", credentialsId: "$GIT_CREDENTIALS_ID" sh "sudo rm -rf ./.git" env.cloneResult=true } catch (error) { print(error) env.cloneResult=false currentBuild.resu..
ECS CICD Automation - 6. ECS Fargate 생성 구성방식은 ECS와 동일합니다. 먼저 Task Definition부터 만들어주도록 하겠습니다. 이제 ip로 전달하는 Target 그룹을 아래와 같이 구성하고 리스너를 만들어줍니다. 이제 클러스터를 구성해 주도록 하겠습니다. 클러스터가 구성이 끝나면 위의 Task Definition을 통해 롤링으로 Service를 구축하도록 하겠습니다. 이전에 사용하던 동적포트는 지워주시고, 9000포트를 추가시켜 주시면 됩니다. 서비스가 정상적으로 만들어지고 접속되는 것을 보실 수 있습니다. 다음 포스트에서는 이제, 해당 Fargate Rolling 배포 잡을 만들어보도록 하겠습니다.
Terraform IaC Portal 데모 테라폼으로 인프라를 관리하다보면, 소스코드를 만들고 관리하는데 상당한 어려움이 있습니다. 따라서 AWS 포털 처럼 입력만 하면 코드로 이력이 남고 관리되면서, 나중에 import 해서 재사용 할 수 있고, 포털에서 자동으로 배포까지 모든게 이뤄진다면 좋겠죠. 입사 6개월차에 만든 데모 웹 시스템입니다. 현재는 슬랙 interactive component를 사용해서 저런 허접한 링크 클릭같은건 사용하지않습니다... 영상 용량이 초과 되어 유튜브를 통해 보실 수 있습니다. https://youtu.be/jPBQ9yhmRMg 기본적으로는 테라폼으로 인프라를 찍고 CICD를 구성하여 관리하게 만드는 과정을 적고, 최종적으로는 위의 시스템에 대해서 쓸 예정입니다. EKS 및 다른 요소들이 먼저 업로드 될 예정이라..
ECS CICD Automation - 5. Jenkins Job (Blue/Green) Blue Green 배포형태의 서비스를 만들어 보도록 하겠습니다. 먼저, CodeDeployRole에 다음 정책을 추가해줍니다. 이후 블루그린 배포는 2개의 타겟그룹을 가지고 있어야 하기 때문에, 한개 더 동일한 세팅의 타겟그룹을 만들어줍니다. ALB 리스너는 그대로 하나만 바라봐야합니다. 자 이제 Service를 만들어보도록 하겠습니다. 앞서 만든 두개의 타겟그룹을 선택해주면 되겠습니다. 만들어진 코드 디플로이 배포그룹에 들어가서 대기시간을 수정해줍니다. 그리고 젠킨스에서 롤링잡을 카피해서 만들어 주신 후 서비스 변수와 전체 스크립트만 바꿔서 진행해주시면 됩니다. 아래 코드에서 깃 repository와 task definition에 있는 container 이름은 꼭 맞춰주시기 바랍니다. pipeline..