[K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - CI/CD 파이프라인 구축:3

mDev_97·2023년 10월 26일
0

Kubernetes

목록 보기
8/10
post-thumbnail

📌 프로젝트 주제에 대한 자세한 설명은 [K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - 프로젝트 소개 게시글을 확인해주세요.

이번 게시글에서 진행할 내용을 CI/CD 파이프라인 구축하기 중에서 ArgoCD를 활용한 CD 환경 구축하기 입니다.

ArgoCD를 사용하여서 CD 환경을 구축하기 위해서는 Kubernetes Manifest가 저장되어 있는 GitHub 리포지토리가 필요합니다.

해당 게시글을 처음으로 보시는 분들은 [K8S] CI/CD Pipeline, 모니터링, 로깅 시스템 구축 프로젝트 - CI/CD 파이프라인 구축:2 게시글을 참고해주시거나, 제 GitHub 리포지토리fork 하여 사용하셔도 됩니다.

ArgoCD를 활용한 CD 환경 구축

ArgoCD 설치

이번 프로젝트에서는 ArgoCD를 쿠버네티스에 배포합니다.
쿠버네티스에 ArgoCD를 배포하면 ArgoCD는 kube-api와 통신하면서 클러스터를 관리하게 됩니다.

ArgoCD를 설치하는 과정은 간편하게 진행하기 위해서 GitHub에 저장되어 있는 ArgoCD 설치를 위한 yaml을 사용하겠습니다.

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

설치를 하였으면 ArgoCD가 잘 배포되었는지 확인해보겠습니다.

kubectl get all -n argocd

위와 같이 ArgoCD가 잘 배포된 것을 확인할 수 있습니다.

하지만, 지금은 argocd-server가 ClusterIP 타입으로 배포가 된 것을 볼 수 있습니다.
ClusterIP 타입이면 ArgoCD에 접근하기 힘들기 때문에 LoadBalancer 타입으로 변경하여서
ArgoCD에 접근하기 쉽게 변경을 해보도록 하겠습니다.

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

위의 명령어를 입력하였다면 argocd-server의 타입이 잘 변경되었는지 확인해보겠습니다.

kubectl get svc argocd-server -n argocd

argocd-server가 LoadBalancer 타입으로 잘 변경되고
잠깐의 시간이 지나면 External IP가 지정되는 것을 확인할 수 있습니다.

이제 지정된 External IP로 ArgoCD UI에 접근해보겠습니다.

ArgoCD UI에 접근하면 로그인 화면이 나오는데 기본적으로 계정의 ID는 admin으로 되어있고
패스워드는 Secret으로 구성되어 있습니다.

이를 확인하기 위해서 아래의 명령어를 실행해줍니다.

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

아이디와 알아낸 패스워드를 입력하면 다음과 같이 홈 화면으로 이동할 수 있습니다.

애플리케이션 배포

ArgoCD 설치를 완료하였으니 이제 어플리케이션을 배포해보겠습니다.
좌측 상단의 [NEW APP]을 클릭하여 새로운 앱을 추가 해주도록 하겠습니다.

Application Name은 fullstack-app, Project Name은 default로 선택해주고,
우리 프로젝트의 경우에는 자동으로 통합/배포가 되는 환경이 목표이기 때문에
SYNC POLICY의 경우에는 Automatic으로 지정해주겠습니다.

SYNC POLICY를 Automatic으로 지정하면 GitHub에 저장된 메니페스트 내용과 현재 애플리케이션의 상태가 다르거나 정상 동작을 하지 많으면 자동으로 동기화해 애플리케이션을 재배포하거나 재구성하는 기능을 수행합니다.

SOURCE 정보의 경우 쿠버네티스 메니페스트가 저장되어 있는 깃허브의 정보를 입력해주어야 합니다.
Repository URL은 쿠버네티스 메니페스가 저장되어 있는 깃허브 리포지토리의 URL을 입력하고
브랜치는 main으로 작성해주고, Path의 경우에는 메니페스트가 저장되어 있는 경로를 나타내주는 것입니다.

저의 리포지토리를 fork 하셨다면 메니페스트가 루트 디렉토리에 있기 때문에 사진과 같이 지정해주시면 됩니다.

그 다음으로 Cluster URL은 api-server를 의미합니다.
https://kubernetes.default.svc를 입력해주고 네임스페이스는 default로 지정해주겠습니다.

마지막으로 현재 프로젝트에서는 Kustomization을 사용하기 때문에 Directory에서 Kustomize로 변경해주겠습니다.

그럼 다음과 같이 애플리케이션의 Status가 Healthy와 Synced가 뜨는 것을 볼 수 있습니다.

그리고 클러스터의 아키텍처도 계획한 모양으로 구축된 것을 확인할 수 있습니다.

결과 확인

ArgoCD 구축을 완료하였으니 클러스터에서 애플리케이션 배포가 정상적으로 이루어졌는지도
확인해보고 프로젝트의 CI/CD 파이프라인 구축을 끝마치겠습니다.

kubectl get pod,deploy,svc,ing

위의 명령어를 통해서 애플리케이션이 잘 배포되는 것을 확인할 수 있습니다.

추가적으로 Ingress의 주소로 접속해보면 애플리케이션 정상 작동하는지도 확인할 수 있습니다.

profile
안녕하세요. 백엔드, 클라우드, 인프라에 관심과 열정이 있는 김문성입니다. 😊

0개의 댓글