Cloud Deploy 서비스 아키텍처

이 문서에서는 Cloud Deploy와 애플리케이션 배포를 위해 Google Cloud Deploy와 함께 작동하는 외부 시스템 사이의 관계를 설명합니다. 이러한 시스템에는 기타 Google Cloud 서비스 및 타사 도구가 있습니다.

개요 보기

다음 다이어그램은 Cloud Deploy와 Cloud Deploy에 사용되는 개별 시스템 간의 관계를 보여줍니다.

Cloud Deploy 구성요소 간 관계

이 다이어그램에 표시된 것처럼 Cloud Deploy가 상호작용하는 시스템은 다음과 같습니다.

  • CI 시스템

    Cloud Deploy는 CI 프로세스의 한 출력이 출시 버전 만들기를 위한 Cloud Deploy API 또는 CLI 호출일 수 있는 한 대부분의 CI 도구를 지원합니다.

  • Cloud Build

    Cloud Deploy는 매니페스트를 렌더링하고 대상 런타임에 배포하기 위해 Cloud Build를 호출합니다.

  • Skaffold

    Cloud Deploy는 Cloud Build를 통해 Skaffold를 사용해서 매니페스트를 렌더링 및 배포하여 애플리케이션을 배포합니다.

  • Cloud Storage

    Cloud Deploy는 렌더링 소스 및 렌더링된 매니페스트를 Cloud Storage 버킷에 저장합니다.

  • Google Cloud ObservabilityCloud 감사 로그

    Google Cloud Observability는 Cloud Deploy의 로깅 데이터를 수집하고 사용할 수 있게 합니다.

    또한 감사 로깅을 참조하세요.

  • Pub/Sub

    Cloud Deploy는 메시지를 여러 Pub/Sub 주제에 게시합니다. 이 서비스를 사용해서 외부 워크플로, 테스트, 기타 관련 시스템과 통합할 수 있습니다.

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

  • 대상 런타임

    Cloud Deploy는 Cloud Build를 통해 skaffold apply를 사용해서 대상 런타임(GKE 또는 GKE Enterprise)에 애플리케이션을 배포합니다.

Cloud Deploy 리소스

다음 다이어그램은 Cloud Deploy에서 애플리케이션을 배포하는 데 사용하는 리소스와 해당 리소스 간의 관계를 보여줍니다.

Cloud Deploy 리소스 사이의 관계

이 다이어그램에 표시된 것처럼 리소스 간의 관계는 다음과 같습니다.

  • 배포 파이프라인은 0개 이상의 출시 버전을 생성할 수 있으며 멀티 대상 및 관련 하위 대상을 포함하여 1개 이상의 대상을 참조할 수 있습니다.

  • 배포 파이프라인은 Cloud Deploy 리소스에 대한 작업을 자동화하는 자동화 하나 이상을 참조할 수도 있습니다.

  • 출시 버전에는 출시 버전이 생성될 때 구성된 배포 파이프라인 및 대상의 '스냅샷'인 파이프라인 인스턴스가 포함됩니다.

  • 출시 버전마다 출시를 0개 이상 생성할 수 있으며 아티팩트를 0개 이상 참조할 수 있습니다.

    각 출시에는 배포 또는 배포 및 확인과 같이 논리적으로 그룹화된 작업 컬렉션을 나타내는 단계가 하나 포함됩니다.

    각 단계에는 출시에서 수행할 작업(배포 또는 확인)을 나타내는 작업 하나 이상이 포함됩니다. 각 작업에는 작업의 인스턴스인 작업 실행이 하나 이상 포함될 수 있습니다(예: 배포 시도). 작업 실행은 출시의 하위 리소스입니다.

    동시 배포에 사용되는 멀티 대상은 하위 대상에 해당하는 하위 출시를 생성하는 컨트롤러 출시를 생성합니다.

  • 각 출시는 하나의 대상과 연결됩니다.

    동시 배포의 경우 각 하위 대상이 하나의 하위 출시와 연결됩니다.

  • 각 대상은 하나의 GKE 또는 Anthos 클러스터 또는 애플리케이션의 다른 런타임 대상과 연결됩니다.

  • 대상은 하나 이상의 배포 파이프라인과 연결될 수 있습니다.

  • 아티팩트는 출시의 일부로 대상 런타임에 배포되는 CI 프로세스의 출력(예: 컨테이너 이미지)입니다.

또한 출시에는 단계가 한 개 이상 있고 단계에는 한 개 이상의 작업 및 작업 실행이 있습니다.

리소스 출시

이 다이어그램에 표시된 것처럼 출시에는 다음이 포함됩니다.

  • 단계

    단계에는 하나 이상의 작업(예: 배포 또는 배포 및 확인)이 포함됩니다. 출시마다 단계가 하나 이상 있습니다. 단계는 출시의 하위 메시지입니다.

  • 작업

    출시 시 수행할 특정 작업(예: 배포 또는 확인). 작업은 출시의 하위 메시지입니다.

  • JobRuns

    작업 인스턴스(예: 확인 시도). 작업마다 JobRun이 0개 이상 있을 수 있습니다. JobRun은 출시의 하위 리소스입니다.

자동화에는 AutomationRun 리소스 0개 이상에서 참조할 수 있는 자동화 규칙이 포함되어 있습니다. AutomationRun은 실행된 자동화 규칙의 인스턴스입니다(예: 한 대상에서 다른 대상으로 자동 승격). 자동화 및 AutomationRun 리소스는 배포 파이프라인 아래의 피어-하위 리소스입니다.

자동화 리소스

출시 버전 전달을 위한 통합 방법

이 섹션에서는 애플리케이션 출시 버전 전달을 자동화하기 위해 Cloud Deploy가 이 문서에 나열된 구성요소들과 상호작용하는 방법을 설명합니다.

  1. CI 시스템은 Cloud Deploy 전달 파이프라인을 호출합니다.

    CI 프로세스는 CLI 또는 API를 사용해서 Cloud Deploy를 호출하여 새 출시 버전을 만들고 빌드 아티팩트 또는 참조를 이미지에 전달합니다.

    CI 시스템 통합에 대한 자세한 내용은 기타 시스템과 Cloud Deploy 통합을 참조하세요.

  2. 새 출시 버전이 생성되면 Cloud Deploy가 다음을 수행합니다.

    1. 전달 파이프라인의 인스턴스를 출시 버전의 일부로 저장합니다.

      전달 파이프라인 구성이 변경되더라도 이 파이프라인 인스턴스는 이 출시 버전에 대해 변경되지 않은 상태로 유지됩니다. 자세한 내용은 출시 버전별 파이프라인 인스턴스를 참조하세요.

      또한 Skaffold 버전도 출시 버전의 일부로 저장됩니다. 대부분의 경우 이 버전이 기본 Skaffold 버전이지만 다른 버전을 지정할 수 있으므로 해당 정보가 저장됩니다.

    2. Cloud Build를 호출하여 Cloud Storage에서 Skaffold 렌더링 소스를 가져옵니다.

      Cloud Deploy는 기본 또는 대체 Cloud Storage 버킷에 렌더링 소스를 저장합니다.

    3. 단일 유효 매니페스트를 생성하려면 skaffold diagnose를 호출합니다(출시 버전 생성 시 저장되는 Skaffold 버전 사용).

    4. render 작업을 호출합니다.

      기본 제공 대상을 사용하는 경우 Cloud Deploy는 skaffold render를 호출하여 제공된 이미지나 빌드 아티팩트를 사용해 매니페스트를 렌더링합니다. Cloud Deploy는 spec.templates.spec.containers.image의 이미지 이름을 gcloud deploy releases create 명령어에 제공되었거나 해당 명령어로 참조되는 빌드 아티팩트 파일에 있는 전체 이미지 경로(다이제스트 또는 태그 포함)로 바꿉니다.

      커스텀 대상을 사용하는 경우 Cloud Deploy는 커스텀 대상 유형에 정의된 render 작업을 호출합니다.

      Cloud Deploy는 기본 또는 대체 Cloud Storage 버킷에 렌더링된 매니페스트를 저장합니다.

      Cloud Deploy는 기본 또는 대체 실행 환경을 사용해서 이러한 작업을 수행합니다.

  3. 출시가 생성되면(출시 버전 생성 후 자동으로 또는 나중에 주문형으로) Cloud Deploy에서 다음을 수행합니다.

    1. 지정된 경우 배포 전 후크를 호출합니다.

      카나리아 배포 전략을 사용하는 경우 첫 번째 단계를 시작할 때 배포 전 후크가 호출됩니다.

    2. deploy 작업을 호출합니다.

      기본 제공 대상을 사용하는 경우 Cloud Deploy는 skaffold apply를 호출하여 출시를 자동으로 만들고 첫 번째 대상에 배포합니다. 기본 제공 대상을 사용하는 경우 출시 버전 생성 시 첫 번째 출시가 자동으로 생성됩니다.

      커스텀 대상을 사용하는 경우 Cloud Deploy에서 커스텀 대상 유형에 정의된 deploy 작업을 호출하여 첫 번째 대상에 대한 출시를 자동으로 만듭니다.

      기본 제공 대상과 커스텀 대상의 경우 첫 번째 대상에 대한 출시는 명령줄을 사용하여 출시 버전을 만든 경우에만 자동으로 수행됩니다.

      첫 번째 대상에 대한 배포 프로세스는 다음 단계에 설명된 승격과 동일합니다.

    3. 배포 파이프라인 구성verifytrue이고 확인이 Skaffold 구성에 지정된 경우 skaffold verify를 호출합니다.

    4. 배포 후 후크가 지정된 경우, verify 후에, verify가 지정된 경우에 배포 후 후크를 호출합니다. 그렇지 않으면 배포 후 후크는 deploy 이후에 호출됩니다.

      카나리아 배포 전략을 사용하는 경우 배포 후 후크는 최종 출시 단계의 마지막 작업으로 수행됩니다.

  4. 다음 대상으로 출시 버전을 승격할 때 Cloud Build는 Cloud Storage에서 대상 특정 매니페스트를 검색합니다. 그런 후 Cloud Build가 skaffold apply를 호출해서 렌더링된 매니페스트를 지정된 대상 런타임에 적용합니다.

    대상에 승인이 필요하면 CLI 또는 콘솔을 사용해서 승인 또는 거절할 수 있습니다.

    또한 Cloud Deploy는 승인 워크플로 자동 시작을 위해 구독할 수 있는 Pub/Sub 메시지를 생성합니다.

    Cloud Deploy는 Skaffold 버전 및 이 출시 버전과 연관된 파이프라인 인스턴스를 사용하고 기본 또는 커스텀 실행 환경에서 이 단계를 수행합니다.

    이 프로세스는 승격뿐만 아니라 롤백 및 재배포를 위해서도 필요합니다.

  5. Cloud Deploy 작업을 수행할 때 이 서비스는 알림을 일부 Pub/Sub 주제에 게시합니다(예: 출시에 승인이 필요한 경우).

    이 통합 및 기타 통합에 대한 자세한 내용은 외부 시스템과 Cloud Deploy 통합을 참조하세요.

  6. 배포 파이프라인 내에서 다양한 작업이 자동으로 수행되도록 자동화를 지정할 수 있습니다. 이러한 작업은 지정된 시간에 실행될 수 있습니다. automationRun은 자동화 규칙 실행을 나타냅니다.

  7. 이 서비스는 Cloud Deploy 작업 전반에서 플랫폼 로그와 감사 로그를 Google Cloud Observability 및 Cloud 감사 로그에 기록합니다.

이러한 모든 단계에서 제어 흐름 및 리소스 액세스는 Identity and Access Management를 사용해서 제한됩니다.

다음 단계