Cloud Workstations memungkinkan Anda membuat dan menggunakan image kustom untuk workstation Anda. Setelah image kustom digunakan, sebaiknya otomatiskan pembangunan ulang image kustom untuk menarik perbaikan dan update yang tersedia di image dasar.
Dalam tutorial ini, Anda akan mempelajari cara membangun pipeline otomatis untuk membantu memastikan Anda menyertakan update dan patch keamanan dalam image workstation kustom Anda.
Tujuan
Dengan mengikuti tutorial ini, Anda akan membangun pipeline otomatis untuk image dasar Anda dengan langkah-langkah berikut:
- Buat repositori Artifact Registry untuk menyimpan dan memindai image kustom Anda.
- Konfigurasi GitHub dengan Google Cloud untuk menyimpan konfigurasi image Anda.
- Buat pemicu Cloud Build untuk mengotomatiskan pembuatan dan deployment image kustom ke Artifact Registry.
- Konfigurasi Cloud Scheduler untuk memulai build secara berkala.
- Tinjau hasil proses otomatis.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih berikut Google Cloud:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.
Sebelum memulai
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init
Menyiapkan lingkungan
Sebelum melanjutkan, pastikan Anda menetapkan variabel lingkungan berikut.
Tetapkan ID project untuk project cloud yang akan Anda gunakan:
PROJECT_ID=$PROJECT_IDTetapkan nama pengguna GitHub tempat Anda berencana menyimpan repositori:
GITHUB_USER=$GITHUB_IDTetapkan variabel
PROJECT_NUMBERdanREGIONuntuk digunakan melalui proses:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGIONPada contoh sebelumnya, ganti $REGION dengan nama region yang akan Anda gunakan—misalnya,
us-central1.Untuk mengetahui informasi selengkapnya tentang region yang tersedia, lihat Lokasi Cloud Workstations.
Membuat repositori Artifact Registry
Dalam tutorial ini, Anda akan menggunakan Artifact Registry untuk menyimpan dan memindai image Anda.
Buat repositori dengan perintah berikut:
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"Ganti $REGION dengan nama region yang akan Anda gunakan.
Konfigurasi Docker untuk menggunakan kredensial
gcloudCLI Anda saat mengakses Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.devUntuk menonaktifkan Artifact Analysis, jalankan perintah berikut:
gcloud services disable containerscanning.googleapis.com
Mengonfigurasi repositori GitHub Anda
Dalam praktiknya, Anda menyimpan Dockerfile untuk image kustom Anda di repositori Git. Proses otomatis mengakses repositori tersebut selama proses build untuk menarik konfigurasi dan Dockerfile yang relevan.
Membuat fork repositori contoh
Untuk membuat fork repositori contoh yang menyediakan definisi container, ikuti langkah-langkah berikut:
- Klik link ini untuk
Membuat fork baru.
repositori
software-delivery-workshop. - Login ke GitHub, jika diminta.
- Pilih nama pengguna GitHub Anda sebagai Pemilik. Nama Repositori akan muncul sebagai
software-delivery-workshop. - Klik Create fork dan tunggu beberapa detik hingga prosesnya selesai.
Menghubungkan Cloud Build ke GitHub
Selanjutnya, hubungkan repositori tersebut ke Cloud Build menggunakan kemampuan koneksi GitHub bawaan. Klik link ke repositori GitHub dan ikuti petunjuk yang menjelaskan cara menyelesaikan proses. Anda tidak perlu membuat pemicu pada langkah terakhir wizard, dan Anda dapat melewati langkah terakhir karena dapat melakukannya nanti dari command line.
Jika menggunakan solusi repositori Git yang berbeda, Anda juga dapat mengikuti petunjuk untuk menghubungkan Cloud Build ke GitLab atau Bitbucket.
Membuat pemicu Cloud Build
Repositori contoh berisi definisi container dan konfigurasi Cloud Build yang digunakan untuk membangun image container. Pada langkah ini, Anda akan membuat
pemicu Cloud Build yang menjalankan petunjuk dalam file
cloudbuild.yamlyang dapat Anda temukan di folder
labs/cloudbuild-scheduled-jobs/code-oss-java.
gcloud builds triggers create manual \
--name=custom-image-trigger \
--repo=$GITHUB_USER/software-delivery-workshop \
--repo-type=GITHUB \
--branch=main \
--build-config=labs/cloudbuild-scheduled-jobs/code-oss-java/cloudbuild.yaml \
--substitutions=_REGION=$REGION,_AR_REPO_NAME=custom-images,_AR_IMAGE_NAME=code-oss-java,_IMAGE_DIR=labs/cloudbuild-scheduled-jobs/code-oss-java
TRIGGER_ID=$(gcloud builds triggers list \
--filter=name="custom-image-trigger" --format="value(id)")
Contoh ini mengonfigurasi hal berikut:
- Perintah
gcloudCLI membuat pemicu manual dalam Cloud Build yang diberi namacustom-image-triggerseperti yang ditunjukkan oleh flagnamepada baris kedua. - Tiga baris berikutnya berisi flag yang terkait dengan repositori GitHub sumber:
- Jalur ke repositori
- Jenis repositori
- Cabang Git yang akan dibangun
- Flag
build-configmenunjukkan jalur ke file Cloud Build di repositori Git. Untuk membuat tugas menjadi dinamis, gunakan flag
substitutions. Untuk tugas ini, perintah akan meneruskan variabel berikut:- Region,
$_REGION - Nama repositori Artifact Registry,
$_AR_REPO_NAME - Nama image container,
$_AR_IMAGE_NAME - Lokasi Dockerfile yang akan dibangun,
$_IMAGE_DIR
Lihat file cloudbuild.yaml untuk melihat cara variabel ini digunakan dalam proses.
- Region,
Setelah pemicu dibuat, nama unik pemicu akan diambil dan disimpan dalam variabel lingkungan
$TRIGGER_IDuntuk digunakan nanti.
Mengonfigurasi Cloud Scheduler
Untuk membantu memastikan image Anda selalu diperbarui dengan update dan patch terbaru, gunakan Cloud Scheduler untuk menjalankan pemicu Cloud Build pada frekuensi yang ditetapkan. Untuk tutorial ini, tugas akan berjalan setiap hari. Dalam praktiknya, tetapkan frekuensi ini sesuai dengan kebutuhan organisasi Anda untuk membantu memastikan update terbaru selalu disertakan.
Berikan peran yang diperlukan ke akun layanan default untuk memanggil pemicu Cloud Build:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"Berikan peran yang diperlukan ke akun layanan Cloud Build untuk mengupload image ke Artifact Registry:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role="roles/artifactregistry.admin"Buat tugas Cloud Scheduler dengan perintah berikut:
gcloud scheduler jobs create http run-build \ --schedule='0 1 * * *' \ --uri=https://cloudbuild.googleapis.com/v1/projects/$PROJECT_ID/locations/global/triggers/$TRIGGER_ID:run \ --location=us-central1 \ --oauth-service-account-email=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --oauth-token-scope=https://www.googleapis.com/auth/cloud-platformTugas ini ditetapkan untuk dijalankan satu kali setiap hari; namun, untuk menguji fitur ini secara langsung, jalankan tugas secara manual dari Cloud Scheduler:
- Di halaman Cloud Scheduler, temukan entri yang baru saja Anda buat bernama run-build.
- Di kolom Actions, klik menu opsi more_vertMore untuk baris tersebut.
- Klik Force a job run untuk menguji sistem secara manual.
Setelah perintah berhasil dijalankan, beralihlah ke halaman histori Cloud Build untuk meninjau progres:
Meninjau hasil
Karena Anda mengaktifkan Container Scanning API sebagai bagian dari proses penyiapan, Artifact Registry akan otomatis memindai image untuk mencari kerentanan keamanan.
Untuk meninjau kerentanan:
Buka halaman Repositori Artifact Registry:
Di daftar repositori, klik repositori.
Klik nama image. Total kerentanan untuk setiap ringkasan image akan muncul di kolom Vulnerabilities.

Untuk melihat daftar kerentanan untuk image, klik link di kolom Vulnerabilities. Daftar kerentanan menampilkan tingkat keparahan, ketersediaan perbaikan, dan nama paket yang berisi kerentanan.

Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Agar akun Anda Google Cloud tidak dikenai biaya untuk resource yang digunakan pada halaman ini, pastikan Anda ingat untuk menghapus resource yang tidak lagi Anda perlukan.
Untuk menghapus Google Cloud project dari Google Cloud konsolatau dari
gcloud CLI:
Konsol
- Di Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
gcloud
Hapus a Google Cloud project:
gcloud projects delete PROJECT_ID
Langkah berikutnya
- Tinjau daftar image dasar bawaan yang tersedia dan telah dikonfigurasi .
- Sesuaikan image container Anda.
- Tinjau jenis mesin yang tersedia.
- Siapkan praktik terbaik keamanan.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.