Cloud Build를 사용하여 Git에서 지속적 배포 수동 설정

다음 안내에서는 해당 루트에서 Git 저장소에 Dockerfile이 있다고 가정합니다.

Cloud Build로 배포를 자동화하려면 다음 안내를 따르세요.

  1. 다음과 같은 Cloud Build 구성을 만듭니다.

    • 컨테이너 이미지 빌드
    • 이미지를 Container Registry로 푸시합니다.
    • Cloud Run for Anthos on Google Cloud 서비스에 새 버전 배포

    이렇게 하려면 다음 내용이 포함된 cloudbuild.yaml이라는 파일을 저장소 루트에 추가합니다.

    완전 관리형

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--region'
       - '[REGION]'
       - '--platform'
       - 'managed'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    바꾸기

    • [SERVICE-NAME]를 Cloud Run for Anthos on Google Cloud 서비스 이름으로 바꿉니다.
    • [REGION]를 배포하려는 Cloud Run for Anthos on Google Cloud 서비스 리전으로 바꿉니다.

    Google Cloud에서 사용하는 Anthos

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--cluster'
       - '[CLUSTER]'
       - '--cluster-location'
       - '[CLUSTER_LOCATION]'
       - '--platform'
       - 'gke'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    바꾸기

    • [SERVICE-NAME]를 Cloud Run for Anthos on Google Cloud 서비스 이름으로 바꿉니다.
    • [CLUSTER]을 Cloud Run for Anthos on Google Cloud 클러스터의 이름으로 바꿉니다.
    • [CLUSTER_LOCATION]를 Cloud Run for Anthos on Google Cloud 클러스터의 위치로 바꿉니다.

    사용된 $COMMIT_SHA 대체 변수는 Git 저장소에서 트리거될 때 Cloud Build로 채워집니다.

  2. Cloud Build 서비스 계정에 서비스 배포 액세스 권한을 부여합니다.

    완전 관리형

    Cloud Build 서비스 계정에 Cloud Run 관리자서비스 계정 사용자 역할을 부여합니다.

    1. Cloud Console에서 Cloud Build 설정 페이지를 엽니다.

      Cloud Build 설정 페이지로 이동

    2. 서비스 계정 권한 패널에서 Cloud Run 관리자 역할의 상태를 사용으로 설정합니다.

      서비스 계정 권한 페이지 스크린샷

    3. 모든 서비스 계정에 대한 액세스 권한 부여를 선택하여 이 페이지에서 프로젝트의 모든 서비스 계정에 서비스 계정 사용자 역할을 부여합니다.

    Google Cloud에서 사용하는 Anthos

    Cloud Build 서비스 계정에 Kubernetes Engine 개발자 역할을 부여합니다.

    1. Cloud Console에서 Cloud Build 설정 페이지를 엽니다.

      Cloud Build 설정 페이지로 이동

    2. 서비스 계정 권한 패널에서 Kubernetes Engine 개발자 역할의 상태를 사용으로 설정합니다.

      서비스 계정 권한 페이지 스크린샷

  3. 왼쪽 탐색 패널에서 트리거를 클릭하여 트리거 페이지를 엽니다.

    트리거 페이지로 이동

    1. 트리거 만들기를 클릭합니다.
    2. 이름 필드에 트리거 이름을 입력합니다.
    3. 이벤트 아래에서 트리거를 시작할 저장소 이벤트를 선택합니다.
    4. 소스 아래에서 저장소를 선택하고 트리거를 시작할 분기 또는 태그 이름을 선택합니다. 자동 빌드할 분기 지정에 대한 자세한 내용은 빌드 트리거 만들기를 참조하세요.
    5. 빌드 구성에서 Cloud Build 구성 파일을 선택합니다.
    6. Cloud Build 구성 파일 위치 필드에 /cloudbuild.yaml을 차례로 입력합니다.
    7. 만들기를 클릭하여 빌드 트리거를 저장합니다.
  4. 이제 작업이 완료되었습니다. 이제부터는 저장소에 푸시할 때마다 Cloud Run 서비스에 대한 빌드 및 배포가 자동으로 호출됩니다.

최소 IAM 권한을 사용한 지속적 배포

컨테이너가 Cloud Run(완전 관리형) 서비스에 배포될 때는 이 Cloud Run(완전 관리형) 서비스의 런타임 서비스 계정 ID로 실행됩니다. Cloud Build가 새 컨테이너를 자동으로 배포할 수 있기 때문에 Cloud Build가 Cloud Run(완전 관리형) 서비스의 런타임 서비스 계정으로 작동할 수 있어야 합니다.

Cloud Run(완전 관리형) 서비스에 배포하기 위해 Cloud Build에 제한된 액세스 권한을 부여하려면 다음 안내를 따르세요.

Console UI

  1. Google Cloud Console의 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  2. Cloud Run(완전 관리형) 서비스의 런타임 서비스 계정을 선택합니다(기본적으로 PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  3. 오른쪽 상단 모서리에 있는 정보 패널 표시를 클릭하여 권한 탭을 표시합니다.

  4. 구성원 추가 버튼을 클릭합니다.

  5. Cloud Build 서비스 계정(PROJECT_NUMBER@cloudbuild.gserviceaccount.com)을 입력합니다.

  6. 역할 선택 드롭다운에서 서비스 계정 > 서비스 계정 사용자 역할을 선택합니다.

  7. 저장을 클릭합니다.

gcloud

gcloud iam service-accounts add-iam-policy-binding 명령어를 사용합니다.

gcloud iam service-accounts add-iam-policy-binding \
  PROJECT_NUMBER-compute@developer.gserviceaccount.com \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

PROJECT_NUMBER를 프로젝트의 숫자 ID로 바꿉니다.

맞춤설정된 서비스 ID를 사용하여 Cloud Run(완전 관리형)을 사용하는 경우 PROJECT_NUMBER-compute@developer.gserviceaccount.com을 서비스 계정 주소로 바꿉니다.

자세한 내용은 배포 권한을 참조하세요.

다음 단계

  • 서비스 계정 권한 설정에서 다른 프로젝트의 비공개 레지스트리로 컨테이너 이미지를 배포하거나 게시하는 방법 알아보기