-
Argo CD를 직접 구축하여 볼 것이다.
Argo CD가 무엇인지는 전 포스팅 참고
ArgoCD 란?
수년간 애플리케이션은 개발,테스트,스테이징,프로덕션 환경으로 구분했다. 쿠버네티스에서 이렇게 환경을 분리하는 방법은 다양하고 예산같이 다양한 요소에 달라진다. 예를 들면 각 환경별
daramu.tistory.com
헬름으로 설치할 것이며,
설치하는 환경은 윈도우 도커 데스크탑의 쿠버네티스이다.
----------
Argo CD의 헬름 차트 확인은 아래의 링크에서 확인 가능하다.
http://github.com/argoproj/argo-helm/tree/master/charts/argo-cd
argo-helm/charts/argo-cd at main · argoproj/argo-helm
ArgoProj Helm Charts. Contribute to argoproj/argo-helm development by creating an account on GitHub.
github.com
설치를 위해 먼저 로컬에 헬름 리포지터리를 추가한다.
다음의 명령어를 통해 가능하다.
helm repo add argo https://argoproj.github.io/argo-helm
helm이 없다면, 공식 홈페이지( https://github.com/helm/helm/releases)에서 window용 파일을 다운로드 후 원하는 폴더에 넣고 환경변수를 통해 등록이 가능하다.(환경변수 등록을 완료했다면 PowerShell 재시작이 필요하다)
그 후 Argo CD 네임스페이스를 생성한다(선택사항이지만 굉장히 권장)
그리고 생성한 네임스페이스에 Argo CD Helm을 설치한다.
kubectl create ns argocd helm install argocd02 --namespace argocd argo/argo-cd kubectl get pod -n argocd
그러나 이렇게 올린다고 하여도 "http://localhost:8080/" 으로 접근시 접속이 불가능하다.
왜냐하면 쿠버네티스 Pod는 격리된 컨테이너 환경이기 때문이다. 이 격리된 환경으로의 접근을 위해 쿠버네티스의 "서비스(Service)"라는 것이 존재한다.
하지만 서비스가 올라가있지만 ClusterIP이다.
이것을 NodePort로 바꾸는 등의 작업을 해도 가능하지만 이번에는 간단하게 포트 포워딩을 통해 접근할 것이다.
kubectl port-forward service/argocd02-server -n argocd 8080:443
이렇게 로그인이 되었다면 argocd-initial-admin-secret라는 시크릿 패스워드를 가져온다.
해당 시크릿은 Argo CD Helm차트 배포시에 같이 배포되었다.
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d #윈도우라면 아래의 명령어를 PowerShell에 입력 kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | ForEach-Object { [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($_)) }
웹페이지에서 "admin/{패스워드}" 를 통해 UI 접근이 가능하다.
이제는 애플리케이션 동작의 차례다.
첫 번째로 Argo CD 애플리케이션에 필요한 CRD(사용자 정의 리소스 관리)를 생성하고,
NGINX 클러스터에 적용할 것 이다.
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: nginx namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true destination: namespace: nginx server: https://kubernetes.default.svc project: default source: repoURL: https://charts.bitnami.com/bitnami chart: nginx targetRevision: 13.2.10
해당 CRD파일을 보면, Argo CD에 애플리케이션을 설치하기 위해 헬름을 사용한다는 것을 알 수 있다.
애플리케이션 CRD 매니페스트(manifest)의 특정 부분에서 Argo CD에 헬름을 사용한다고 알려주는 것이다.
해당 파일을 저장후 kubectl apply -f application.yaml 을 통해 적용을 시작한다.
kubectl apply -f application.yaml
정상적으로 배포되었다면, 홈페이지의 nginx가 나올것이고, 클릭시 가장 아래의 그림처럼 배포된 리소스들을 확인할 수 있을 것이다.
========Argo CD CLI=========
Argo CD는 Helm설치시 알 수 있듯이 API서버가 존재한다.
해당 API서버와 직접적인 호출을 하며 CRD 없이 애플리케이션 생성 및 동기화가 가능하다.
하지만 이러한 방법은 쿠버네티스가 선언적으로 리소스를 만드는 것과 같이 후에 굉장한 혼란을 초래할 수 있다.
명시적으로 파일을 작성해서 적용하는 것이 좋다.
argocd login localhost:8080 #username & Passwrd 입력 argocd app create nginx --repo https://charts.bitnami.com/bitnami --helm-chart nginx --version 13.2.10 --dest-server https://kubernetes.default.svc --dest-namespace nginx argocd app sync nginx
'DevOps > ArgoCD' 카테고리의 다른 글
윈도우11 명령어 설치 - 테라폼[Terraform], AWS CLI, AWS IAM Authenticator (0) 2025.02.15 ArgoCD 란? (0) 2025.02.14 댓글