AWS 환경에서 CICD를 구축하는 미션을 맡게 되었다. 목표는 AWS EKS, CI/CD, 배포할 서비스, 그리고 Helm을 사용해 전체 시스템을 구성하는 것이다.
이번 CI/CD 구축에서는 GitLab, Argo CD, Nexus(docker registry), MySQL, Vault, Cert-Manager 등을 활용할 예정이다.
이 글에서는 세부적인 화면 캡처나 단계별 설명을 제공하지 않을 것이다. 그러나 시간이 지나면서 익숙해지다 보면 자연스럽게 이해할 수 있을 것이다. (참고로, 필자는 이 과정을 완전히 익히는 데 한 달이 걸렸다.)
이 과정에서 직면했던 여러 가지 이슈들을 공유하고 기록함으로써, 이 글이 누군가에게 도움이 되기를 바란다.
바로 드가자.
1. 계정 생성 & EKS 생성
IAM
aws 어드민 계정을 생성하고 AWS IAM으로 유저 계정을 생성했다.
생성한 유저 계정을 통해서 access_key와 secret_key를 발급받았다.
EKS
AWS EKS 로 접근하여 클러스터를 생성했다. eks 생성할때 cluster role이 필요해서 role 생성해서 적용했던 것 같다. 그 뒤론 다음으로!
[local 환경으로 돌아와서] aws-cli 설치하고
aws config 명령어를 사용하여 access_key, secret_key, region, outputs 등을 설정했다.
aws eks update-kubeconfig --region {region} --name {eks_name}
설정이 끝난 뒤 kubectl config get-clusters 명령어를 실행시키면 aws eks 클러스터가 생성된 것이 보인다.
k config use-context arn:aws:eks:{region}:user_id:cluster/eks_name
위 명령어를 실행해서 eks 클러스터 설정이 끝난다. (아참... node group 생성하고 권한을 주지 않으면 접근이 안될 것이다.)
eks만 생성하면 환경만 구성된 것이지 내부에 필요한 node 구성이 필요하다.
eks console에 접속해서 node group을 생성하자.
주의할 점은 node 권한 역할 생성과 인스턴스 스팩을 t3.xlarge 로 생성해야했다. 이유는 구성 서비스 배포하다보면 cpu, memory가 스팩이 부족해서 서비스 실행이 안됐었다. (gitlab 배포할때)
노드그룹까지 생성하고 권한 설정까지 잘되었다면 이젠 정말 터미널에서 접근이 가능해질 것이다!
k get node를 갈겨보자! (앞으로 kubectl을 k로 쓰겠다. 본인은 다 쓰기 귀찮아서 k로 별칭 지정해놨다.)
Route53
도메인까지 미리 구매해두자.
route53 console에 접속해서 하고싶은 도메인을 구매하자. xxx.link 로 만들면 5천원 정도로 가장 쌌다.. (더 싼게 있을 수 있지만)
호스팅 영역으로 생성하면 sub_domain으로 생성가능하다. 구매한 도메인과 연결시키자.
tips
k9s 를 사용해서 k8s 환경을 손쉽게 다룰 수 있다. https://k9scli.io/
k9s는 무조건 사용하길 바란다.. (케이나인스가 개 이름이랑 발음이 비슷해서 실제로 멍멍이 사진이 있따.)
정리
시작이 반이다. 거의 다했다는 거짓말을 살짝 드리며..
이제 모든 구성 서비스들을 helm 을 사용해서 모두 배포해보자!
'Cloud Computing > AWS CICD' 카테고리의 다른 글
| [AWS] EKS CI/CD부터 서비스 배포까지 - (4) (2) | 2024.07.15 |
|---|---|
| [AWS] EKS CI/CD부터 서비스 배포까지 - (3) (2) | 2024.07.14 |
| [AWS] EKS CI/CD부터 서비스 배포까지 - (2) (1) | 2024.07.09 |