Cloud Deploy 개요

Cloud Deploy는 정의된 승격 시퀀스에 따라 애플리케이션을 일련의 대상 환경으로 자동 전달하는 관리형 서비스입니다. 업데이트된 애플리케이션을 배포하려면 전송 파이프라인에서 수명 주기를 관리하는 출시를 만들어야 합니다.

Cloud Deploy 파이프라인 작동 방식

Cloud Deploy 배포 파이프라인에는 다음 정보가 포함됩니다.

  • 배포 파이프라인을 참조할 때 사용하는 이름과 설명입니다.

  • 구성된 타겟에 배포하는 순서를 설명하는 승격 시퀀스가 포함됩니다.

  • 선택사항인 라벨 및 주석입니다.

  • 역시 선택사항인 대상 정의 자체입니다.

타겟은 동일한 전송 파이프라인 구성 파일 또는 하나 이상의 개별 파일에서 정의될 수 있습니다. 여러 전송 파이프라인이 동일한 타겟 또는 타겟을 사용할 수 있지만 지정된 타겟은 지정된 전송 파이프라인에서 한 번만 사용할 수 있습니다.

Cloud Deploy 전송 프로세스

다음은 간단한 Cloud Deploy 지속적 배포 시나리오에서 발생하는 일을 설명합니다.

  1. YAML 구성 파일에서 배포 파이프라인을 정의합니다.

    이 구성 파일은 애플리케이션을 일련의 타겟에 배포할 프로모션 시퀀스를 정의합니다.

    또한 Cloud Deploy가 렌더링 및 배포 작업을 수행하는 데 필요한 Skaffold 구성이 필요합니다.

  2. 파이프라인 구성 파일 또는 별도의 파일 또는 파일에서 타겟을 정의합니다.

  3. Cloud Deploy 서비스에 파이프라인을 등록합니다.

    이제 서비스가 애플리케이션에 대해 알고 있으므로 정의된 프로모션 시퀀스에 따라 타겟에 대한 배포를 관리합니다.

  4. CI 프로세스 출력에는 배포 파이프라인을 시작하기 위한 Cloud Deploy 호출이 포함됩니다.

    이 호출은 각 타겟의 렌더링된 매니페스트를 나타내는 release 리소스를 만듭니다. 각 리소스는 제공된 렌더링 소스, skaffold.yaml, 배포할 특정 컨테이너 이미지에 대한 참조를 사용하여 생성됩니다. 출시를 처음 만들 때 Cloud Deploy가 출시 버전을 첫 번째 대상 환경과 연결하는 rollout 리소스를 자동으로 만듭니다. 이 출시에 따라 애플리케이션이 첫 번째 타겟에 배포됩니다.

    Cloud Deploy 배포 파이프라인에 제공할 하나 이상의 컨테이너 이미지를 출력하는 한 모든 CI 도구를 사용할 수 있습니다.

    또한 출시 버전을 만들고 배포 파이프라인을 호출하기 위한 호출을 CI 도구에서 수행할 필요가 없습니다. 스크립트 또는 CI 프로세스의 완료에 응답하는 모든 시스템에서 호출을 수행할 수 있습니다.

  5. 다음 대상에 애플리케이션을 배포할 준비가 되면 Cloud Deploy를 호출하여 이를 승격합니다.

    두 경우 모두 프로모션을 호출하면 Cloud Deploy가 새 출시를 만듭니다.

  6. 프로모션은 프로모션 시퀀스의 모든 타겟을 진행하며 마지막 단계는 prod(또는 애플리케이션을 프로덕션에 적용하기 위해 최종 타겟에 사용하는 이름)입니다.

    출시 생성 및 프로모션 프로세스는 Cloud Deploy 서비스 아키텍처에 자세히 설명되어 있습니다.

Cloud Deploy는 파이프라인 실행 전반에 걸쳐 측정항목 및 감사 세부정보를 수집합니다.

프로모션

출시를 승격하려면 파이프라인에 정의된 프로모션 시퀀스의 다음 타겟에 배포해야 합니다. Cloud Deploy를 처음 호출하면 release가 생성되고 프로모션 시퀀스의 첫 번째 타겟에 배포하는 데 사용되는 rollout 리소스가 생성됩니다. 이후 출시를 승격할 때마다 다음 타겟으로 출시됩니다.

승인

모든 타겟으로 승격하는 데 승인이 필요하다고 지정할 수 있습니다. 예를 들어 프로덕션 타겟으로 승격하려면 승인이 필요할 수 있습니다. 타겟의 승인을 요구하려면 타겟 정의에서 requireApproval 속성을 설정합니다.

타겟의 승인이 필요하면 Cloud Deploy는 통합 시스템에서 사용할 수 있는 Pub/Sub 메시지를 생성합니다. 예를 들어 티켓 판매 시스템에서 메시지를 구독하여 승인 워크플로를 시작할 수 있습니다.

승격 및 승격 승인 관리에 대한 자세한 내용은 승인 필요를 참조하세요.

알림

Cloud Deploy는 다음 이벤트에 대해 Pub/Sub 알림을 제공합니다.

  • 렌더링: 시작, 성공, 실패
  • 배포: 시작, 성공, 실패
  • 승인 필요
  • 승인 승인됨
  • 승인 거부됨

Cloud Deploy는 Pub/Sub 주제를 사용하여 이러한 알림을 보냅니다.

자세한 내용은 Cloud Deploy 알림 사용을 참조하세요.

롤백

Cloud Deploy는 모든 대상의 배포된 애플리케이션에 대한 롤백을 지원합니다. Cloud Deploy의 롤백은 마지막으로 배포된 출시 버전에 대한 출시 트리거를 포함합니다. 새 출시에서는 성공적인 배포에 사용된 것과 동일한 매개변수를 사용합니다.

자세한 내용은 배포 롤백을 참조하세요.

Skaffold 및 Cloud Deploy 정보

Cloud Deploy는 Skaffold를 사용하여 렌더링, 배포, 확인을 수행합니다. Skaffold를 사용하면 로컬 개발 루프를 Cloud Deploy 지속적 배포 파이프라인에 쉽게 연결할 수도 있습니다.

Cloud Deploy가 Skaffold와 통합되는 방법에 대한 자세한 내용은 Skaffold 개요를 참조하세요.

다른 Google Cloud 도구를 통한 Cloud Deploy

Cloud Deploy는 CI/CD 파이프라인 업스트림에서 거의 모든 도구를 지원합니다. 즉, 모든 개발 환경 및 소스 코드 저장소, 모든 지속적 통합(CI) 시스템, 모든 아티팩트 저장소를 사용할 수 있습니다.

다운스트림에서 Cloud Deploy는 Google Kubernetes Engine, Cloud Run, GKE Enterprise에 배포합니다.

대부분 Google Cloud 도구를 사용한 경우 소스-프로덕션 흐름은 다음과 같습니다.

  1. Cloud Code를 사용하여 애플리케이션 소스를 만듭니다.

    Cloud Code는 널리 사용되는 여러 IDE(VS Code, IntelliJ, Cloud Shell)를 확장하여 Google Cloud에서 배포 및 실행할 애플리케이션을 보다 쉽게 빌드할 수 있습니다.

  2. Skaffold를 사용하여 로컬 개발 루프를 관리합니다.

    Cloud Deploy는 Cloud Build를 통해 Skaffold를 사용하여 매니페스트를 렌더링하고 배포합니다. 이 통합은 skaffold.yaml 파일을 유지보수해야 한다는 의미이지만 Skaffold를 로컬 개발 흐름의 일부로 만들어야 하는 것은 아닙니다. 하지만 지속적 개발에 활용할 수 있습니다.

  3. Cloud Build를 사용하여 애플리케이션을 빌드합니다.

    Cloud Build를 사용하면 소스 코드 저장소에 대한 커밋에서 트리거될 수 있는 CI 파이프라인을 설정할 수 있습니다. Cloud Build의 출력은 배포 가능한 컨테이너 이미지를 포함한 아티팩트입니다. Cloud Deploy에 호출을 추가하여 출시 버전을 만들고 배포 파이프라인을 호출할 수 있습니다.

  4. Artifact Registry에 아티팩트를 저장합니다.

    Cloud Deploy는 아티팩트와 종속 항목을 중앙에서 저장할 수 있는 Artifact Registry에서 컨테이너 이미지를 가져옵니다.

  5. 컨테이너 이미지를 가져와서 n 타겟의 진행 상황에서 배포하도록 Cloud Deploy에서 배포 파이프라인을 구성합니다.

    배포 파이프라인에서 식별된 각 대상은 애플리케이션이 궁극적으로 배포되는 GKE 클러스터, Cloud Run, 또는 GKE 클러스터를 나타냅니다.

  6. GKE, Cloud Run, GKE Enterprise에서 애플리케이션을 관리합니다.

    GKE는 Kubernetes에서 컨테이너화된 애플리케이션을 실행하기 위한 Google Cloud 관리형 환경입니다.

    Cloud Run을 사용하면 서버리스 환경에서 컨테이너를 실행할 수 있습니다.

    GKE Enterprise는 클라우드 및 온프레미스 환경에 일관적인 개발 및 운영 경험을 제공합니다.

  7. Google Cloud Observability를 사용하여 애플리케이션 성능을 모니터링합니다.

    Google Cloud Observability는 애플리케이션에 대한 통합 모니터링과 로깅을 제공합니다.

다음 단계