1. 개요
GitOps 는 애플리케이션 개발(예: 형상관리 및 CI/CD)에 사용되는 DevOps 모범 사례를 가져와 인프라 자동화에 적용합니다. GitOps에서 Git 리포지토리는 신뢰할 수 있는 소스저장소 역할을 하고 CD 파이프라인은 애플리케이션 코드와 기본 인프라의 구축, 테스트 및 배포를 담당합니다.
오늘날 애플리케이션은 소유하고 운영하는 인프라에서 실행되는 단순한 코드가 아닙니다. 일반적으로 이벤트 기반 아키텍처 또는 Workflows 와 같은 중앙 서비스 관리자와 함께 작동하는 자사 및 타사 마이크로서비스 세트 입니다.
자체 정의 파일과 배포 주기가 있는 서비스 오케스트레이션은 GitOps 접근 방식의 이점을 얻을 수 있습니다. 이 게시물에서는 Cloud Build 를 사용하여 워크플로에 대한 간단한 Git 기반 개발, 테스트, 배포 파이프라인을 설정하는 방법을 설명합니다.
2. 아키텍처

이 접근 방식에는 워크플로를 변경하는 스테이징 브랜치가 있습니다. 그러면 테스트 스테이징 워크플로를 배포하고 이에 대해 몇 가지 스테이징 테스트를 실행하는 Cloud Build 구성이 트리거됩니다. 모든 테스트를 통과하면 Cloud Build가 스테이징 워크플로를 배포합니다. 스테이징 워크플로를 더 수동으로 테스트한 후 스테이징 브랜치에서 메인 브랜치로 변경 사항을 병합합니다. 이렇게 하면 동일한 Cloud Build 구성이 트리거되어 테스트 프로덕션 워크플로를 배포하고 더 많은 프로덕션 테스트를 실행하고 모든 테스트가 통과하면 프로덕션 워크플로를 배포합니다.
이 접근 방식을 사용하면 위험을 최소화하기 위해 테스트를 통해 워크플로 변경 사항을 단계적으로 자동화하고 롤아웃할 수 있습니다.
3. workflow 배포 파이프라인 구성
이러한 자동화된 워크플로 배포 파이프라인을 설정하는 것은 간단합니다.
먼저 이러한 자동화의 이점을 얻을 수 있는 워크플로 정의 파일이 필요합니다. 워크플로 정의 파일 또는 workflow.yaml 중 하나를 사용할 수 있습니다.
단순히 Hello World를 반환합니다.

다음으로 모든 단계가 포함된 Cloud Build 구성 파일(cloudbuild.yaml 참조)을 정의합니다.
이 구성에서 Cloud Build는 브랜치 이름과 커밋 해시를 사용하여 테스트 워크플로를 배포합니다.
워크플로를 실행하고 출력을 캡처하고 테스트 워크플로를 삭제하고 제공된 테스트 스크립트를 사용하여 워크플로를 테스트합니다.
모든 테스트가 통과하면 브랜치에 최종 워크플로를 배포합니다.
5. Cloud Build 트리거 만들기
이제 메인 및 스테이징 브랜치에 대한 커밋을 감시하는 Cloud Build 트리거를 만듭니다. 일반 지침은 여기에 있습니다 .
콘솔에서 Cloud Build 섹션으로 이동 Create Trigger하여 다음 속성으로 트리거를 생성합니다.
- 이름:workflows-trigger
- 이벤트: 브랜치로 푸시
- 저장소: 자신의 소스저장소(e.g. GoogleCloudPlatform/workflows-demos)
- 브랜치 :^main$|^staging$
- 포함된 파일 필터:gitops/workflow.yaml
- 구성 유형: cloud build 구성 파일
- cloud build 구성 파일 위치:gitops/cloudbuild.yaml<
- 대체 변수 추가 key/value: _WORKFLOW_NAME/workflows-gitops
6. 스테이징 워크플로 배포 테스트
이제 스테이징 브랜치로 빌드 파이프라인을 테스트할 준비가 되었습니다.
스테이징 브랜치로 전환:git checkout staging
다음 Hello World으로 변경 : workflow.yaml – Bye World

변경 사항을 커밋하고 스테이징 브랜치에 푸시합니다.

실행 중인 트리거가 표시되어야 합니다.

몇 초 후 빌드(모든 단계 포함)가 성공합니다.

스테이징 워크플로가 배포되었습니다.

7. 프로덕션 워크플로 배포 테스트
스테이징 워크플로를 프로덕션에 배포할 준비가 되면 스테이징 브랜치를 메인 브랜치에 병합하기만 하면 됩니다.

그러나 이 경우 빌드가 실패합니다.

이는 test-main.sh의 프로덕션 워크플로에 대한 테스트 스크립트가 Hello World를 예상하기 때문입니다.
스테이징 브랜치로 돌아가서 Bye World를 workflow.yaml다시 다음으로 변경해야 합니다 Bye World -> Hello World.

스테이징에 대한 변경 사항을 체크인하고 빌드 성공을 확인하고 메인에 병합합니다. 마지막으로 빌드가 성공하고 프로덕션 워크플로가 스테이징과 함께 배포되었는지도 확인해야 합니다.
