• Argo CD 구축 - 윈도우 도커 데스크탑 쿠버네티스

    2025. 2. 14.

    by. Daramu

    Argo CD를 직접 구축하여 볼 것이다.

    Argo CD가 무엇인지는 전 포스팅 참고

    https://daramu.tistory.com/66

     

    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

    댓글