Google Cloud 리소스 배포 자동화

이 페이지에서는 기존 저장소 및 인프라 관리자를 사용하여 Google Cloud 리소스 배포를 자동화하는 Cloud Build 트리거를 설정하는 프로세스를 설명합니다.

Infra Manager가 Git 저장소에 연결되면 풀 요청이 배포 미리보기를 호출하고 커밋은 배포 미리보기 생성 또는 배포 업데이트를 호출합니다.

시작하기 전에

  1. Infra Manager가 사용 설정되어 있는지 확인합니다.
  2. 배포를 만드는 데 필요한 IAM 권한이 있는지 확인합니다.
    • roles/config.admin
  3. 필요한 권한이 있는 서비스 계정이 있는지 확인합니다. 자세한 내용은 서비스 계정 구성을 참고하세요.
  4. Terraform 구성이 있는 기존 Git 저장소를 찾습니다. 이 페이지에 설명된 자동화를 설정하면 Infra Manager에서 리소스를 업데이트하는 데 사용하는 Terraform 구성이 됩니다.
  5. 권장: Git 저장소에 브랜치 보호를 설정합니다.

Google Cloud 리소스 배포 자동화

다음 단계에서는 Git 저장소에 저장된 Terraform 구성의 미리보기 및 배포를 자동화하는 데 필요한 설정을 설명합니다. Terraform 구성의 배포는 기존 배포의 수정본일 수 있습니다. 버전은 프로비저닝된 Google Cloud 리소스를 삭제하거나 대체할 수 있습니다.

설정이 완료되면 Git 저장소의 pull 요청으로 인해 Infra Manager에서 배포 미리보기를 만듭니다. pull 요청이 병합되면 Infra Manager에서 Terraform 구성을 자동으로 배포합니다.

im_cloudbuild_workspace 모듈은 다음과 같은 여러 리소스를 만듭니다.

  • Cloud Build 저장소 연결
  • pull 요청이 생성될 때 호출되는 Cloud Build 트리거입니다. 이 트리거를 사용하면 Infra Manager가 저장소의 Terraform 구성을 사용하여 미리보기 배포를 만듭니다.
  • pull 요청이 Git 저장소와 병합될 때 호출되는 Cloud Build 트리거입니다. 이 트리거를 사용하면 Infra Manager가 저장소의 Terraform 구성을 사용하여 배포를 만들거나 업데이트합니다.

저장소가 업데이트될 때 Terraform 구성 배포를 자동화하려면 다음 단계를 따르세요.

  1. GitHub 계정 또는 소유한 조직에 Cloud Build GitHub 앱을 설치합니다.
  2. 개인 액세스 토큰을 만듭니다.

    만료일이 없도록 토큰을 설정하고 GitHub에 메시지가 표시되면 reporead:user 권한을 선택합니다. 앱이 조직에 설치되어 있는 경우 read:org 권한도 선택해야 합니다.

    개인 액세스 토큰을 생성한 후 생성된 토큰을 안전한 곳에 저장합니다. 생성된 토큰은 다음 단계에서 사용합니다.

  3. im_cloudbuild_workspace 모듈을 Git 저장소 내 main.tf 파일에 복사합니다.

    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: 인프라 관리자가 실행되는 프로젝트 ID입니다.
    • DEPLOYMENT_ID: 지정된 배포 식별자입니다. 배포 식별자의 제약조건에 관한 자세한 내용은 배포 이름을 참고하세요.
    • GIT_REPO: Git 저장소의 URI입니다.
    • REF: 구성의 Git 참조입니다. 참조는 선택사항입니다. 참조를 지정하지 않으면 Git 저장소의 기본 구성된 브랜치가 사용됩니다.
    • GIT_APP_ID: 풀 및 푸시 요청 트리거에 사용되는 Cloud Build GitHub 앱의 설치 ID입니다.
    • TOKEN: GitHub 저장소의 개인 액세스 토큰입니다. 제공된 경우 Secret Manager 내에 보안 비밀을 만듭니다.
  4. 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: 인프라 관리자가 실행되는 프로젝트 ID입니다.
    • LOCATION: Infra Manager가 실행되는 위치입니다. 위치 목록은 인프라 관리자 위치를 참고하세요.
    • DEPLOYMENT_ID: 지정된 배포 식별자입니다. 배포 식별자의 제약조건에 관한 자세한 내용은 배포 이름을 참고하세요.
    • SERVICE_ACCOUNT: Infra Manager를 호출하는 데 사용하는 서비스 계정의 이름입니다.
    • SERVICE_ACCOUNT_PROJECT_ID는 서비스 계정의 프로젝트 ID입니다. 일반적으로 인프라 관리자가 실행되는 프로젝트와 동일한 프로젝트입니다.
    • GIT_REPO: 공개 Git 저장소입니다.
    • DIRECTORY: Terraform 구성이 있는 디렉터리입니다.
    • REF: 구성의 Git 참조입니다. 참조는 선택사항입니다. 참조를 지정하지 않으면 Git 저장소의 기본 구성된 브랜치가 사용됩니다.
  5. Git 저장소가 Infra Manager에 올바르게 연결되어 있는지 확인하려면 저장소에서 풀 요청을 만듭니다.

    포크된 Terraform 구성의 유효성 검사 결과를 보려면 GitHub에서 pull 요청을 확인하세요.

이제 이 자동화가 설정되었으므로 Cloud Build 트리거로 다음이 실행됩니다.

  • 저장소에 풀 요청이 제출되면 Infra Manager는 Git 저장소에 저장된 포크된 Terraform 구성을 사용하여 미리보기 배포를 만듭니다.
  • pull 요청이 저장소에 병합되면 Infra Manager는 Git 저장소에 저장된 포크된 Terraform 구성을 사용하여 배포를 업데이트합니다.

다음 단계