이 문서에서는 개발, 지속적 통합(CI) 및 지속적 배포(CD)를 위한 시스템을 설정하기 위한 통합 Google Cloud 도구 모음에 대해 설명합니다. 이 도구를 사용하여 애플리케이션을 개발하고 Google Kubernetes Engine(GKE)에 배포할 수 있습니다.
이 참조 아키텍처 문서는 소프트웨어 개발자 및 운영자를 모두 대상으로 합니다. 여기서는 사용자가 Google Cloud에서 gcloud
명령어를 실행하고 GKE에 애플리케이션 컨테이너를 배포하는 데 익숙하다고 가정합니다.
아키텍처
다음 다이어그램은 이 아키텍처에서 사용되는 리소스를 보여줍니다.
이 아키텍처에는 다음 구성요소가 포함됩니다.
- 개발 작업공간인 Cloud Code. 이 작업공간에서는 minikube에서 실행되는 개발 클러스터의 변경사항을 확인할 수 있습니다. Cloud Shell에서 Cloud Code 및 minikube 클러스터를 실행합니다. Cloud Shell은 브라우저에서 액세스할 수 있는 온라인 개발 환경입니다. 여기에는 컴퓨팅 리소스, 메모리, 통합 개발 환경(IDE)가 포함되며 Cloud Code도 설치되어 있습니다.
애플리케이션을 빌드 및 테스트하는 Cloud Build - 파이프라인의 'CI' 부분
이 파이프라인 부분에는 다음 작업이 포함되어 있습니다.
- Cloud Build가 Cloud Build 트리거를 사용하여 소스 저장소 변경사항을 모니터링합니다.
- 변경이 기본 분기에 커밋되면 Cloud Build 트리거가 다음을 수행합니다.
- 애플리케이션 컨테이너를 다시 빌드합니다.
- Cloud Storage 버킷에 빌드 아티팩트를 배치합니다.
- Artifact Registry에 애플리케이션 컨테이너를 배치합니다.
- 컨테이너에서 테스트를 실행합니다.
- Cloud Deploy를 호출하여 스테이징 환경에 컨테이너를 배포합니다. 이 예시에서 스테이징 환경은 Google Kubernetes Engine 클러스터입니다.
- 빌드 및 테스트에 성공하면 Cloud Deploy를 사용하여 컨테이너를 스테이징에서 프로덕션으로 승격할 수 있습니다.
배포를 관리하는 Cloud Deploy - 파이프라인의 'CD' 부분 이 파이프라인 부분에서는 Cloud Deploy가 다음을 수행합니다.
이 아키텍처에서는 Kubernetes 기반 애플리케이션의 지속적 개발을 쉽게 수행할 수 있는 명령줄 도구인 Skaffold를 통해 개발, 스테이징, 프로덕션 환경 간에 구성을 공유합니다.
Google Cloud에서 애플리케이션의 소스 코드를 GitHub에 저장합니다.
이 아키텍처에서는 Skaffold로 시스템 통합을 지원하여 시스템 구성요소 대부분에 Google Cloud 제품을 사용합니다. Skaffold는 오픈소스이므로 이러한 원칙을 바탕으로 Google Cloud, 사내, 타사 구성요소 조합을 사용해 유사한 시스템을 만들 수 있습니다. 이 솔루션의 모듈성 덕분에 개발 및 배포 파이프라인의 일부로 솔루션을 점진적으로 채택할 수 있습니다.
사용 사례
이 통합 시스템의 주요 특징은 다음과 같습니다.
더 빠르게 개발하고 배포합니다.
개발자 작업공간에서 변경사항을 검증할 수 있기 때문에 개발 루프가 효율적입니다. 자동 CI/CD 시스템 및 환경 간 패리티 증가로 인해 프로덕션에 변경사항을 배포할 때 더 많은 문제가 감지되어 배포 속도가 빠릅니다.
개발, 스테이징, 프로덕션 전반에서 패리티 증가를 활용합니다.
이 시스템의 구성요소는 일반적인 Google Cloud 도구 집합을 사용합니다.
다양한 환경에서 구성을 재사용합니다.
이러한 재사용은 Skaffold로 수행되며, 여러 환경에서 공통 구성 형식을 허용합니다. 또한 개발자 및 운영자가 동일한 구성을 업데이트하고 사용할 수 있습니다.
워크플로의 초기에 거버넌스를 적용합니다.
이 시스템은 프로덕션과 CI 시스템 및 개발 환경에서 거버넌스 검증 테스트를 적용합니다. 개발 환경에 거버넌스를 적용하면 문제를 조기에 발견하여 해결할 수 있습니다.
독자적인 도구로 소프트웨어 배포를 관리할 수 있습니다.
지속적 배포는 완전 관리형으로서 CD 파이프라인 단계를 상세한 렌더링 및 배포와 분리합니다.
배포
이 아키텍처를 배포하려면 CI/CD 파이프라인을 사용하여 컨테이너화된 앱 개발 및 배포를 참조하세요.
다음 단계
- 비공개 GKE 인스턴스에 배포하는 방법을 알아보려면 Virtual Private Cloud 네트워크에서 비공개 클러스터에 배포를 참조하세요.
- 배포 자동화에 대한 권장사항은 다음을 참조하세요.
- 배포 전략에 대한 자세한 내용은 다음을 참조하세요.
- 아키텍처 프레임워크의 점진적 배포 시작
- 애플리케이션 배포 및 테스트 전략