Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- DevOps
- SCP 재단
- ML/DL
- RGCN
- 로깅 서버
- the platform
- auto reload
- GNNExplainer
- BigQuery
- Graph Neural Network
- KG embedding
- cs224w
- Heterogeneous Graphs
- argocd
- cloudsql
- auto-reload
- 영화 리뷰
- 영화 추천
- GNN
- ngrok
- SCP294
- npm7
- django
- boj2352
- knowledge graph
- 2352
- Terragrunt
- docker compose
- IaaC
- Terraform
Archives
- Today
- Total
Itmom's blog
ArgoCD를 이용한 CD 시스템 구축 본문
1. ArgoCD란?
Argo CD
는 GitOps 스타일의 배포를 지원하는 CD 도구로, 원하는 설정 사항을 변경하여 Git에 푸시하면, 자동으로 쿠버네티스 클러스터의 상태가 Git에 정의된 상태로 동기화 된다.
즉, 지정한 대상 환경에 애플리케이션을 원하는 상태로 자동으로 배포할 수 있다.
또한, 멀티 클러스터 관리/배포 기능도 가지고 있다.
2. ArgoCD pipeline 구성
원래 사용하던 github repo에 코드를 수정하면, Argo CD를 이용해 배포 및 관리가 이루어지도록 하고 싶었다. 구성한 pipeline은 다음과 같다.
1) github action으로 Docker image build
2) GCR에 image push
3) 해당 서비스에 대한 정보를 담고 있는 values.yaml
sha값 변경 (values.yaml
과 helm chart가 만나 배포가 이루어진다.
4) argoCD가 변경을 detect
5) 배포
3. ArgoCD에 application 추가하기
GUI로 설정을 지정하는 방법과 코드로 설정을 지정하는 방법이 있는데, yaml 형태로 application을 추가했다.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ###########
namespace: argo
annotations:
notifications.argoproj.io/subscribe.on-sync-succeeded.slack: dev-deploy
notifications.argoproj.io/subscribe.on-sync-failed.slack: dev-bot
notifications.argoproj.io/subscribe.on-sync-running.slack: dev-bot
notifications.argoproj.io/subscribe.on-sync-status-unknown.slack: dev-bot
notifications.argoproj.io/subscribe.on-health-degraded.slack: dev-bot
notifications.argoproj.io/subscribe.on-deployed.slack: dev-deploy
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: dev
source:
repoURL: ###################
targetRevision: HEAD
path: ################
helm:
valueFiles:
- ########
- ########
destination:
name: in-cluster
namespace: default
ignoreDifferences:
- group: apps
kind: Deployment
name: ########
namespace: default
jsonPointers:
- /spec/replicas
- group: autoscaling
kind: HorizontalPodAutoscaler
name: typed-logging
namespace: default
jsonPointers:
- /spec/metrics
syncPolicy:
automated:
prune: true
selfHeal: true
argoCD는 쿠버네티스 클러스터 위에서 동작하는 친구이기 때문에, yaml 작성 후 다음 cmd로 수정을 반영 해주었다.
kubectl apply -f <service_name>.yaml
작업 후 팔딱팔딱 날뛰는 귀여운 application들
Deploy 상황
4. Argo CD 장점
- 예쁘게 GUI로 배포 과정을 살펴볼 수 있어 좋다! 매번 cmd를 사용해 배포 과정을 지켜봤는데, 이제는 그럴 필요가 없다.
- 슬랙으로 배포 상태에 대한 알림을 쉽게 받아볼 수 있다.
- 배포된 것에 문제가 있어 image rollback이 필요했는데, Argo CD를 이용해 매우 쉽게 작업할 수 있었다.
'Development > Devops' 카테고리의 다른 글
bigquery로 로깅 서버 구축 (0) | 2022.02.26 |
---|---|
Terragrunt - DRY and maintainable Terraform code (0) | 2022.02.17 |