Men-deploy kumpulan pekerja ke Cloud Run

Halaman ini menunjukkan cara men-deploy image container ke kumpulan pekerja Cloud Run baru atau ke revisi baru dari kumpulan pekerja Cloud Run yang sudah ada.

Kumpulan pekerja adalah resource Cloud Run yang dirancang khusus untuk workload non-permintaan. Berbeda dengan layanan Cloud Run, kumpulan pekerja tidak memiliki fitur berikut:

  • Endpoint/URL publik
  • Persyaratan untuk mengekspos port masuk
  • Penskalaan otomatis berbasis permintaan

Untuk contoh panduan men-deploy kumpulan pekerja baru, lihat Panduan memulai deployment kumpulan pekerja contoh.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk men-deploy kumpulan pekerja Cloud Run, minta administrator untuk memberi Anda peran IAM berikut:

  • Cloud Run Developer (roles/run.developer) di kumpulan pekerja Cloud Run
  • Service Account User (roles/iam.serviceAccountUser) pada identitas yang digunakan kumpulan pekerja Anda untuk berinteraksi dengan layanan Google Cloud lainnya
  • Pembaca Artifact Registry (roles/artifactregistry.reader) di repositori Artifact Registry dari image container yang di-deploy

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika kumpulan pekerja Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Image dan registry container yang didukung

Anda dapat langsung menggunakan image container yang disimpan di Artifact Registry, atau Docker Hub. Google merekomendasikan penggunaan Artifact Registry. Image Docker Hub di-cache hingga satu jam.

Anda dapat menggunakan image container dari registry publik atau pribadi lainnya (seperti JFrog Artifactory, Nexus, atau GitHub Container Registry), dengan menyiapkan repositori jarak jauh Artifact Registry.

Sebaiknya hanya pertimbangkan Docker Hub untuk men-deploy image container populer seperti Docker Official Images atau Docker Sponsored OSS images. Untuk ketersediaan yang lebih tinggi, Google merekomendasikan untuk men-deploy image Docker Hub ini menggunakan repositori jarak jauh Artifact Registry.

Cloud Run tidak mendukung lapisan image container yang lebih besar dari 9,9 GB saat men-deploy dari Docker Hub atau repositori jarak jauh Artifact Registry dengan registry eksternal.

Men-deploy kumpulan pekerja

Anda dapat men-deploy kumpulan worker dengan cara berikut:

Men-deploy kumpulan pekerja baru

Anda dapat menentukan image penampung dengan tag (misalnya, us-docker.pkg.dev/my-project/container/my-image:latest) atau dengan ringkasan yang tepat (misalnya, us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...).

Revisi pertama akan dibuat saat Anda men-deploy kumpulan pekerja untuk pertama kalinya. Perlu diperhatikan bahwa revisi tidak dapat diubah. Jika Anda men-deploy dari tag image container, tag tersebut akan di-resolve menjadi ringkasan dan revisi akan selalu menyalurkan ringkasan khusus ini.

Ikuti petunjuknya menggunakan Google Cloud CLI atau Terraform.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Untuk men-deploy image container kumpulan pekerja:

    1. Jalankan perintah berikut:

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Ganti kode berikut:

      • WORKER_POOL: nama worker pool yang ingin Anda deploy. Jika worker pool belum ada, perintah ini akan membuat worker pool selama deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama worker pool jika menghilangkannya. Nama kumpulan pekerja harus terdiri dari 49 karakter atau kurang, menggunakan nama unik per region dan project, dan tidak boleh memiliki nama yang sama dengan nama layanan yang ada dari project Anda.
      • IMAGE_URL dengan referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest. Perhatikan bahwa jika Anda tidak memberikan flag --image, perintah deploy akan mencoba men-deploy dari kode sumber.
    2. Tunggu hingga deployment selesai. Setelah berhasil diselesaikan, Cloud Run akan menampilkan pesan berhasil beserta informasi revisi tentang kumpulan pekerja yang di-deploy.

      Untuk men-deploy ke lokasi yang berbeda dari yang Anda tetapkan menggunakan properti run/region gcloud, gunakan:

      gcloud beta run worker-pools deploy WORKER_POOL --region REGION

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }
}

Ganti kode berikut:

  • WORKER_POOL: nama pool pekerja.
  • REGION: Google Cloud region—misalnya, europe-west1.
  • IMAGE_URL dengan referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

Men-deploy revisi baru dari kumpulan pekerja yang ada

Perhatikan bahwa mengubah setelan konfigurasi untuk kumpulan pekerja akan menghasilkan pembuatan revisi baru, meskipun tidak ada perubahan pada image container. Setiap revisi yang dibuat tidak dapat diubah.

Image container diimpor oleh Cloud Run saat di-deploy. Cloud Run menyimpan salinan image container ini selama digunakan oleh revisi.

Ikuti petunjuk berikut menggunakan Google Cloud CLI atau Terraform:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Untuk men-deploy image container:

    1. Jalankan perintah:

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Ganti kode berikut:

      • WORKER_POOL: nama worker pool yang ingin Anda deploy. Jika worker pool belum ada, perintah ini akan membuat worker pool selama deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama worker pool jika menghilangkannya. Nama kumpulan pekerja harus terdiri dari 49 karakter atau kurang, menggunakan nama unik per region dan project, dan tidak boleh memiliki nama yang sama dengan nama layanan yang ada dari project Anda.
      • IMAGE_URL dengan referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest. Perhatikan bahwa jika Anda tidak memberikan flag --image, perintah deploy akan mencoba men-deploy dari kode sumber.

      Akhiran revisi ditetapkan secara otomatis untuk revisi baru. Jika ingin menyediakan akhiran revisi Anda sendiri, gunakan parameter gcloud CLI --revision-suffix.

    2. Tunggu hingga deployment selesai. Setelah berhasil diselesaikan, Cloud Run akan menampilkan pesan berhasil beserta informasi revisi tentang kumpulan pekerja yang di-deploy.

Terraform

Pastikan Anda telah menyiapkan Terraform seperti yang dijelaskan dalam contoh Men-deploy worker pool baru.

  1. Buat perubahan pada file konfigurasi.

  2. Terapkan konfigurasi Terraform:

    terraform apply

    Konfirmasi bahwa Anda ingin menerapkan tindakan yang dijelaskan dengan memasukkan yes.

Men-deploy image dari project Google Cloud lain

Untuk men-deploy image dari project Google Cloud lain, Anda atau administrator Anda harus memberikan peran IAM yang diperlukan ke akun deployer dan agen layanan Cloud Run.

Untuk mengetahui peran yang diperlukan untuk akun deployer, lihat peran yang diperlukan.

Untuk memberikan peran yang diperlukan kepada agen layanan Cloud Run, lihat petunjuk berikut:

  1. Di konsol Google Cloud , buka project untuk kumpulan pekerja Cloud Run Anda.

    Buka halaman IAM

  2. Pilih Sertakan pemberian peran yang disediakan Google.

  3. Salin email agen layanan Cloud Run. Class ini memiliki akhiran @serverless-robot-prod.iam.gserviceaccount.com

  4. Buka project yang memiliki container registry yang ingin Anda gunakan.

    Buka halaman IAM.

  5. Klik Add untuk menambahkan akun utama baru.

  6. Di kolom New principals, tempel alamat email akun layanan yang telah Anda salin sebelumnya.

  7. Di menu drop-down Select a role, jika Anda menggunakan Container Registry, pilih peran Storage -> Storage Object Viewer. Jika Anda menggunakan Artifact Registry, pilih peran Artifact Registry -> Artifact Registry Reader.

  8. Deploy image container ke project yang berisi kumpulan pekerja Cloud Run.

Men-deploy image dari registry lain

Untuk men-deploy image container publik atau pribadi yang tidak disimpan di Artifact Registry atau Docker Hub, siapkan repositori jarak jauh Artifact Registry.

Repositori jarak jauh Artifact Registry memungkinkan Anda untuk:

  • Deploy image container publik apa pun, misalnya, GitHub Container Registry (ghcr.io).
  • Deploy image container dari repositori pribadi yang memerlukan autentikasi, misalnya, JFrog Artifactory atau Nexus.

Jika penggunaan repositori jarak jauh Artifact Registry bukan merupakan opsi, Anda dapat menarik dan mengirim image container ke Artifact Registry untuk sementara dengan men-deploy-nya ke Cloud Run menggunakan docker push. Cloud Run mengimpor image container selama deployment, dan setelahnya, Anda dapat menghapus image dari Artifact Registry.

Men-deploy beberapa container (file bantuan) ke kumpulan pekerja

Dalam deployment Cloud Run dengan file bantuan, ada satu container pool worker utama dan satu atau beberapa container file bantuan. Sidecar dapat berkomunikasi satu sama lain dan dengan container kumpulan pekerja menggunakan port localhost. Port localhost bervariasi, bergantung pada kontainer yang Anda gunakan.

Anda dapat men-deploy hingga 10 container per instance, termasuk container kumpulan worker. Semua container dalam instance memiliki namespace jaringan yang sama dan juga dapat berbagi file menggunakan volume bersama dalam memori.

Anda dapat mewajibkan semua deployment menggunakan sidecar tertentu dengan membuat kebijakan organisasi kustom.

Men-deploy layanan dengan container sidecar

Ikuti petunjuk ini, menggunakan Google Cloud CLI atau Terraform untuk men-deploy beberapa container ke kumpulan pekerja Cloud Run:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Untuk men-deploy beberapa container ke kumpulan pekerja, jalankan perintah berikut:

    gcloud beta run worker-pools deploy WORKER_POOL \
     --container WORKER_POOL_CONTAINER_NAME \
     --image='WORKER_POOL_IMAGE' \
     --container SIDECAR_CONTAINER_NAME \
     --image='SIDECAR_IMAGE'

    Ganti kode berikut:

    • WORKER_POOL: nama kumpulan pekerja yang Anda deploy. Jika Anda menghilangkan parameter ini, Anda akan diminta untuk memasukkan nama kumpulan pekerja.
    • WORKER_POOL_CONTAINER_NAME: nama untuk container pool pekerja.
    • IMAGE_URL dengan referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • SIDECAR_CONTAINER_NAME: nama untuk container sidecar—misalnya sidecar.
    • SIDECAR_IMAGE dengan referensi ke image container file bantuan.

    Untuk mengonfigurasi setiap container dalam perintah deployment, berikan konfigurasi setiap container setelah parameter container, misalnya:

    gcloud beta run worker-pools deploy WORKER_POOL \
      --container CONTAINER_1_NAME \
      --image='WORKER_POOL_IMAGE' \
      --set-env-vars=KEY=VALUE \
      --container SIDECAR_CONTAINER_NAME \
      --image='SIDECAR_IMAGE' \
      --set-env-vars=KEY_N=VALUE_N
  3. Tunggu hingga deployment selesai. Setelah berhasil diselesaikan, Cloud Run akan menampilkan pesan berhasil.

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      name = "CONTAINER_NAME"
      image = "IMAGE_URL"
    }
    containers {
      name = "SIDECAR_CONTAINER_NAME"
      image = "SIDECAR_IMAGE_URL"
    }
  }
}

Ganti kode berikut:

  • WORKER_POOL: nama pool pekerja.
  • REGION: Google Cloud region—misalnya, europe-west1.
  • CONTAINER_NAME: nama container.
  • IMAGE_URL dengan referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • SIDECAR_CONTAINER_NAME: nama container sidecar.
  • SIDECAR_IMAGE_URL: referensi ke image container file bantuan.

Fitur penting yang tersedia untuk deployment dengan file bantuan

Anda dapat menentukan urutan pengaktifan container dalam deployment dengan beberapa container, jika Anda memiliki dependensi yang memerlukan beberapa container untuk dimulai sebelum container lainnya dalam deployment tersebut.

Jika Anda memiliki penampung yang bergantung pada penampung lain, Anda harus menggunakan healthchecks dalam deployment Anda. Saat Anda menggunakan health check, Cloud Run akan mengikuti urutan startup container, memverifikasi kondisi setiap container sebelum memulai container berikutnya. Tanpa health check, Cloud Run akan mencoba memulai semua container, meskipun container yang menjadi dependensinya belum berjalan atau gagal dimulai.

Beberapa container dalam satu instance dapat mengakses volume dalam memori bersama, yang dapat diakses oleh setiap container menggunakan titik pemasangan yang Anda buat.

Langkah berikutnya

Setelah men-deploy kumpulan worker baru, Anda dapat melakukan hal berikut: