CloudNet@ 팀의 가시다님께서 Leading 하시는 PKOS 2기 Study 내용 요약
해당 Kubernetes Study 는 '24단계 실습으로 정복하는 쿠버네티스' 책을 기반으로 진행 중입니다.
이번 포스팅에서는 ArgoCD 를 설치하고 실행하는 방법에 대해 알아보겠습니다.
1. ArgoCD
쿠버네티스 GitOps 환경에서 지속적인 배포를 위한 오픈소스 도구
기본적인 GitOps 아키텍처는 다음과 같습니다.
예전에 구축했던 GitOps 아키텍처인데, 현재 Anchore는 Harbor 의 Trivy 로 대체하였습니다.
GitOps 아키텍처의 흐름
- 소스코드 수정 및 Git Push
- Jenkins 등 빌드 도구에서 코드 변경 감지 및 Image Build
- 빌드된 이미지를 Harbor 등의 Image Registry 에 저장
- 빌드 도구에서 ArgoCD 가 바라보는 yaml 파일의 Image Tag 정보 변경
- yaml 파일의 변화를 감지한 ArgoCD가 해당 이미지를 Pull 해서 쿠버네티스에 새로 배포
2. ArgoCD 설치
해당 포스팅에서는 ArgoCD 를 Helm Chart로 설치할 예정입니다.
설치할 helm chart 링크는 아래와 같습니다.
argo-cd 5.27.3 · argoproj/argo
A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes.
artifacthub.io
2.1. 사전 준비
- Helm 설치
- Kubernetes by kops
- Personal Domain
- GitLab 설치
2.2. Helm Repo Add & Config
2.3. ArgoCD 설치
ArgoCD 접속 URL 확인
ArgoCD 최초 비밀번호 확인
3. ArgoCD 활용
ArgoCD 를 활용하기 위해서는 Application & Repository 를 등록해야합니다.
Application
ArgoCD 를 통해 배포할 Application
ArgoCD 가 지속적으로 체크할 yaml 파일이 있는 저장소와 해당 파일을 지정
Repository
ArgoCD 가 배포할 Application 의 yaml 파일이 위치한 Repository
Repository 접근 권한 인증에 사용
Application 과 Repository 를 UI 에서 등록할 수도 있지만 CLI 에서 명령어를 통해 등록이 가능합니다.
CLI 를 통한 ArgoCD Repo & App 등록 방법
- ArgoCD CLI
- kubectl apply
ArgoCD cli 를 사용하면 ArgoCD 의 다양한 기능을 활용할 수 있으나,
CLI 를 설치해야되며 ArgoCD 에 로그인을 한 번 더 해야된다는 단점이 있습니다.
여기서는 kubectl 로 간단하게 배포를 해보겠습니다.
3.1. ArgoCD Repository 등록
ArgoCD 는 Repository 를 kubernetes secret 리소스로 관리합니다.
다음과 같이 Secret.yaml 파일을 생성해줍니다.
해당 secret 을 배포합니다.
이후 ArgoCD 에서 확인할 수 있습니다.
3.2. GitLab Repository 에 Application 업로드
ArgoCD 로 배포할 Application 을 GitLab 에 Push 해봅시다.
간단한 RabbitMQ 애플리케이션을 배포할 예정입니다.
rabbitmq 11.12.0 · bitnami/bitnami
RabbitMQ is an open source general-purpose message broker that is designed for consistent, highly-available messaging scenarios (both synchronous and asynchronous).
artifacthub.io
별도로 지정한 yaml 파일을 배포하기 위해 새로운 yaml 파일을 생성합니다.
이후 GitLab 에 Push 합니다.
3.3. ArgoCD Application 등록
ArgoCD 는 Application 를 별도의 kubernetes crd 리소스로 관리합니다.
다음과 같이 app.yaml 파일을 작성해줍니다.
Application 등록
현재, AutoSync 가 비활성화 되어 있기 때문에 수동으로 Sync 를 눌러줘야 작동합니다.