반응형
안녕하세요.
오늘은 CD Tool ArgoCD에 대해서 다뤄보겠습니다.
구성도
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 설정
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
(접속해서 게임 하실 수 있습니다!! / 클라우드 구성이 아니여서 접속 안되는 경우가 있을 수 있습니다.)
마무리
ArgoCD 설치하고 배포까지 해봤습니다.
나중에 빠진부분이나 추가해야하는 부분이 있으면 수정하도록하겠습니다.
많이 부족하지만 읽어주셔서 감사합니다.

반응형
'CICD' 카테고리의 다른 글
CI - Jenkins (2) (0) | 2023.08.23 |
---|---|
CI - Jenkins (1) (0) | 2023.08.23 |