컨테이너화된 앱 개발 및 제공을 위한 CI/CD 파이프라인

Last reviewed 2022-11-18 UTC

이 문서에서는 개발, 지속적 통합(CI) 및 지속적 배포(CD)를 위한 시스템을 설정하기 위한 통합 Google Cloud 도구 모음에 대해 설명합니다. 이 도구를 사용하여 애플리케이션을 개발하고 Google Kubernetes Engine(GKE)에 배포할 수 있습니다. 이 참조 아키텍처 문서는 소프트웨어 개발자 및 운영자를 모두 대상으로 합니다. 여기서는 사용자가 Google Cloud에서 gcloud 명령어를 실행하고 GKE에 애플리케이션 컨테이너를 배포하는 데 익숙하다고 가정합니다.

아키텍처

다음 다이어그램은 이 아키텍처에서 사용되는 리소스를 보여줍니다.

Cloud Code, Cloud Build, Artifact Registry, Cloud Deploy, GKE를 사용한 시스템 개발 및 배포

이 아키텍처에는 다음 구성요소가 포함됩니다.

  1. 개발 작업공간인 Cloud Code. 이 작업공간에서는 minikube에서 실행되는 개발 클러스터의 변경사항을 확인할 수 있습니다. Cloud Shell에서 Cloud Code 및 minikube 클러스터를 실행합니다. Cloud Shell은 브라우저에서 액세스할 수 있는 온라인 개발 환경입니다. 여기에는 컴퓨팅 리소스, 메모리, 통합 개발 환경(IDE)가 포함되며 Cloud Code도 설치되어 있습니다.
  2. 애플리케이션을 빌드 및 테스트하는 Cloud Build - 파이프라인의 'CI' 부분

    이 파이프라인 부분에는 다음 작업이 포함되어 있습니다.

    • Cloud Build가 Cloud Build 트리거를 사용하여 소스 저장소 변경사항을 모니터링합니다.
    • 변경이 기본 분기에 커밋되면 Cloud Build 트리거가 다음을 수행합니다.
      • 애플리케이션 컨테이너를 다시 빌드합니다.
      • Cloud Storage 버킷에 빌드 아티팩트를 배치합니다.
      • Artifact Registry에 애플리케이션 컨테이너를 배치합니다.
      • 컨테이너에서 테스트를 실행합니다.
      • Cloud Deploy를 호출하여 스테이징 환경에 컨테이너를 배포합니다. 이 예시에서 스테이징 환경은 Google Kubernetes Engine 클러스터입니다.
    • 빌드 및 테스트에 성공하면 Cloud Deploy를 사용하여 컨테이너를 스테이징에서 프로덕션으로 승격할 수 있습니다.
  3. 배포를 관리하는 Cloud Deploy - 파이프라인의 'CD' 부분 이 파이프라인 부분에서는 Cloud Deploy가 다음을 수행합니다.

    • 전송 파이프라인대상을 등록합니다. 대상은 스테이징 및 프로덕션 클러스터를 나타냅니다.
    • Cloud Storage 버킷을 만들고 Skaffold 렌더링 소스 및 렌더링된 매니페스트를 이 버킷에 저장합니다.
    • 소스 코드 변경사항마다 새로운 출시 버전을 생성합니다.
    • 애플리케이션을 프로덕션 환경에 배포합니다. 이러한 프로덕션 배포를 위해 운영자(또는 다른 지정된 사용자)가 배포를 수동으로 승인합니다. 이 아키텍처에서 프로덕션 환경은 Google Kubernetes Engine 클러스터입니다.

이 아키텍처에서는 Kubernetes 기반 애플리케이션의 지속적 개발을 쉽게 수행할 수 있는 명령줄 도구인 Skaffold를 통해 개발, 스테이징, 프로덕션 환경 간에 구성을 공유합니다.

Google Cloud에서 애플리케이션의 소스 코드를 GitHub에 저장합니다.

이 아키텍처에서는 Skaffold로 시스템 통합을 지원하여 시스템 구성요소 대부분에 Google Cloud 제품을 사용합니다. Skaffold는 오픈소스이므로 이러한 원칙을 바탕으로 Google Cloud, 사내, 타사 구성요소 조합을 사용해 유사한 시스템을 만들 수 있습니다. 이 솔루션의 모듈성 덕분에 개발 및 배포 파이프라인의 일부로 솔루션을 점진적으로 채택할 수 있습니다.

사용 사례

이 통합 시스템의 주요 특징은 다음과 같습니다.

  • 더 빠르게 개발하고 배포합니다.

    개발자 작업공간에서 변경사항을 검증할 수 있기 때문에 개발 루프가 효율적입니다. 자동 CI/CD 시스템 및 환경 간 패리티 증가로 인해 프로덕션에 변경사항을 배포할 때 더 많은 문제가 감지되어 배포 속도가 빠릅니다.

  • 개발, 스테이징, 프로덕션 전반에서 패리티 증가를 활용합니다.

    이 시스템의 구성요소는 일반적인 Google Cloud 도구 집합을 사용합니다.

  • 다양한 환경에서 구성을 재사용합니다.

    이러한 재사용은 Skaffold로 수행되며, 여러 환경에서 공통 구성 형식을 허용합니다. 또한 개발자 및 운영자가 동일한 구성을 업데이트하고 사용할 수 있습니다.

  • 워크플로의 초기에 거버넌스를 적용합니다.

    이 시스템은 프로덕션과 CI 시스템 및 개발 환경에서 거버넌스 검증 테스트를 적용합니다. 개발 환경에 거버넌스를 적용하면 문제를 조기에 발견하여 해결할 수 있습니다.

  • 독자적인 도구로 소프트웨어 배포를 관리할 수 있습니다.

    지속적 배포는 완전 관리형으로서 CD 파이프라인 단계를 상세한 렌더링 및 배포와 분리합니다.

배포

이 아키텍처를 배포하려면 CI/CD 파이프라인을 사용하여 컨테이너화된 앱 개발 및 배포를 참조하세요.

다음 단계