Kubernetes 배포에는 블루/그린 또는 카나리아 배포에 대한 기본 제공 지원이 없지만 다양한 기술과 Kubernetes 기능을 사용하여 이러한 배포 전략을 달성할 수 있습니다. 다음은 Kubernetes에서 블루/그린 및 카나리아 배포를 구현하는 몇 가지 접근 방식입니다.
track
레이블을 사용하여 다른 릴리스를 구별할 수 있다.
기본(primary), 안정(stable) 릴리스에는 값이 stable
인 track
레이블이 있다.
name: frontend
replicas: 3
...
labels:
app: guestbook
tier: frontend
track: stable
...
image**: gb-frontend:v3
그런 다음 서로 다른 값(예: canary
)으로 track
레이블을 전달하는 방명록 프론트엔드의 새 릴리스를 생성하여, 두 세트의 파드가 겹치지 않도록 할 수 있다.
name: frontend-canary
replicas: 1
...
labels:
app: guestbook
tier: frontend
track: canary
...
image: gb-frontend:v4
프론트엔드 서비스는 레이블의 공통 서브셋을 선택하여(즉, track
레이블 생략) 두 레플리카 세트에 걸쳐 있으므로, 트래픽이 두 애플리케이션으로 리디렉션된다.
selector:
app: guestbook
tier: frontend
안정 및 카나리 릴리스의 레플리카 수를 조정하여 실제 운영 트래픽을 수신할 각 릴리스의 비율을 결정한다(이 경우, 3:1).
확신이 들면, 안정 릴리스의 track을 새로운 애플리케이션 릴리스로 업데이트하고 카나리를 제거할 수 있다.
Kubernetes의 네 가지 서비스 유형(ClusterIP, NodePort, LoadBalancer 및 ExternalName)은 서로 다른 용도로 사용되며 고유한 특성을 가지고 있습니다. 각 유형에 대한 분석은 다음과 같습니다.
요약하면 ClusterIP 및 NodePort는 주로 내부 클러스터 통신 및 개발/테스트 시나리오에 사용되는 반면 LoadBalancer는 로드 밸런싱 기능으로 서비스를 공개적으로 노출하는 데 사용됩니다. 반면에 ExternalName은 프록시 또는 로드 밸런싱 기능 없이 서비스를 외부 DNS 이름에 매핑하기 위한 것입니다.