Argo CD 설치

홍준식·2024년 3월 10일

Argo CD는 쿠버네티스 환경에서 어플리케이션의 CD를 지원하는 도구이다.

쿠버네티스 설치

쿠버네티스를 설치하여 클러스터를 구축하거나 EKS, GKE 등을 사용할 수도 있지만, 단일 서버에 쿠버네티스를 설치하여 진행하도록 한다.

Kind 설치 방법은 다음과 같다.
https://velog.io/@jshong0907/쿠버네티스-로컬-환경-구축

Argo CD 설치

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

위 명령어로 argocd pod 및 서비스들을 생성한다.

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

서비스 외부 접속을 위해 서비스 타입을 LoadBalancer로 변경해준다.

$ kubectl port-forward svc/argocd-server -n argocd 8080:443

이후 해당 명령어를 통해 https://localhost:8080으로 로컬에 호스팅된 argocd ui에 접속할 수 있다.

참고로 argocd는 https 에서만 동작하므로 http가 아닌 https를 사용하여야한다.

그러면 위와 같은 페이지가 보인다.

Argo CD CLI 설치

$ brew install argocd

맥이나 리눅스라면 위 명령어를 통해 손쉽게 Argo CD CLI 설치가 가능하고 아니라면 링크를 참조하여 CLI 툴을 설치한다.

Argo CD 로그인

$ argocd admin initial-password -n argocd

위 명령어를 통해 admin의 최초 비밀번호를 확인할 수 있다.

username에 admin과 password의 위 결과를 입력하면 로그인이 되는 것을 확인할 수 있다.

$ argocd login localhost:8080
$ argocd account update-password

위 명령어들을 통해 비밀번호를 변경할 수도 있다.

앱 생성

$ kubectl create namespace guestbook

을 통해 신규 앱에 대한 네임스페이스를 생성해준다.

NEW APP을 클릭한 후에


source로 https://github.com/argoproj/argocd-example-apps.git, cluster URL로 https://kubernetes.default.svc을 설정하고 위와 같이 설정하거나

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
spec:
  destination:
    name: ''
    namespace: guestbook
    server: 'https://kubernetes.default.svc'
  source:
    path: guestbook
    repoURL: 'https://github.com/argoproj/argocd-example-apps.git'
    targetRevision: HEAD
  sources: []
  project: default

edit as yaml을 클릭하고 위 파일을 입력하면 신규 앱이 생성된다.

생성된 앱의 SYNC를 누르면

위 서비스와 디플로이먼트셋은 입력했던 레포지토리의 path인 guestbook 즉, https://github.com/argoproj/argocd-example-apps/tree/master/guestbook에 존재하는 매니페스트 파일이 배포된다.

$ kubectl get deployments -n guestbook
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
guestbook-ui   1/1     1            1           25s
$ kubectl get services -n guestbook
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
guestbook-ui   ClusterIP   10.96.56.100   <none>        80/TCP    74s

위와 같이 서비스와 디플로이먼트셋 등이 모두 잘 생성된 것을 확인할 수 있다.

0개의 댓글