이 문서에서는 Cloud Deploy와 애플리케이션 배포를 위해 Google Cloud Deploy와 함께 작동하는 외부 시스템 사이의 관계를 설명합니다. 이러한 시스템에는 기타 Google Cloud 서비스 및 타사 도구가 있습니다.
개요 보기
다음 다이어그램은 Cloud Deploy와 Cloud Deploy에 사용되는 개별 시스템 간의 관계를 보여줍니다.
이 다이어그램에 표시된 것처럼 Cloud Deploy가 상호작용하는 시스템은 다음과 같습니다.
CI 시스템
Cloud Deploy는 CI 프로세스의 한 출력이 출시 버전 만들기를 위한 Cloud Deploy API 또는 CLI 호출일 수 있는 한 대부분의 CI 도구를 지원합니다.
-
Cloud Deploy는 매니페스트를 렌더링하고 대상 런타임에 배포하기 위해 Cloud Build를 호출합니다.
-
Cloud Deploy는 Cloud Build를 통해 Skaffold를 사용해서 매니페스트를 렌더링 및 배포하여 애플리케이션을 배포합니다.
-
Cloud Deploy는 렌더링 소스 및 렌더링된 매니페스트를 Cloud Storage 버킷에 저장합니다.
Google Cloud Observability 및 Cloud 감사 로그
Google Cloud Observability는 Cloud Deploy의 로깅 데이터를 수집하고 사용할 수 있게 합니다.
또한 감사 로깅을 참조하세요.
-
Cloud Deploy는 메시지를 여러 Pub/Sub 주제에 게시합니다. 이 서비스를 사용해서 외부 워크플로, 테스트, 기타 관련 시스템과 통합할 수 있습니다.
자세한 내용은 Cloud Deploy 알림 구독을 참조하세요.
대상 런타임
Cloud Deploy는 Cloud Build를 통해
skaffold apply
를 사용해서 대상 런타임(GKE 또는 GKE Enterprise)에 애플리케이션을 배포합니다.
Cloud Deploy 리소스
다음 다이어그램은 Cloud Deploy에서 애플리케이션을 배포하는 데 사용하는 리소스와 해당 리소스 간의 관계를 보여줍니다.
이 다이어그램에 표시된 것처럼 리소스 간의 관계는 다음과 같습니다.
배포 파이프라인은 0개 이상의 출시 버전을 생성할 수 있으며 멀티 대상 및 관련 하위 대상을 포함하여 1개 이상의 대상을 참조할 수 있습니다.
배포 파이프라인은 Cloud Deploy 리소스에 대한 작업을 자동화하는 자동화 하나 이상을 참조할 수도 있습니다.
각 출시 버전에는 출시 버전이 생성될 때 구성된 배포 파이프라인 및 대상의 '스냅샷'인 파이프라인 인스턴스가 포함됩니다.
출시 버전마다 출시를 0개 이상 생성할 수 있으며 아티팩트를 0개 이상 참조할 수 있습니다.
각 출시에는 배포 또는 배포 및 확인과 같이 논리적으로 그룹화된 작업 컬렉션을 나타내는 단계가 하나 포함됩니다.
각 단계에는 출시에서 수행할 작업(배포 또는 확인)을 나타내는 작업 하나 이상이 포함됩니다. 각 작업에는 작업의 인스턴스인 작업 실행이 하나 이상 포함될 수 있습니다(예: 배포 시도). 작업 실행은 출시의 하위 리소스입니다.
각 출시는 하나의 대상과 연결됩니다.
각 대상은 하나의 GKE 또는 Anthos 클러스터 또는 애플리케이션의 다른 런타임 대상과 연결됩니다.
대상은 하나 이상의 배포 파이프라인과 연결될 수 있습니다.
아티팩트는 출시의 일부로 대상 런타임에 배포되는 CI 프로세스의 출력(예: 컨테이너 이미지)입니다.
또한 출시에는 단계가 한 개 이상 있고 단계에는 한 개 이상의 작업 및 작업 실행이 있습니다.
이 다이어그램에 표시된 것처럼 출시에는 다음이 포함됩니다.
단계
단계에는 하나 이상의 작업(예: 배포 또는 배포 및 확인)이 포함됩니다. 출시마다 단계가 하나 이상 있습니다. 단계는 출시의 하위 메시지입니다.
작업
출시 시 수행할 특정 작업(예: 배포 또는 확인). 작업은 출시의 하위 메시지입니다.
JobRuns
작업 인스턴스(예: 확인 시도). 작업마다 JobRun이 0개 이상 있을 수 있습니다. JobRun은 출시의 하위 리소스입니다.
자동화에는 AutomationRun 리소스 0개 이상에서 참조할 수 있는 자동화 규칙이 포함되어 있습니다. AutomationRun은 실행된 자동화 규칙의 인스턴스입니다(예: 한 대상에서 다른 대상으로 자동 승격). 자동화 및 AutomationRun 리소스는 배포 파이프라인 아래의 피어-하위 리소스입니다.
출시 버전 전달을 위한 통합 방법
이 섹션에서는 애플리케이션 출시 버전 전달을 자동화하기 위해 Cloud Deploy가 이 문서에 나열된 구성요소들과 상호작용하는 방법을 설명합니다.
CI 시스템은 Cloud Deploy 전달 파이프라인을 호출합니다.
CI 프로세스는 CLI 또는 API를 사용해서 Cloud Deploy를 호출하여 새 출시 버전을 만들고 빌드 아티팩트 또는 참조를 이미지에 전달합니다.
CI 시스템 통합에 대한 자세한 내용은 기타 시스템과 Cloud Deploy 통합을 참조하세요.
새 출시 버전이 생성되면 Cloud Deploy가 다음을 수행합니다.
전달 파이프라인의 인스턴스를 출시 버전의 일부로 저장합니다.
전달 파이프라인 구성이 변경되더라도 이 파이프라인 인스턴스는 이 출시 버전에 대해 변경되지 않은 상태로 유지됩니다. 자세한 내용은 출시 버전별 파이프라인 인스턴스를 참조하세요.
또한 Skaffold 버전도 출시 버전의 일부로 저장됩니다. 대부분의 경우 이 버전이 기본 Skaffold 버전이지만 다른 버전을 지정할 수 있으므로 해당 정보가 저장됩니다.
Cloud Build를 호출하여 Cloud Storage에서 Skaffold 렌더링 소스를 가져옵니다.
Cloud Deploy는 기본 또는 대체 Cloud Storage 버킷에 렌더링 소스를 저장합니다.
단일 유효 매니페스트를 생성하려면
skaffold diagnose
를 호출합니다(출시 버전 생성 시 저장되는 Skaffold 버전 사용).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는 기본 또는 대체 실행 환경을 사용해서 이러한 작업을 수행합니다.
출시가 생성되면(출시 버전 생성 후 자동으로 또는 나중에 주문형으로) Cloud Deploy에서 다음을 수행합니다.
지정된 경우 배포 전 후크를 호출합니다.
카나리아 배포 전략을 사용하는 경우 첫 번째 단계를 시작할 때 배포 전 후크가 호출됩니다.
deploy
작업을 호출합니다.기본 제공 대상을 사용하는 경우 Cloud Deploy는
skaffold apply
를 호출하여 출시를 자동으로 만들고 첫 번째 대상에 배포합니다. 기본 제공 대상을 사용하는 경우 출시 버전 생성 시 첫 번째 출시가 자동으로 생성됩니다.커스텀 대상을 사용하는 경우 Cloud Deploy에서 커스텀 대상 유형에 정의된
deploy
작업을 호출하여 첫 번째 대상에 대한 출시를 자동으로 만듭니다.기본 제공 대상과 커스텀 대상의 경우 첫 번째 대상에 대한 출시는 명령줄을 사용하여 출시 버전을 만든 경우에만 자동으로 수행됩니다.
첫 번째 대상에 대한 배포 프로세스는 다음 단계에 설명된 승격과 동일합니다.
배포 파이프라인 구성의
verify
가true
이고 확인이 Skaffold 구성에 지정된 경우skaffold verify
를 호출합니다.배포 후 후크가 지정된 경우,
verify
후에,verify
가 지정된 경우에 배포 후 후크를 호출합니다. 그렇지 않으면 배포 후 후크는deploy
이후에 호출됩니다.카나리아 배포 전략을 사용하는 경우 배포 후 후크는 최종 출시 단계의 마지막 작업으로 수행됩니다.
다음 대상으로 출시 버전을 승격할 때 Cloud Build는 Cloud Storage에서 대상 특정 매니페스트를 검색합니다. 그런 후 Cloud Build가
skaffold apply
를 호출해서 렌더링된 매니페스트를 지정된 대상 런타임에 적용합니다.대상에 승인이 필요하면 CLI 또는 콘솔을 사용해서 승인 또는 거절할 수 있습니다.
또한 Cloud Deploy는 승인 워크플로 자동 시작을 위해 구독할 수 있는 Pub/Sub 메시지를 생성합니다.
Cloud Deploy는 Skaffold 버전 및 이 출시 버전과 연관된 파이프라인 인스턴스를 사용하고 기본 또는 커스텀 실행 환경에서 이 단계를 수행합니다.
이 프로세스는 승격뿐만 아니라 롤백 및 재배포를 위해서도 필요합니다.
Cloud Deploy 작업을 수행할 때 이 서비스는 알림을 일부 Pub/Sub 주제에 게시합니다(예: 출시에 승인이 필요한 경우).
이 통합 및 기타 통합에 대한 자세한 내용은 외부 시스템과 Cloud Deploy 통합을 참조하세요.
배포 파이프라인 내에서 다양한 작업이 자동으로 수행되도록 자동화를 지정할 수 있습니다. 이러한 작업은 지정된 시간에 실행될 수 있습니다.
automationRun
은 자동화 규칙 실행을 나타냅니다.이 서비스는 Cloud Deploy 작업 전반에서 플랫폼 로그와 감사 로그를 Google Cloud Observability 및 Cloud 감사 로그에 기록합니다.
이러한 모든 단계에서 제어 흐름 및 리소스 액세스는 Identity and Access Management를 사용해서 제한됩니다.
다음 단계
기타 시스템과 Cloud Deploy 통합 방법 자세히 알아보기
Skaffold 버전 수명 주기에 대한 중요한 정보 보기
Cloud Deploy 실행 환경 알아보기
Google Cloud CI/CD 도구를 결합하여 소프트웨어를 효과적으로 개발하고 GKE에 배포하는 방법 알아보기