ArgoCD
ArgoCD는 쿠버네티스 환경에 사용되는 선언적 GitOps 지속적인 배포 툴이다.
※ GitOps : Git 저장소를 진실의 근원으로 사용하여 인프라와 애플리케이션의 상태를 선언적으로 관리하는 방식
ArgoCD의 저장소(Repository)는 기본적으로 Git, Github 및 Gitlab을 활용할 수 있고, 추가로 Helm 기반의 Repository도 활용이 가능하다.
위 저장소에 저장된 템플릿으로는, 아래 항목들을 이용할 수 있고, 이를 토대로 배포가 된다.
- kustomize applications
- helm charts
- jsonnet files
- Plain directory of YAML/json manifests
- Any custom config management tool configured as a config management plugin
해당 저장소에 대한 여러 가지 추적 전략을 활용하여 브랜치, 태그 등을 활용하여 업데이트 추적 및 배포에 활용도 가능하다.
아래는 ArgoCD 사의 추적 전략에 대한 내용이다.
https://argo-cd.readthedocs.io/en/stable/user-guide/tracking_strategies/
ArgoCD의 기본적인 아키텍처는 아래와 같다.
설치
쿠버네티스 환경에서 ArgoCD를 설치하는 것은 매우 간단하다.
# 네임스페이스 생성
kubectl create namespace argocd
# Argo CD 오브젝트 생성
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
위 과정으로 기본적인 ArgoCD 오브젝트를 쿠버네티스 환경에 설치할 수 있다.
1. 비밀번호 획득
그다음으로는 초기에 설정된 관리자 비밀번호를 획득하고 별도로 설정해줘야 한다.
# 초기 설정된 Admin 비밀번호 획득
kubectl -n argocd exec -it <생성된 argocd-server 파드> -- argocd admin initial-password -n argocd
# 비밀번호 출력
위 명령어를 실행하면 아래와 같이 출력된다.
2. admin으로 로그인
이후 해당 비밀번호를 이용하여 로그인을 한다.
# Argocd 로그인
kubectl -n argocd exec -it <생성된 argocd-server 파드> -- argocd login localhost:8080 --insecure
# 사용자 입력
# 비밀번호 입력
성공적으로 로그인한다면, 아래와 같이 출력된다.
3. 비밀번호 변경
이후 비밀번호를 변경한다.
# admin 비밀번호 업데이트
kubectl -n argocd exec -it <생성된 argocd-server 파드> -- argocd account update-password --server localhost:8080 --insecure
# 현재 비밀번호 입력
# 변경할 비밀번호 입력
# 변경할 비밀번호 재확인
위 과정을 마치면 기본적으로 접속할 준비가 끝난 것이다.
확인
아래의 NodePort를 이용하면, 간단하게 ArgoCD에 접속할 수 있다.
※ 실제 서비스라면 TLS 등록 및 추가적인 보안 조치가 필요하다.
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: server
app.kubernetes.io/name: argocd-server
app.kubernetes.io/part-of: argocd
name: argocd-server-node
namespace: argocd
spec:
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
nodePort: 30011
- name: https
port: 443
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: argocd-server
sessionAffinity: None
type: NodePort
접속하면 아래와 같은 화면이 나오는 것을 볼 수 있다.
여기서 Username은 admin으로, Password는 이전 단계에서 변경해 줬던 비밀번호로 로그인이 가능하다.
로그인을 하면 위 사진과 같은 화면을 볼 수 있다.
이로써 간단하게 ArgoCD를 설치해서 로그인까지 하는 과정을 알아보았다.