CI/CD

ArgoCD Application Create

uuuhhh 2022. 12. 14. 10:48

👀 Epilogue


  • CI 파이프라인에서 Kubernetes Deployment Manifest 파일의 도커 이미지 태그 수정을 완료하였다.
  • 이제는 수정된 버전의 도커 이미지를 가지고 새로 업그레이드나 배포를 해야할 차례..!

 

  • 위 과정에서 GitOps의 Operation 툴인 ArgoCD를 사용하고자 하는데..
  • ArgoCD로 Kubernetes 클러스터 내의 리소스들을 관리하기 위해서는 사전에 Application을 만들어줘야한다.
  1. 콘솔로 세팅
  2. YAML 파일로 세팅
  • 두 가지 세팅 방법이 있는데
  • 우리는 아무래도 선언적으로 설정하는게 편하다보니 (맞죠?) ..
  • YAML 파일 작성을 통해 Application을 만들어 보고자 한다 !

 

 

⚡ Leggo


  • Edit as YAML
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: test-back
spec:
  project: default
  destination:
    namespace: back-end
    server: <https://kubernetes.default.svc>
  source:
    repoURL: <https://github.com/Cucumber-web/Test-Kubernetes>
    path: .
    targetRevision: main
  syncPolicy:
    syncOptions:
      - CreateNamespace=true
    automated:
      selfHeal: true
      prune: true
  • Application Name
    • 배포할 애플리케이션 이름
    • 소문자, 숫자, . , -만 허용
  • Project
    • ArgoCD 내 애플리케이션 그룹
  • SYNC POLICY
    • Git 변동사항을 자동으로 반영 (Automatic)
    • Git 변동사항을 수동으로 반영 (Manual)
  • Repository URL
    • Git or Helm 저장소 URL
  • Revision
    • Git의 어떤 Revision을 보고 있는지
    • e.g.) Head, master, main ..
  • Path
    • Repo 내 변경 사항을 관리할 매니페스트 파일이 위치한 경로
    • root일 경우 . 로 표기
  • Cluster URL
    • 배포 대상 Cluster 지정
    • https://kubernetes.default.svc
  • Namespace
    • Cluster 내 배포할 Namespace 지정
  • DIRECTORY RECURSE
    • path 하위 경로의 매니페스트 파일 변동 사항 체크 여부

 

  • 현재 application 정보 및 로그 상태 확인
    • $ argocd app get [application-name]

 

  • [ Back-End ] 배포 Test

 

  • [ Back-End + Front-End ] 배포 Test
    • 여기서 사전에 없는 namespace 지정시 잘 생성하는 것도 확인

 

  • 현재 3분간 Sync가 이뤄지는 것으로 보임
    • 최악의 경우 3분을 대기
    • 이를 위해 ArgoCD도 webhook을 사용 → 나의 임무이로다..

 

Git Webhook Configuration - Argo CD - Declarative GitOps CD for Kubernetes

Git Webhook Configuration Overview Argo CD polls Git repositories every three minutes to detect changes to the manifests. To eliminate this delay from polling, the API server can be configured to receive webhook events. Argo CD supports Git webhook notific

argo-cd.readthedocs.io

 

  • 매번 이렇게 Application Create는 매우 귀찮음
    • 전에는 App of App 배포 전략이 존재
      • 대장 Application이 존재하여 하위 Application을 관리하는 전략
    • 요즘은 ApplicationSet 지원을 통해 해결한다고 함

 

 

ref.


ArgoCD 선언적으로 이용해나가기 - Helm, App of App

 

 

Declarative Setup - Argo CD - Declarative GitOps CD for Kubernetes