Image Builder는 Cloud Build를 사용하여 프로젝트 내에서 Google Cloud실행되는 선언적 운영체제 (OS) 이미지 맞춤설정 도구입니다. OS 이미지를 빌드, 맞춤설정, 검증하는 프로세스를 자동화하여 프로덕션 워크로드에 게시하기 전에 올바르게 부팅되고 구성 요구사항을 준수하는지 확인할 수 있습니다.
주요 이점
Image Builder는 Google Cloud내부에서 커스텀 OS 이미지의 수명 주기를 자동화하여 인프라를 관리하고 구성 요구사항을 검증하는 데 도움이 됩니다. Image Builder는 커스텀 OS 이미지 빌드를 위해 다음과 같은 기능을 제공합니다.
- OS 이미지 생성 자동화: 커스텀 스크립팅 또는 외부 도구 없이 선언적 YAML 레시피와 자동화된 Cloud Build 워크플로를 사용하여 커스텀 OS 이미지를 만들고 유지관리합니다. Image Builder는 Cloud Build 내에서 실행되므로 Cloud Build 트리거를 사용하여 저장소 이벤트 (예: Git 푸시 또는 태그)에서 이미지 빌드를 자동으로 시작하거나, 반복 일정을 설정하거나 (예: 보안 패치를 위한 주간 빌드), Pub/Sub 메시지에 응답할 수 있습니다 (외부 워크플로 또는 웹훅에서 프로그래매틱 방식으로 빌드를 트리거).
- 게시 전에 이미지 검증: 이미지를 게시하기 전에 검증합니다. Google에서 제공하는 검사는 중간 이미지가 부팅되고, 보안 부트를 지원하며 (해당하는 경우), 필요한 네트워크 드라이버를 로드하고, 정상적인 게스트 에이전트를 실행하는지 검증합니다.
- 스크립트 실행 추적: 빌드 파이프라인 중에 실행되는 코드를 추적합니다. Image Builder는 감사 추적을 유지하기 위해 빌드 로그 내에 인라인 맞춤설정 스크립트의 암호화 SHA-256 해시를 자동으로 기록합니다.
- 사용한 리소스에 대해서만 비용 지불: Image Builder 서비스는 추가 비용 없이 제공됩니다. 파이프라인이 실행되는 동안 사용된 기본 컴퓨팅, 스토리지, 빌드 리소스에 대해서만 비용이 발생합니다.
Image Builder의 작동 방식
Image Builder는 Cloud Build 오케스트레이터 컨테이너를 사용하여 프로젝트 Google Cloud 내에서 실행됩니다. 이미지 빌드 프로세스는 다음 단계로 구성됩니다.
- 검증 및 준비: 오케스트레이터 컨테이너는 YAML 구문을 확인하고 모든 필수 API가 사용 설정되어 있으며 대상 ID 및 액세스 관리 (IAM) 보안 권한이 활성 상태인지 확인합니다.
- 작업공간 및 디스크 준비: 오케스트레이터 컨테이너는 소스 코드와 구성이 포함된 Cloud Build 작업공간 디렉터리 (
/workspace)를 압축된 tar 파일 (.tar.gz)로 보관하고 이 tar 파일을 빌드 구성에 지정된 Cloud Storage 작업 디렉터리 버킷에 업로드합니다. 그런 다음 오케스트레이터 컨테이너는 정적으로 컴파일된 맞춤설정 프로비저닝 도구 파일 시스템을 사용하여 작업자 VM에 연결된 보조 데이터 디스크를 정의하는 임시 Compute Engine 이미지를 만듭니다. - 작업자 VM 실행: 오케스트레이터 컨테이너는 지정된 소스 이미지를 부팅 디스크로 사용하여 임시 작업자 VM 인스턴스를 실행하고 맞춤설정 프로비저닝 도구가 포함된 보조 데이터 디스크를 연결합니다.
작업자 VM의 하드웨어 속성, VPC 네트워크, 서브네트워크, 외부 IP 할당(임시 공개 IP 또는 외부 IP 없음)은
imagebuilder.yaml파일의infrastructureConfig설정에 따라 결정됩니다. - 맞춤설정: 시작 스크립트는 데이터 디스크를 마운트하고 작업자 VM에서 맞춤설정 프로비저너를 시작합니다. 프로비저너는 작업공간 보관 파일을 다운로드하고 셸 스크립트 실행, 파일 복사, 드라이버 컴파일과 같은 선언된 맞춤설정을 적용합니다. 또한 보안 삭제 패스를 실행하여 SSH 키, 고유 머신 ID, 로그 기록을 정리합니다. 그런 다음 인스턴스를 종료합니다.
- 검증 (테스트): 오케스트레이터 컨테이너는 맞춤설정된 부팅 디스크에서 임시 테스트 OS 이미지를 만들고
imagebuilder.yaml파일의 네트워크 및 인프라 구성을 사용하여 임시 테스트 VM을 프로비저닝하여 다음과 같은 시스템 정의 검증 검사를 실행합니다.- Intel IDPF 드라이버 검증: 지원되는 인스턴스가 일반 디스플레이 또는 대체 드라이버가 아닌 Intel 인프라 데이터 경로 함수 (
idpf) 네트워크 드라이버를 로드하는지 확인합니다. - 네트워킹 및 게스트 에이전트 검증: 게스트 에이전트 서비스가 활성 상태이고, 루프백이 아닌 네트워크 인터페이스가 하나 이상 작동 중이며, 이름이 규칙 (
eth*또는en*)을 준수하는지 확인합니다. - 보안 부트 검증: UEFI 보안 부트가 활성 상태이고 시스템에서 게스트 커널 검증을 적용하는지 확인합니다.
- 일시중지 또는 재개 검증: Compute Engine API를 사용하여 테스트 VM을 일시중지하고 시스템 재부팅 없이 재개 후 네트워크 연결이 복구되는지 확인합니다.
- Intel IDPF 드라이버 검증: 지원되는 인스턴스가 일반 디스플레이 또는 대체 드라이버가 아닌 Intel 인프라 데이터 경로 함수 (
- 출시: 모든 검증 검사를 통과하면 오케스트레이터 컨테이너가 최종 이미지를 준비합니다.
- Artifact Registry가 구성된 경우: 오케스트레이터 컨테이너는 맞춤설정된 부팅 디스크를 tar 파일로 Artifact Registry 일반 저장소에 내보내고 Artifact Registry URI를 소스로 사용하여 최종 프로덕션 Compute Engine 이미지를 만듭니다.
- Artifact Registry가 구성되지 않은 경우: 오케스트레이터 컨테이너는 맞춤설정된 부팅 디스크를 사용하여 프로젝트에서 Compute Engine 이미지를 직접 만듭니다.
가격 책정 및 할당량 고려사항
Image Builder 서비스는 추가 비용 없이 제공됩니다. 하지만 Google Cloud 빌드, 테스트, 출시 단계에서 프로비저닝된 표준 리소스에 대한 요금이 청구됩니다.
- Compute Engine: 작업자 VM, 테스트 VM, 연결된 영구 디스크에 대한 요금이 청구됩니다.
- Cloud Build: 오케스트레이터 컨테이너 런타임(분)에 대한 요금이 청구됩니다.
- Cloud Storage: 작업공간 보관 파일, 로그 내보내기, 중간 애셋에 대한 요금이 청구됩니다.
- Artifact Registry: 내보낸 이미지 tar 파일을 저장하는 경우 요금이 청구됩니다( 구성된 경우).
- 커스텀 이미지: 중간 테스트, 디버그, 프로덕션 이미지를 저장하는 경우 요금이 청구됩니다.
리소스 비용에 대한 자세한 내용은 Compute Engine, Cloud Build, Cloud Storage, Artifact Registry, 및 커스텀 이미지 저장소의 가격 책정 문서를 참조하세요.
할당량 요구사항
빌드를 실행하는 영역에 Compute Engine CPU 및 영구 디스크 할당량이 충분한지 확인합니다. 대상 영역의 할당량이 부족하면 VM 프로비저닝 중에 파이프라인이 실패합니다.