Mengotomatiskan pembuatan ulang image container untuk menyinkronkan pembaruan image dasar


Cloud Workstations memungkinkan Anda membuat dan menggunakan image kustom untuk workstation Anda. Setelah image kustom digunakan, sebaiknya otomatiskan build ulang image kustom untuk mengambil perbaikan dan update yang tersedia dalam image dasar.

Dalam tutorial ini, Anda akan mempelajari cara mem-build pipeline otomatis untuk membantu memastikan bahwa Anda menyertakan update dan patch keamanan pada image workstation kustom.

Tujuan

Dengan mengikuti tutorial ini, Anda akan mem-build pipeline otomatis untuk image dasar dengan langkah-langkah berikut:

  1. Buat repositori Artifact Registry untuk menyimpan dan memindai image kustom Anda.
  2. Konfigurasikan GitHub dengan Google Cloud untuk menyimpan konfigurasi image Anda.
  3. Buat pemicu Cloud Build untuk mengotomatiskan pembuatan dan deployment image kustom ke Artifact Registry.
  4. Konfigurasikan Cloud Scheduler untuk memulai build secara rutin.
  5. Tinjau hasil proses otomatis.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Aktifkan API Artifact Registry, Container Scanning API, Cloud Build, dan Cloud Scheduler.

    Mengaktifkan API

  5. Menginstal Google Cloud CLI.
  6. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  9. Aktifkan API Artifact Registry, Container Scanning API, Cloud Build, dan Cloud Scheduler.

    Mengaktifkan API

  10. Menginstal Google Cloud CLI.
  11. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init

Menyiapkan lingkungan

Sebelum melanjutkan, pastikan Anda telah menetapkan variabel lingkungan berikut.

  1. Tetapkan project ID untuk project cloud yang akan Anda gunakan:

    PROJECT_ID=$PROJECT_ID
    
  2. Tetapkan nama pengguna GitHub tempat Anda berencana menyimpan repositori:

    GITHUB_USER=$GITHUB_ID
    
  3. Tetapkan variabel PROJECT_NUMBER dan REGION untuk digunakan melalui proses:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
        --format='value(projectNumber)')
    
    REGION=$REGION
    

    Pada contoh sebelumnya, ganti $REGION dengan nama wilayah yang akan Anda gunakan—misalnya, us-central1.

    Untuk mengetahui informasi selengkapnya tentang region yang tersedia, lihat lokasi Cloud Workstation.

Membuat repositori Artifact Registry

Dalam tutorial ini, Anda menggunakan Artifact Registry untuk menyimpan dan memindai image.

  1. Buat repositori dengan perintah berikut:

    gcloud artifacts repositories create custom-images \
          --repository-format=docker \
          --location=$REGION \
          --description="Docker repository"
    

    Ganti $REGION dengan nama wilayah yang akan Anda gunakan.

  2. Konfigurasikan Docker untuk menggunakan kredensial CLI gcloud Anda saat mengakses Artifact Registry.

    gcloud auth configure-docker $REGION-docker.pkg.dev
    

    Untuk menonaktifkan Artifact Analysis, jalankan perintah berikut:

    gcloud services disable containerscanning.googleapis.com
    

Mengonfigurasi repositori GitHub Anda

Dalam praktiknya, Anda menyimpan Dockerfile untuk image kustom di repositori Git. Proses otomatis mengakses repositori tersebut selama proses build untuk mengambil konfigurasi dan Dockerfile yang relevan.

Melakukan fork repositori contoh

Untuk melakukan fork repositori contoh yang memberikan definisi container, ikuti langkah-langkah berikut:

  1. Klik link ini untuk Create a new fork. dari repositori software-delivery-workshop.
  2. Jika diminta, login ke GitHub.
  3. Pilih nama pengguna GitHub Anda sebagai Pemilik. Nama Repositori akan muncul sebagai software-delivery-workshop.
  4. 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 prosesnya. Anda tidak perlu membuat pemicu di langkah terakhir wizard, dan dapat melewati langkah terakhir karena Anda dapat melakukannya nanti dari command line.

Jika menggunakan solusi repositori Git lain, 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 mem-build image container. Pada langkah ini, Anda akan membuat pemicu Cloud Build yang menjalankan petunjuk dalam file cloudbuild.yaml yang dapat ditemukan 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 CLI gcloud membuat pemicu manual dalam Cloud Build bernama custom-image-trigger, seperti yang ditunjukkan oleh flag name di baris kedua.
  • Tiga baris berikutnya berisi flag yang terkait dengan repositori GitHub sumber:
  • Flag build-config menunjukkan jalur ke file Cloud Build di repositori Git.
  • Untuk membuat tugas dinamis, gunakan flag substitutions. Untuk tugas ini, perintah meneruskan variabel berikut:

    • Wilayah, $_REGION
    • Nama repositori Artifact Registry, $_AR_REPO_NAME
    • Nama image container, $_AR_IMAGE_NAME
    • Lokasi Dockerfile untuk di-build, $_IMAGE_DIR

    Lihat file cloudbuild.yaml untuk mengetahui bagaimana variabel ini digunakan dalam prosesnya.

  • Setelah pemicu dibuat, nama unik pemicu diambil dan disimpan di variabel lingkungan $TRIGGER_ID untuk digunakan nanti.

Mengonfigurasi Cloud Scheduler

Untuk membantu memastikan bahwa 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 berjalan setiap hari. Dalam praktiknya, tetapkan ini ke frekuensi yang selaras dengan kebutuhan organisasi Anda untuk membantu memastikan bahwa update terbaru selalu disertakan.

  1. 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"
    
  2. 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"
    
  3. 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-platform
    
  4. Tugas ini disetel untuk dijalankan satu kali setiap hari. Namun, untuk segera menguji fitur, jalankan tugas secara manual dari Cloud Scheduler:

    Buka Cloud Scheduler

    1. Di halaman Cloud Scheduler, temukan entri yang baru saja dibuat bernama run-build.
    2. Di kolom Actions, klik menu opsi more_vertMore untuk baris tersebut.
    3. Klik Force a job run untuk menguji sistem secara manual.
    4. Setelah perintah berhasil dijalankan, beralihlah ke halaman histori Cloud Build untuk meninjau progresnya:

      Buka Cloud Build History

Meninjau hasil

Karena Anda mengaktifkan Container Scanning API sebagai bagian dari proses penyiapan, Artifact Registry akan otomatis memindai image untuk mendeteksi kerentanan keamanan.

Untuk meninjau kerentanan:

  1. Buka halaman Artifact Registry Repositories:

    Buka Artifact Registry Repositories

  2. Dalam daftar repositori, klik repositori.

  3. Klik nama gambar. Total kerentanan untuk setiap ringkasan gambar muncul di kolom Kerentanan.

    Halaman Repositori Artifact Registry yang menampilkan nama image contoh

  4. Untuk melihat daftar kerentanan untuk sebuah gambar, klik link di kolom Kerentanan. Daftar kerentanan menampilkan keparahan, ketersediaan perbaikan, dan nama paket yang berisi kerentanan.

    Halaman Kerentanan Artifact Registry yang menampilkan daftar contoh 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 tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan di halaman ini, pastikan Anda tidak lupa untuk menghapus resource yang tidak lagi diperlukan.

Untuk menghapus project Google Cloud dari Google Cloud Console atau dari CLI gcloud:

Konsol

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

gcloud

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

Untuk mengetahui informasi selengkapnya tentang cara menghapus resource lainnya, seperti cluster workstation, konfigurasi workstation, dan workstation, lihat Menghapus resource.

Langkah selanjutnya