Google Cloud Deploy 서비스 아키텍처

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

개요 보기

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

Cloud Deploy 구성요소 간 관계

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

  • CI 시스템

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

  • Cloud Build

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

  • Skaffold

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

  • Cloud Storage

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

  • Google Cloud 운영 제품군Cloud 감사 로그.

    Google Cloud 운영 제품군은 Google Cloud Deploy에 대해 로깅 데이터를 수집하고 사용 설정합니다.

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

  • Pub/Sub

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

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

  • 대상 런타임

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

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

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

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

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

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

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

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

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

      또한 Skaffold 버전도 출시 버전의 일부로 저장됩니다.

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

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

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

    4. 제공된 이미지 또는 빌드 아티팩트를 사용해서 매니페스트를 렌더링하려면 skaffold render를 호출합니다.

      Google Cloud Deploy는 spec.templates.spec.containers.image의 이미지 이름을 gcloud deploy releases create 명령어에 제공되었거나 해당 명령어로 참조되는 빌드 아티팩트 파일에 있는 전체 이미지 경로(다이제스트 또는 태그 포함)로 바꿉니다.

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

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

    5. 출시 버전을 만들기 위해 CLI에서 Google Cloud Deploy를 호출하면 skaffold apply를 호출해서 출시를 만들고 첫 번째 대상에 배포하는 작업이 자동으로 수행됩니다.

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

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

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

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

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

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

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

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

  5. Google Cloud Deploy 작업 중 이 서비스는 플랫폼 로그 및 감사 로그를 Google Cloud 운영 제품군 및 Cloud 감사 로그에 기록합니다.

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

다음 단계