Devops/ArgoCD

[ArgoCD] ArgoCD란

dev_ss 2024. 11. 14. 16:06

 

 

 


ArgoCD

 

ArgoCD는 쿠버네티스 환경에 사용되는 선언적 GitOps 지속적인 배포 툴이다.

 

※ GitOps : Git 저장소를 진실의 근원으로 사용하여 인프라와 애플리케이션의 상태를 선언적으로 관리하는 방식

 

 

 

ArgoCD의 저장소(Repository)는 기본적으로 Git, Github 및 Gitlab을 활용할 수 있고, 추가로 Helm 기반의 Repository도 활용이 가능하다.

 

[ArgoCD 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의 기본적인 아키텍처는 아래와 같다.

 

 

[출처 : https://argo-cd.readthedocs.io/en/stable/]

 

 


설치

 

쿠버네티스 환경에서 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를 설치해서 로그인까지 하는 과정을 알아보았다.

 

 


 

 

 

 

반응형