블루-그린은 Kubernetes 클러스터에서 동일하게 배포하고 구성하는 두 개의 Docker 호스트를 사용하는 배포 모델입니다. 블루-그린 배포 모델을 사용하면 Code Stream의 파이프라인에서 애플리케이션을 배포할 때 환경에서 발생할 수 있는 다운타임을 줄일 수 있습니다.

배포 모델의 블루 및 그린 인스턴스는 각각 서로 다른 용도로 사용됩니다. 한 번에 하나의 인스턴스만 애플리케이션을 배포하는 활성 트래픽을 수락하며, 각 인스턴스는 특정 시간에 해당 트래픽을 수락합니다. 블루 인스턴스는 애플리케이션의 첫 번째 버전을 수신하고 그린 인스턴스는 두 번째 버전을 수신합니다.

블루-그린 환경의 로드 밸런서는 활성 트래픽이 애플리케이션을 배포할 때 사용할 경로를 결정합니다. 블루-그린 모델을 사용하는 경우 사용자 환경은 작동 상태를 유지하고, 사용자는 다운타임을 감지하지 못하며, 파이프라인은 애플리케이션을 지속적으로 통합하여 운영 환경에 배포합니다.

Code Stream에서 생성하는 파이프라인은 다음 두 단계의 블루-그린 배포 모델을 나타냅니다. 한 단계는 개발 단계이고, 다른 한 단계는 운영 단계입니다.

Code Stream 파이프라인 업무 공간은 지속적 통합 작업 및 사용자 지정 작업을 위해 Docker 및 Kubernetes를 지원합니다.

업무 공간 구성에 대한 자세한 내용은 파이프라인 작업 공간 구성에서 참조하십시오.

표 1. 블루-그린 배포의 개발 단계 작업
작업 유형 작업
Kubernetes 블루-그린 배포를 위한 네임스페이스를 생성합니다.
Kubernetes Docker 허브에 대한 비밀 키를 생성합니다.
Kubernetes 애플리케이션 배포에 사용되는 서비스를 생성합니다.
Kubernetes 블루 배포를 생성합니다.
폴링 블루 배포를 확인합니다.
Kubernetes 네임스페이스를 제거합니다.
표 2. 블루-그린 배포의 운영 단계 작업
작업 유형 작업
Kubernetes 그린이 블루에서 서비스 세부 정보를 가져옵니다.
Kubernetes 그린 복제 집합에 대한 세부 정보를 가져옵니다.
Kubernetes 그린 배포를 생성하고 비밀 키를 사용하여 컨테이너 이미지를 가져옵니다.
Kubernetes 서비스를 업데이트합니다.
폴링 운영 URL에서 배포가 성공했는지 확인합니다.
Kubernetes 블루 배포를 완료합니다.
Kubernetes 블루 배포를 제거합니다.

사용자 고유의 블루-그린 배포 모델에서 애플리케이션을 배포하려면 Code Stream에서 다음 두 단계를 포함하는 파이프라인을 생성합니다. 첫 번째 단계는 애플리케이션을 블루 인스턴스에 배포하는 블루 작업을 포함하고, 두 번째 단계는 애플리케이션을 그린 인스턴스에 배포하는 그린 작업을 포함합니다.

CICD 스마트 파이프라인 템플릿을 사용하여 파이프라인을 생성할 수 있습니다. 이 경우 템플릿에서 파이프라인 단계와 작업을 생성하고 배포 선택 내용을 포함합니다.

파이프라인을 수동으로 생성하는 경우 파이프라인 단계를 직접 계획해야 합니다. 예를 보려면 작업을 수동으로 추가하기 전에 Code Stream에서 CICD 네이티브 빌드 계획 항목을 참조하십시오.

이 예에서는 CICD 스마트 파이프라인 템플릿을 사용하여 블루-그린 파이프라인을 생성합니다.

사전 요구 사항

  • AWS에서 작동 중인 Kubernetes 클러스터에 액세스할 수 있는지 확인합니다.
  • 블루-그린 배포 환경을 설정했고 블루 및 그린 인스턴스를 동일하게 구성했는지 확인합니다.
  • Code Stream에서 애플리케이션 이미지를 AWS의 Kubernetes 클러스터에 배포하는 Kubernetes 끝점을 생성합니다.
  • CICD 스마트 파이프라인 템플릿 사용에 관한 내용을 숙지합니다. 스마트 파이프라인 템플릿을 사용하기 전에 Code Stream에서 CICD 기본 구축 계획 항목을 참조하십시오.

프로시저

  1. 파이프라인 > 새 파이프라인 > 스마트 템플릿 > CI/CD 템플릿을 클릭합니다.
  2. CICD 스마트 파이프라인 템플릿의 CI 부분에 대한 정보를 입력하고 다음을 클릭합니다.
  3. 스마트 파이프라인 템플릿의 CD 부분에 대한 입력을 완료합니다.
    1. 애플리케이션 배포를 위한 환경을 선택합니다. 예를 들어 개발운영을 선택합니다.
    2. 배포를 위해 파이프라인에서 사용할 서비스를 선택합니다.
    3. 배포 영역에서 개발 환경 및 운영 환경을 위한 클러스터 끝점을 선택합니다.
    4. 운영 배포 모델의 경우 블루-그린을 선택하고 생성을 클릭합니다.

    스마트 파이프라인 템플릿에서 서비스, 배포를 선택하고 운영 배포 모델에 대해 블루-그린을 클릭합니다.

결과

축하합니다! 스마트 파이프라인 템플릿을 사용하여 AWS의 Kubernetes 운영 클러스터에 있는 블루-그린 인스턴스에 애플리케이션을 배포하는 파이프라인을 생성했습니다.

예: 일부 블루-그린 배포 작업을 위한 YAML 코드 예

블루-그린 배포의 Kubernetes 파이프라인 작업에 나타나는 YAML 코드는 네임스페이스, 서비스 및 배포를 생성하는 다음 예와 유사할 수 있습니다. 개인 소유 저장소에서 이미지를 다운로드해야 하는 경우 YAML 파일에 Docker 구성 비밀이 있는 섹션이 포함되어야 합니다. 스마트 파이프라인 템플릿을 사용하기 전에 Code Stream에서 CICD 기본 구축 계획의 CD 부분을 참조하십시오.

스마트 파이프라인 템플릿으로 파이프라인을 생성한 후 필요에 따라 배포에 대한 작업을 수정할 수 있습니다.

네임스페이스를 생성하는 YAML 코드 예:

apiVersion: v1
kind: Namespace
metadata:
  name: codestream-82855
  namespace: codestream-82855

서비스를 생성하는 YAML 코드 예:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: codestream-demo
  name: codestream-demo
  namespace: bluegreen-799584
spec:
  minReadySeconds: 0
  ports:
  - port: 80
  selector:
    app: codestream-demo
    tier: frontend
  type: LoadBalancer

배포를 생성하는 YAML 코드 예:

apiVersion: extensions/v1
kind: Deployment
metadata:
  labels:
    app: codestream-demo
  name: codestream-demo
  namespace: bluegreen-799584
spec:
  minReadySeconds: 0
  replicas: 1
  selector:
    matchLabels:
      app: codestream-demo
      tier: frontend
  template:
    metadata:
      labels:
        app: codestream-demo
        tier: frontend
    spec:
      containers:
      - image: ${input.image}:${input.tag}
        name: codestream-demo
        ports:
        - containerPort: 80
          name: codestream-demo
      imagePullSecrets:
      - name: jfrog-2
      minReadySeconds: 0

다음에 수행할 작업

Code Stream 사용 방법에 대한 자세한 내용을 보려면 Code Stream 사용을 위한 자습서 항목을 참조하십시오.

배포를 롤백하려면 Code Stream에서 배포를 롤백하는 방법 항목을 참조하십시오.

추가로 참조하려면 Code Stream 관리자 및 개발자를 위한 추가 리소스 항목을 참조하십시오.