CI/CD 5주차(Argo CD)[2] - Argo Rollout
2025. 11. 15. 16:50ㆍCICD
Argo Rollout
-도입 배경
쿠버네티스 Deployment 리소스는 Rolling Update 기능을 통해 기존 버전에서 신규 버전으로 전환하는 기능을 가지고 있어 Deployment에서 생성된 모든 Pod들이 업데이트가 된다. 하지만, 신규 버전에서 Bug가 발생할 경우 모든 Pod들을 다시 Rollback을 해야 하는 방법 밖에 있지 않다.
Argo CD는 이러한 배포 문제에 대해서 Canary, Blue-green과 같은 점진적 배포 전략을 수행할 수 있다.
- Architecture

- Argo Rollouts 설치 및 테스트
# 네임 스페이스 생성
kubectl create ns argo-rollouts
# values.yaml 정의(argo rollout)
cat <<EOT > argorollouts-values.yaml
dashboard:
enabled: true
service:
type: NodePort
nodePort: 30003
EOT
# 설치
helm install argo-rollouts argo/argo-rollouts --version 2.40.5 -f argorollouts-values.yaml --namespace argo-rollouts
# 확인
kubectl get all -n argo-rollouts
kubectl get crds

- Argo Rollout 접속
echo "http://127.0.0.1:30003"
open "http://127.0.0.1:30003"

- ArgoCD extenstion(ArgoCD 기본 기능 확장)
cat <<EOF > argocd-values.yaml
global:
domain: argocd.example.com
certificate:
enabled: true
server:
ingress:
enabled: true
ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
tls: true
extensions:
enabled: true
extensionList:
- name: rollout-extension
env:
- name: EXTENSION_URL
value: https://github.com/argoproj-labs/rollout-extension/releases/download/v0.3.7/extension.tar
EOF
- ArgoCD - Git 저장소 연결


- Github Argo Rollout 서비스 배포
mkdir argo-rollouts && cd argo-rollouts
wget https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/basic/rollout.yaml
wget https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/basic/service.yaml
git add . && git commit -m "Add sample yaml" && git push -u origin main

kubectl get rollout -n test
kubectl describe rollout -n test
- ArgoCD 애플리케이션 생성


- ArgoCD rollout-test 애플리케이션 Sync


rollouts-demo ROLLOUT 확인

Argo Rollout 확인


Argo Rollout 업데이트 테스트
# 이미지 태그 변경 blue > yellow
kubectl edit rollouts rollouts-demo -n test
# 모니터링
watch -d kubectl get pod -l app=rollouts-demo -n test -owide --show-labels



'CICD' 카테고리의 다른 글
| CI/CD 6주차(Argo CD)[3] - OpenLDAP + KeyCloak + Argo CD + Jenkins(2) (0) | 2025.11.22 |
|---|---|
| CI/CD 6주차(Argo CD)[3] - App of Apps, ApplicationSet (0) | 2025.11.22 |
| CI/CD 5주차(Argo CD) - 접근제어, SSO (0) | 2025.11.15 |
| CI/CD 4주차(Argo CD) (0) | 2025.11.09 |
| CI/CD 3주차(Jenkins + ArgoCD + gogs[Repo]) (0) | 2025.11.01 |