Argo CD는 쿠버네티스 환경에서 어플리케이션의 CD를 지원하는 도구이다.
쿠버네티스를 설치하여 클러스터를 구축하거나 EKS, GKE 등을 사용할 수도 있지만, 단일 서버에 쿠버네티스를 설치하여 진행하도록 한다.
Kind 설치 방법은 다음과 같다.
https://velog.io/@jshong0907/쿠버네티스-로컬-환경-구축
$ 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를 사용하여야한다.

그러면 위와 같은 페이지가 보인다.
$ brew install argocd
맥이나 리눅스라면 위 명령어를 통해 손쉽게 Argo CD CLI 설치가 가능하고 아니라면 링크를 참조하여 CLI 툴을 설치한다.
$ 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
위와 같이 서비스와 디플로이먼트셋 등이 모두 잘 생성된 것을 확인할 수 있다.