Ops-Beginner
article thumbnail
Published 2023. 8. 24. 14:25
CD - ArgoCD CICD
반응형

안녕하세요.

오늘은 CD Tool ArgoCD에 대해서 다뤄보겠습니다.

구성도

ArgoCD를 이용한 Deploy

 

ArgoCD 란?

  • Kubernetes를 위한 선언적 GitOps 지속적 전달 도구입니다.
  • 애플리케이션 배포는 Git 커밋에서 특정 버전의 매니페스트에 고정되거나 분기, 태그에 대한 업데이트를 추적할 수 있습니다.
  • Argo CD는 지정된 대상 환경에서 원하는 애플리케이션 상태의 배포를 자동화합니다.

 

ArgoCD Install

Jenkins와는 다르게 CRD로 제공되는 Manifest로 설치했습니다. (install.yaml)

  • affinity 부분

affinity 부분말고 변경한 곳은 없습니다.

# Install Command
k apply -f install.yaml

 

Ingress 설정

접속 시 port-forward를 사용해도 좋지만, 도메인이 있다면 Ingress 사용을 권장드립니다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd
  namespace: argocd
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:80;
      proxy_hide_header l5d-remote-ip;
      proxy_hide_header l5d-server-id;
spec:
  rules:
    - host: argocd.{DOMAIN}
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: argocd-server
                port:
                  number: 80

Ingress로 접속하면 됩니다.

ArgoCD WebUI

 

ArgoCD 설정

Repository 등록

로그인 후 'Settings -> Repositories -> Connect repo using HTTPS' 진입

  • Project, Repositoy URL (Source가 있는 Repo URL), 계정정보, Git에서 발급받은 Token 값 기입하면됩니다.

 

App 등록

'Applications -> NEW APP' 진입

  • Application Name, Project 기입 (클릭하면 자동으로 입력 되도록 하는 것도 있다.)
  • Repository URL, Path 부분은 소스의 디렉토리 위치를 입력하면된다.
  • Cluster URL, 배포할 네임스페이스 입력하면됩니다.

설정화면

설정 완료되면 Application이 생긴 것을 볼 수 있습니다.

클릭해서 들어가게되면 WebUI 이쁘게 Detail한 내용을 볼 수 있습니다.

  • APP DETAILS에서는 APP 설정에 대해서 확인할 수 있고 'SYNC POLICY'을 변경할 수 있습니다. (정말 편한 기능)
  • CI 진행 후 Yaml이 변경되었는데 Sync 속도가 느려서 빨리 확인해보려면 'SYNC' 클릭으로 할 수 있습니다.
  • 'HISTORY AND ROLLBACK' 말 그대로 히스토리와 롤백을 할 수 있습니다. (정말 편한 기능)

이처럼 WebUI를 통해서 Application에 대해서 설정을 할 수 있습니다.

하지만 Application의 갯수가 많아진다면 일일이 등록하고 변경하는것은 너무 불편합니다.

그래서, Yaml로 등록 & 삭제를 관리할 수 있습니다.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: {Appcalition Name}
  namespace: argocd
spec:
  destination:
    namespace: argocd
    server: https://kubernetes.default.svc
  project: default
  source:
    path: {Directory Path}
    repoURL: {Git Repo URL}
    targetRevision: HEAD
  # SYNC 옵션에서 자동으로 트래킹하다가 
  # 변화가 있으면 지속적으로 동기화를 하겠다는 옵션입니다.
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Tetrics

(접속해서 게임 하실 수 있습니다!! / 클라우드 구성이 아니여서 접속 안되는 경우가 있을 수 있습니다.)

App 실행화면

 

마무리

ArgoCD 설치하고 배포까지 해봤습니다.

나중에 빠진부분이나 추가해야하는 부분이 있으면 수정하도록하겠습니다.

많이 부족하지만 읽어주셔서 감사합니다.

반응형

'CICD' 카테고리의 다른 글

CI - Jenkins (2)  (0) 2023.08.23
CI - Jenkins (1)  (0) 2023.08.23
profile

Ops-Beginner

@asher_r

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!