Cloud Scheduler 및 Cloud Build 트리거를 사용하여 반복되는 이미지 빌더 실행을 예약할 수 있습니다. 커스텀 OS 이미지 빌드를 예약하면 Cloud Build가 수동 개입 없이 운영체제 패치 및 조직 보안 정책으로 기준 이미지를 자동으로 업데이트합니다.
시작하기 전에
- 환경 준비에서 환경 설정 단계를 완료합니다.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인합니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.
이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.
gcloud
-
Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.
gcloud init외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
- 기본 리전 및 영역을 설정합니다.
-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체 (IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
로컬 셸을 사용하는 경우 사용자 계정에 대한 로컬 인증 사용자 인증 정보를 만듭니다.
gcloud auth application-default login
Cloud Shell을 사용하는 경우 이 작업을 수행할 필요는 없습니다.
인증 오류가 반환되고 외부 ID 공급업체(IdP)를 사용하는 경우 제휴 ID로 gcloud CLI에 로그인했는지 확인합니다.
Go
로컬 개발 환경에서 이 페이지의 Go 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.
자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
필요한 역할
트리거를 만들고 빌드를 예약하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
- Cloud Build 편집자(
roles/cloudbuild.builds.editor) - Cloud Scheduler 작업 실행자 (
roles/cloudscheduler.jobRunner) 또는 Cloud Scheduler 관리자 (roles/cloudscheduler.admin) - 서비스 계정 사용자(
roles/iam.serviceAccountUser)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
예약된 빌드 파이프라인 만들기
gcloud CLI 또는 Go 클라이언트 라이브러리를 사용하여 반복 이미지 빌드를 구성할 수 있습니다.
gcloud
gcloud CLI를 사용하여 반복되는 OS 이미지 빌드를 예약하려면 다음 단계를 완료합니다.
gcloud builds triggers create manual명령어를 실행하여 대상cloudbuild.yaml파일을 지정하는 수동 Cloud Build 빌드 트리거를 만듭니다. Cloud Scheduler는 저장소 이벤트가 아닌 수동으로 이 트리거를 호출하므로 push 또는 pull 요청 필터를 지정하지 마세요.gcloud builds triggers create manual \ --name="TRIGGER_NAME" \ --region=REGION \ --build-config=CLOUDBUILD_YAML_PATH \ --project=PROJECT_IDgcloud builds triggers describe명령어를 실행하여 새 트리거에 대해 생성된 고유 ID (trigger_id)를 가져옵니다.gcloud builds triggers describe TRIGGER_NAME \ --region=REGION \ --format="value(id)" \ --project=PROJECT_ID필요한 Unix cron 일정에 따라 Cloud Build API(
projects.locations.triggers.run)에HTTP POST요청을 전송하는 Cloud Scheduler 작업을 만들려면(예:'0 6 * * 1'를 사용하여 매주 월요일 오전 6시)gcloud scheduler jobs create http명령어를 실행합니다.gcloud scheduler jobs create http JOB_NAME \ --schedule="CRON_SCHEDULE" \ --uri="https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/triggers/TRIGGER_ID:run" \ --message-body="{}" \ --oauth-service-account-email="SERVICE_ACCOUNT_EMAIL" \ --location=REGION \ --project=PROJECT_ID
다음을 바꿉니다.
TRIGGER_NAME: 수동 Cloud Build 트리거의 이름입니다(예:weekly-ubuntu-builder).REGION: 트리거를 만들 리전(예:us-central1)CLOUDBUILD_YAML_PATH: 로컬 디렉터리에 있는cloudbuild.yaml파일의 경로입니다(예:cloudbuild.yaml).PROJECT_ID: 프로젝트 ID입니다.JOB_NAME: Cloud Scheduler 크론 작업의 이름입니다(예:weekly-custom-os-patching).CRON_SCHEDULE: unix 크론 일정 표현식입니다(예:'0 6 * * 1').TRIGGER_ID: 트리거에 대해 생성된 고유 ID (trigger_id)입니다.SERVICE_ACCOUNT_EMAIL: Cloud Scheduler가 트리거를 호출하도록 승인하는 서비스 계정 이메일입니다. 이 서비스 계정에는roles/cloudbuild.builds.editor권한이 필요합니다.
Go
Cloud Build 및 Cloud Scheduler Go 클라이언트 라이브러리를 사용하여 프로그래매틱 방식으로 파이프라인을 예약하려면 scheduleBuild 함수를 사용합니다.
이 샘플을 실행하기 전에 다음 기본 요건을 완료하세요.
imagebuilder.yaml구성 파일을 Cloud Storage 버킷(예:gs://STAGING_BUCKET/imagebuilder.yaml)에 업로드합니다.- 예약 서비스 계정
cloud-build-trigger-scheduler@PROJECT_ID.iam.gserviceaccount.com, 프로젝트의 Cloud Build 편집자 역할 (roles/cloudbuild.builds.editor), 빌드를 실행하는 서비스 계정의 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)을 부여합니다. 자세한 내용은 Cloud Build 문서의 빌드 예약을 참조하세요.
다음 단계
- Terraform을 사용하여 Git 푸시, 태그 또는 병합 이벤트에서 저장소 이벤트에 대한 빌드를 자동화하는 방법을 알아봅니다.
- 맞춤설정 레시피 스키마를 검토하여 소프트웨어 패키지 및 검증 절차를 정의합니다.