상세 컨텐츠

본문 제목

k8s의 배포전략 및 서비스의 목적,동작

본문

[C181] 블루/그린 또는 카나리아 배포 전략은 Kubernetes 배포 리소스에서 명시적으로 찾을 수 없습니다. 그러나 다른 Kubernetes 기능 및 리소스를 사용하여 이러한 배포 전략을 달성할 수 있습니다.


블루/그린 구현의 경우 다음 단계를 따를 수 있습니다.

  1. 두 개의 동일한 환경을 설정합니다. 하나는 파란색 환경(현재 버전)을 나타내고 다른 하나는 녹색 환경(새 버전)을 나타냅니다.
  2. 친환경 환경에서 애플리케이션의 새 버전을 배포합니다.
  3. Kubernetes 서비스(예: ClusterIP 또는 NodePort)를 사용하여 애플리케이션을 사용자에게 노출합니다.
  4. 서비스 구성을 업데이트하거나 Kubernetes 수신 규칙을 사용하여 블루 환경에서 그린 환경으로 트래픽을 점진적으로 전환합니다.녹색 환경에서 문제나 오류를 모니터링합니다.
  5. 문제가 발생하면 트래픽을 다시 블루 환경으로 리디렉션하여 쉽게 되돌릴 수 있습니다.

 

카나리아 구현의 경우 프로세스는 비슷하지만 다음과 같이 수정됩니다.

  1. 별도의 환경에 새 버전을 배포하는 대신 동일한 환경에서 기존 버전과 함께 배포합니다.
  2. 트래픽의 작은 부분(예: 5%)을 새 버전으로 보내고 대부분은 기존 버전으로 계속 이동합니다.
  3. 문제가 있는지 새 버전을 면밀히 모니터링합니다.
  4. 안정성과 성능을 기반으로 새 버전으로 이동하는 트래픽의 비율을 점진적으로 늘립니다.
  5. 문제가 발생하면 새 버전으로 트래픽을 빠르게 줄이거나 완전히 롤백할 수 있습니다.


블루/그린 또는 카나리아 배포를 달성하기 위해 Kubernetes 수신 컨트롤러, 서비스 메시(예: Istio) 또는 Kubernetes 위에 고급 배포 전략을 제공하는 Flagger와 같은 외부 도구를 사용할 수 있습니다.


[C182] Kubernetes의 네 가지 유형의 서비스는 목적과 동작이 다릅니다.

  • ClusterIP: 기본 유형이며 서비스를 내부 클러스터 IP 주소에 노출합니다. 클러스터 내에서만 서비스에 액세스할 수 있도록 하여 클러스터 내의 다른 포드 또는 서비스가 액세스할 수 있도록 합니다.
  • NodePort: 이 유형은 각 클러스터 노드의 IP 주소에 있는 정적 포트에 서비스를 노출합니다. 모든 노드의 IP와 NodePort를 주소 지정하여 외부 트래픽이 서비스에 액세스할 수 있도록 합니다.
  • LoadBalancer: 이 유형은 트래픽을 서비스로 라우팅하는 외부 로드 밸런서(클라우드 공급자가 제공)를 프로비저닝합니다. 외부 클라이언트가 로드 밸런서의 IP 주소를 사용하여 서비스에 액세스하도록 허용합니다.
  • ExternalName: 이 유형은 클러스터 외부의 외부 서비스에 대한 별칭을 생성합니다. 선택기 또는 끝점을 정의하지 않지만 DNS 확인을 사용하여 클러스터 외부에서 실행되는 서비스에 대한 액세스를 허용합니다.

 

즉, ClusterIP 및 NodePort는 주로 내부 클러스터 통신에 사용되는 반면 LoadBalancer는 서비스에 대한 외부 진입점을 제공합니다. ExternalName은 외부 서비스를 참조하는 데 사용됩니다.

관련글 더보기