[Traffic control] Istio와 Flagger를 활용한 Canary 배포

y001·2025년 4월 26일

Istio 실전 스터디

목록 보기
13/26

이번 글에서는 Flagger를 이용하여 Istio 환경에서 Canary 배포를 수행하는 방법을 단계별로 실습하고 정리한다. Istio 서비스 메시 환경에서 Flagger를 사용하면 점진적으로 트래픽을 새로운 버전의 애플리케이션으로 전환하면서 배포 안정성을 확인할 수 있다.

실습 환경 준비

1. Istio 설치 및 Flagger 연동

Istio가 설치된 Kubernetes 클러스터를 가정한다. Istio 설치가 안 되어 있다면 공식 문서를 따라 설치한다.

# Flagger 설치
helm repo add flagger https://flagger.app
helm upgrade -i flagger flagger/flagger \
  --namespace=istio-system \
  --set meshProvider=istio \
  --set metricsServer=http://prometheus.istio-system:9090

2. 샘플 애플리케이션 배포

샘플 애플리케이션으로 Podinfo를 활용한다.

kubectl create namespace test
kubectl label namespace test istio-injection=enabled

helm repo add podinfo https://stefanprodan.github.io/podinfo
helm upgrade -i podinfo podinfo/podinfo \
  --namespace=test \
  --set replicaCount=2 \
  --set image.tag=6.0.0

3. Canary 리소스 정의

다음과 같은 Canary CRD를 통해 Flagger가 Canary 배포 전략을 수행하도록 설정한다.

apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
  name: podinfo
  namespace: test
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: podinfo
  service:
    port: 9898
    gateways:
    - istio-system/public-gateway
    hosts:
    - podinfo.example.com
  analysis:
    interval: 1m
    threshold: 5
    stepWeight: 20
    maxWeight: 50
    metrics:
    - name: request-success-rate
      thresholdRange:
        min: 99
      interval: 1m

위 설정의 의미:

  • interval: 배포 단계 간 시간 간격
  • threshold: 성공/실패 판단 시 허용 가능한 실패 횟수
  • stepWeight: 매 단계 트래픽 증가율
  • maxWeight: Canary 버전으로 보낼 최대 트래픽 비율

4. Canary 배포 수행

새로운 버전으로 업그레이드하는 예시이다.

helm upgrade -i podinfo podinfo/podinfo \
  --namespace=test \
  --set replicaCount=2 \
  --set image.tag=6.0.1

이때 Flagger가 Canary 배포를 감지하여, 점진적으로 새로운 버전에 트래픽을 전환하며 자동으로 상태를 모니터링한다.

5. 배포 상태 모니터링

배포 진행 상태는 다음 명령으로 확인할 수 있다.

kubectl -n test get canary podinfo -w

배포 로그 확인:

kubectl -n istio-system logs deploy/flagger -f

6. 배포 결과 및 트래픽 흐름 확인

Istio의 Kiali를 통해 실제 트래픽이 점진적으로 새 버전으로 전환되는 모습을 시각적으로 확인할 수 있다.

마무리하면서

이번 실습을 통해 Istio 서비스 메시 환경에서 Flagger를 이용한 Canary 배포의 구성을 실제 코드 레벨까지 수행하였다. Flagger는 배포 과정 중 서비스 품질을 모니터링하고 문제가 발생하면 자동으로 이전 버전으로 롤백하여 서비스의 안정성을 높여준다.

0개의 댓글