Sebelum membuat pipeline Image Builder, Anda harus menyiapkan lingkungan Google Cloud terlebih dahulu. Untuk menyiapkan lingkungan Anda, selesaikan tugas berikut:
- Mengirim permintaan aktivasi
- Mengaktifkan Cloud API yang diperlukan
- Mengonfigurasi akun layanan Image Builder
- Mengonfigurasi kebijakan organisasi image tepercaya
- Mengonfigurasi jaringan VPC dan persyaratan akses
- Konfigurasi Artifact Registry
Sebelum memulai
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
- Tetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyiapkan lingkungan, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
- Service Usage Admin (
roles/serviceusage.serviceUsageAdmin) - Admin Identity and Access Management (IAM) Project (
roles/resourcemanager.projectIamAdmin) atau Admin Akun Layanan (roles/iam.serviceAccountAdmin) - Administrator Artifact Registry (
roles/artifactregistry.admin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Permintaan aktivasi
Image Builder tersedia secara umum dengan daftar yang diizinkan. Untuk mengaktifkan project Google Cloud Anda di pipeline penyesuaian gambar, kirimkan formulir permintaan akses atau hubungi tim akun Google Cloud Anda.
Akun layanan yang tercakup dalam daftar yang diizinkan
Daftar yang diizinkan memberikan akses ke project Anda berdasarkan nomor project. Akibatnya, daftar yang diizinkan hanya mencakup akun layanan, yang mencakup hal berikut:
- Akun layanan yang dikelola pengguna yang Anda buat di project Anda.
- Akun layanan default yang Google Cloud dibuat di project
Anda, seperti akun layanan default Compute Engine
(
PROJECT_NUMBER-compute@developer.gserviceaccount.com).
Daftar yang diizinkan tidak mencakup akun layanan milik Google, karena Google Cloud membuat akun layanan ini di project milik Google, bukan di project Anda. Akun layanan milik Google mencakup hal-hal berikut:
- Agen layanan, seperti
service-PROJECT_NUMBER@gcp-sa-SERVICE.iam.gserviceaccount.com. - Akun layanan Cloud Build lama
(
PROJECT_NUMBER@cloudbuild.gserviceaccount.com), yang dimiliki dan dikelola oleh Google.
Untuk mengetahui informasi selengkapnya tentang jenis akun layanan ini, lihat Jenis akun layanan.
Jika build berjalan sebagai akun layanan milik Google, build tidak dapat membaca image container pengelola Image Builder di Artifact Registry. Akibatnya, pipeline gagal dengan error izin ditolak. Untuk menghindari kegagalan ini, jalankan pipeline Anda sebagai akun layanan yang dikelola pengguna yang Anda buat di project Anda dan tentukan akun layanan tersebut saat Anda mengirimkan build. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi akun layanan Image Builder dan Akun layanan Cloud Build default.
Mengaktifkan API
Image Builder mengharuskan Anda mengaktifkan Compute Engine API, Cloud Build API, Artifact Registry API, Service Usage API, dan Resource Manager API. Untuk mengaktifkan API menggunakan konsol Google Cloud atau Google Cloud CLI, pilih salah satu tab berikut:
Konsol
Aktifkan Compute Engine, Cloud Build, Artifact Registry, Service Usage, dan Cloud Resource Manager API, jika ada yang belum diaktifkan.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda
membuat project, kemungkinan Anda sudah memiliki izin ini melalui
peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui
peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin).
Pelajari cara memberikan peran.
gcloud
Aktifkan Compute Engine, Cloud Build, Artifact Registry, Service Usage, dan Cloud Resource Manager API, jika ada yang belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda
membuat project, kemungkinan Anda sudah memiliki izin ini melalui
peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui
peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin).
Pelajari cara memberikan peran.
gcloud services enable compute.googleapis.comcloudbuild.googleapis.com artifactregistry.googleapis.com serviceusage.googleapis.com cloudresourcemanager.googleapis.com
Mengonfigurasi akun layanan Image Builder
Pengelola Image Builder berjalan menggunakan akun layanan yang dikelola pengguna. Saat Anda menjalankan pipeline build image, Cloud Build akan melampirkan akun layanan ini ke instance VM pekerja sementara dan instance VM pengujian untuk melakukan tindakan penyesuaian dan validasi. Akun layanan ini memerlukan peran berikut:
- Compute Admin (
roles/compute.admin): mengelola instance VM, persistent disk, dan image OS tamu. - Pengguna Akun Layanan (
roles/iam.serviceAccountUser): memungkinkan Cloud Build melampirkan akun layanan ke instance VM pengujian dan pekerja sementara. - Storage Admin (
roles/storage.admin): membaca dan menulis artefak dan log build sementara di bucket penyiapanworkdirCloud Storage. - Logging Log Writer (
roles/logging.logWriter): menulis log eksekusi ke Cloud Logging. - Service Usage Viewer (
roles/serviceusage.serviceUsageViewer): memeriksa status layanan project selama eksekusi pipeline. - Cloud Build Editor (
roles/cloudbuild.builds.editor): memicu dan menjalankan tugas Cloud Build serta mengekspor image. - (Opsional) Admin Artifact Registry (
roles/artifactregistry.admin): mengupload file tar image OS yang dihasilkan ke Artifact Registry.
Anda dapat menggunakan akun layanan yang ada atau membuat akun layanan khusus baru untuk pipeline build Anda. Gunakan akun layanan yang berada di project Anda. Jangan jalankan pipeline Anda sebagai akun layanan milik Google, seperti akun layanan Cloud Build lama, karena daftar yang diizinkan Image Builder tidak mencakup akun layanan ini. Untuk informasi selengkapnya, lihat Akun layanan yang tercakup dalam daftar yang diizinkan dan Akun layanan Cloud Build default.
Untuk membuat akun layanan khusus baru dan memberikan peran yang diperlukan menggunakan konsol Google Cloud atau gcloud CLI, pilih salah satu tab berikut:
Konsol
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
-
Di konsol Google Cloud , buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart. - Klik Create and continue.
-
Berikan peran berikut ke akun layanan: Compute Engine > Compute Admin, Service Accounts > Service Account User, Cloud Storage > Storage Admin, Cloud Logging > Logs Writer, Service Usage > Service Usage Viewer, Cloud Build > Cloud Build Editor, Artifact Registry > Artifact Registry Admin.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.
Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Lanjutkan.
-
Di kolom Service account users role, masukkan ID untuk akun utama yang akan melampirkan akun layanan ke resource lain, seperti instance Compute Engine.
Biasanya, ini adalah alamat email untuk Akun Google.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
roles/iam.serviceAccountCreator) dan peran IAM Project Admin
(roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan
peran.
gcloud
Buat akun layanan untuk pipeline build Anda:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name="Image Builder Service Account"Berikan peran yang diperlukan (
roles/compute.admin,roles/iam.serviceAccountUser,roles/storage.admin,roles/logging.logWriter,roles/serviceusage.serviceUsageViewer, danroles/cloudbuild.builds.editor) ke akun layanan Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/compute.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/logging.logWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/serviceusage.serviceUsageViewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/cloudbuild.builds.editor"Opsional: Berikan peran opsional (
roles/artifactregistry.admin) ke akun layanan Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/artifactregistry.admin"
Ganti kode berikut:
SERVICE_ACCOUNT_NAME: nama akun layanan build yang akan dibuat. Contoh,custom-builder-sa.PROJECT_ID: Google Cloud Project ID Anda.SERVICE_ACCOUNT_EMAIL: alamat email akun layanan build Anda.
Mengonfigurasi kebijakan organisasi image tepercaya
Karena Image Builder secara internal menggunakan alat impor dan ekspor image Compute Engine standar selama eksekusi build, kebijakan image tepercaya project Anda (compute.trustedImageProjects) harus secara eksplisit mengizinkan image dari project berikut:
projects/compute-image-import
Jika kebijakan organisasi Anda membatasi project ini, fase ekspor image akan gagal.
Untuk memperbarui kebijakan organisasi Anda:
- Dalam kebijakan organisasi Anda untuk batasan
compute.trustedImageProjects, tambahkanprojects/compute-image-importke daftar penayang yang diizinkan. - Untuk mengetahui petunjuk mendetail tentang cara mengonfigurasi batasan kebijakan organisasi, lihat Menyiapkan kebijakan image tepercaya dan Mengekspor image kustom ke Cloud Storage.
Mengonfigurasi persyaratan akses dan jaringan VPC
Selama fase build dan validasi, Image Builder menyediakan VM pengujian dan pekerja sementara di project Google Cloud Anda. Secara default,
Image Builder menghubungkan instance ke defaultjaringan VPC
dan menetapkan alamat IP eksternal sementara.
Jika Anda menentukan network atau subnetwork kustom, atau mengonfigurasi externalIP: none
dalam file resep imagebuilder.yaml:
- Akses Google Pribadi dan Cloud NAT: Jika VM pekerja atau pengujian dikonfigurasi dengan
externalIP: none(tanpa IP eksternal), subnetwork VPC Anda harus mengaktifkan Akses Google Pribadi agar instance dapat menjangkau API dan layanan Google (seperti Cloud Storage dan Artifact Registry). Jika langkah penyesuaian Anda mendownload paket atau dependensi OS dari repositori internet eksternal, Anda juga harus mengonfigurasi Cloud NAT di subnetwork. - Aturan firewall: Pastikan aturan firewall VPC Anda mengizinkan traffic egress ke Google API dan repositori software yang diperlukan. Jika Anda berencana untuk terhubung ke VM pekerja aktif untuk proses debug interaktif (
debug: true), pastikan aturan firewall mengizinkan traffic masuk di port TCP 22. Jika instance VM tidak memiliki IP eksternal, izinkan ingress dari rentang IP Identity-Aware Proxy (IAP)35.235.240.0/20untuk penerusan TCP.
Mengonfigurasi Artifact Registry
Untuk menyimpan dan mengelola image OS kustom, metadata keamanan, dan pengesahan provenance build SLSA, Anda harus menyiapkan repositori generik di Artifact Registry. Menyimpan image di Artifact Registry memungkinkan Anda mempertahankan catatan image yang dipublikasikan yang aman dan tidak dapat diubah.
Saat Anda mengonfigurasi tujuan Artifact Registry, Image Builder akan melakukan langkah-langkah berikut:
- Mengekspor boot disk VM yang telah diselesaikan sebagai file tar standar (
.tar.gz). - Mengupload file tar ke repositori generik Anda di Artifact Registry.
- Membuat dan menandatangani pengesahan provenance build SLSA untuk artefak guna menautkannya ke metadata sumber.
- Mendaftarkan image Compute Engine yang siap produksi dengan Compute Engine menggunakan URI file tar Artifact Registry sebagai sumber template.
Untuk mengonfigurasi Artifact Registry generik, selesaikan tugas berikut:
Pastikan akun layanan yang digunakan untuk menjalankan pipeline Image Builder memiliki peran Admin Artifact Registry (
roles/artifactregistry.admin) di tingkat project atau repositori. Untuk petunjuk mendetail, lihat Mengonfigurasi akun layanan Image Builder.Buat repositori dengan format
generic. Untuk membuat repositori, jalankan perintahgcloud artifacts repositories create:gcloud artifacts repositories create REPOSITORY_NAME \ --repository-format=generic \ --location=REPOSITORY_LOCATIONGanti placeholder berikut:
REPOSITORY_NAME: nama untuk repositori generik Anda. Contoh,custom-os-images.REPOSITORY_LOCATION: wilayah yang didukung. Contoh,us-central1.
Langkah berikutnya
- Buat dan kelola pipeline menggunakan Konsol Google Cloud .
- Membuat dan mengelola pipeline secara terprogram.
- Pelajari cara menentukan resep penyesuaian dalam Skema resep penyesuaian.
- Tinjau struktur
file konfigurasi Build (
cloudbuild.yaml).