Cloud Build 빌드 트리거를 Infrastructure Manager에 연결하면 Git 저장소에서 직접 인프라 배포를 자동화할 수 있습니다. 이 워크플로에서 pull 요청은 배포 미리보기를 생성하고 병합된 커밋은 배포를 자동으로 만들거나 업데이트합니다.
시작하기 전에
- Infra Manager가 사용 설정되어 있는지 확인합니다.
- 배포를 만드는 데 필요한 IAM 권한이 있는지 확인합니다.
roles/config.admin
- 필요한 권한이 있는 서비스 계정이 있는지 확인합니다. 자세한 내용은 서비스 계정 구성을 참조하세요.
- Terraform 구성이 있는 기존 Git 저장소를 식별합니다. 이 페이지에 설명된 자동화를 설정할 때 Infra Manager에서 리소스를 업데이트하는 데 사용하는 Terraform 구성입니다.
- 권장사항: Git 저장소에 브랜치 보호를 설정합니다.
리소스 배포 자동화 Google Cloud
다음 단계에서는 Git 저장소에 저장된 Terraform 구성의 미리보기 및 배포를 자동화하는 데 필요한 설정을 설명합니다. Terraform 구성의 배포는 기존 배포의 버전일 수 있습니다. 버전은 프로비저닝된 Google Cloud 리소스를 삭제하거나 대체할 수 있습니다.
설정이 완료되면 Git 저장소의 pull 요청으로 인해 Infra Manager가 배포 미리보기를 만듭니다. 풀 요청이 병합되면 Infra Manager가 Terraform 구성을 자동으로 배포합니다.
im_cloudbuild_workspace 모듈은 다음을 비롯한 여러 리소스를 만듭니다.
- Cloud Build 저장소 연결
- 풀 요청이 생성될 때 호출되는 Cloud Build 트리거입니다. 이 트리거로 인해 Infra Manager가 저장소의 Terraform 구성을 사용하여 미리보기 배포를 만듭니다.
- 풀 요청이 Git 저장소와 병합될 때 호출되는 Cloud Build 트리거입니다. 이 트리거로 인해 Infra Manager가 저장소의 Terraform 구성을 사용하여 배포를 만들거나 업데이트합니다.
저장소가 업데이트될 때 Terraform 구성 배포를 자동화하려면 다음 단계를 따르세요.
- GitHub 계정 또는 소유한 조직에 Cloud Build GitHub 앱 을 설치합니다.
-
만료일이 없도록 토큰을 설정하고 GitHub에 메시지가 표시되면
repo및read:user권한을 선택합니다. 앱이 조직에 설치되어 있는 경우read:org권한도 선택해야 합니다.개인 액세스 토큰을 생성한 후 생성된 토큰을 안전한 곳에 저장합니다. 생성된 토큰은 다음 단계에서 사용합니다.
Git 저장소 내의
main.tf파일에im_cloudbuild_workspace모듈을 복사합니다.module "im-workspace" { source = "terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace" version = "~> 7.0" project_id = "PROJECT_ID" deployment_id = "DEPLOYMENT_ID" im_deployment_repo_uri = "GIT_REPO" im_deployment_ref = "REF" github_app_installation_id = "GIT_APP_ID" github_personal_access_token = "TOKEN" }다음을 바꿉니다.
- PROJECT_ID: Infrastructure Manager가 실행되는 프로젝트 ID입니다.
- DEPLOYMENT_ID: 사용자가 지정하는 배포 식별자입니다. 배포 식별자의 제약조건에 대한 자세한 내용은 배포 이름 을 참조하세요.
- GIT_REPO: Git 저장소의 URI입니다.
- REF: 구성의 Git 참조입니다. 참조는 선택사항입니다. 참조를 지정하지 않으면 Git 저장소의 기본 구성된 브랜치가 사용됩니다.
- GIT_APP_ID: 가져오기 및 푸시 요청 트리거에 사용되는 Cloud Build GitHub 앱의 설치 ID입니다.
- TOKEN: GitHub 저장소의 개인 액세스 토큰입니다. 제공된 경우 Secret Manager 내에 보안 비밀을 만듭니다.
the
im_cloudbuild_workspace모듈을 사용하여 배포를 만들거나 기존 배포를 업데이트합니다.gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --git-source-repo=GIT_REPO \ --git-source-directory=DIRECTORY \ --git-source-ref=REF다음을 바꿉니다.
- PROJECT_ID: Infrastructure Manager가 실행되는 프로젝트 ID입니다.
- LOCATION: Infra Manager 가 실행되는 위치입니다. 위치 목록은 Infrastructure Manager 위치 를 참조하세요.
- DEPLOYMENT_ID: 사용자가 지정하는 배포 식별자입니다. 배포 식별자의 제약조건에 대한 자세한 내용은 배포 이름 을 참조하세요.
- SERVICE_ACCOUNT: Infra Manager를 호출하는 데 사용하는 서비스 계정의 이름입니다.
- SERVICE_ACCOUNT_PROJECT_ID는 서비스 계정의 프로젝트 ID입니다. 일반적으로 Infrastructure Manager가 실행되는 프로젝트와 동일합니다.
- GIT_REPO: 공개 Git 저장소입니다.
- DIRECTORY: Terraform 구성이 있는 디렉터리입니다.
- REF: 구성의 Git 참조입니다. 참조는 선택사항입니다. 참조를 지정하지 않으면 Git 저장소의 기본 구성된 브랜치가 사용됩니다.
Git 저장소가 Infra Manager에 올바르게 연결되어 있는지 확인하려면 저장소에 pull 요청을 만듭니다.
포크된 Terraform 구성의 유효성 검사 결과를 보려면 GitHub에서 pull 요청을 확인하세요.
이제 이 자동화가 설정되었으므로 Cloud Build 트리거로 인해 다음이 발생합니다.
- 저장소에 pull 요청이 이루어지면 Infra Manager가 Git 저장소에 저장된 포크된 Terraform 구성을 사용하여 미리보기 배포를 만듭니다.
- 풀 요청이 저장소에 병합되면 Infra Manager가 Git 저장소에 저장된 포크된 Terraform 구성을 사용하여 배포를 업데이트합니다.
다음 단계
- Cloud Build를 사용하여 빌드 트리거의 빌드 결과를 확인합니다.
- Infra Manager로 배포된 리소스를 확인합니다.
- Infrastructure Manager 감사 로깅으로 Google Cloud 리소스를 모니터링합니다.