Men-deploy image container ke Cloud Run

Halaman ini menjelaskan cara men-deploy image container ke layanan Cloud Run baru atau ke revisi baru dari layanan Cloud Run yang sudah ada.

Image container diimpor oleh Cloud Run saat di-deploy. Cloud Run menyimpan salinan image container ini selama digunakan oleh revisi penayangan. Image container tidak ditarik dari repositori container saat instance Cloud Run baru dimulai.

Untuk contoh panduan men-deploy layanan baru, lihat Panduan memulai deployment container contoh.

Sebelum memulai

Jika Anda dikenai kebijakan organisasi pembatasan domain yang membatasi pemanggilan yang tidak diautentikasi untuk project, Anda perlu mengakses layanan yang di-deploy seperti yang dijelaskan di bagian Menguji layanan pribadi.

Peran yang diperlukan

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

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika layanan 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 layanan 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 ke layanan 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.

Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.

Konsol

Untuk men-deploy image container:

  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Klik Deploy container untuk menampilkan formulir Create service.

    1. Di dalam formulir, pilih opsi deployment:

      1. Jika Anda ingin men-deploy container secara manual, pilih Deploy one revision from an existing container image dan tentukan image container tersebut.

      2. Jika Anda ingin mengotomatiskan deployment berkelanjutan, pilih Continuously deploy new applys from a source repository dan ikuti petunjuk untuk continuous deployment.

    2. Masukkan nama layanan yang diperlukan. Nama layanan harus terdiri dari 49 karakter atau kurang dan harus unik per region dan project. Nama layanan tidak dapat diubah nanti dan akan terlihat secara publik.

    3. Pilih wilayah tempat Anda ingin layanan berada. Pemilih region menunjukkan tingkat harga, ketersediaan pemetaan domain, dan menandai wilayah yang memiliki dampak karbon terendah.

    4. Tetapkan penagihan sesuai kebutuhan.

    5. Di bagian Penskalaan layanan, jika Anda menggunakan penskalaan otomatis Cloud Run default, Anda dapat menentukan instance minimum. Jika Anda menggunakan penskalaan manual, tentukan jumlah instance untuk layanan.

    6. Tetapkan setelan Ingress dalam formulir sesuai kebutuhan.

    7. Di bagian Authentication, konfigurasi hal berikut:

      • Jika Anda membuat API atau situs publik, pilih Izinkan akses publik. Memilih opsi ini akan menetapkan peran IAM Invoker ke ID khusus allUser. Anda dapat menggunakan IAM untuk mengedit setelan ini nanti setelah membuat layanan.
      • Jika Anda menginginkan layanan aman yang dilindungi oleh autentikasi, pilih Require authentication.
  3. Klik Container(s), Volumes, Networking, Security untuk menetapkan setelan opsional lainnya di tab yang sesuai:

  4. Setelah selesai mengonfigurasi layanan, klik Create untuk men-deploy image ke Cloud Run dan tunggu hingga deployment selesai.

  5. Klik link URL yang ditampilkan untuk membuka endpoint yang unik dan stabil dari layanan yang di-deploy.

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 berikut:

      gcloud run deploy SERVICE --image IMAGE_URL

      Ganti kode berikut:

      • SERVICE: nama layanan yang ingin Anda deploy. Nama layanan harus terdiri dari 49 karakter atau kurang dan harus unik per region dan project. Jika layanan belum ada, perintah ini akan membuat layanan selama deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama layanan jika mengabaikannya.
      • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG . Perlu diperhatikan bahwa jika Anda tidak memberikan flag --image, perintah deploy akan mencoba men-deploy dari kode sumber.

      Jika membuat API atau situs publik, izinkan akses publik ke layanan Anda menggunakan flag --allow-unauthenticated. Tindakan ini menetapkan peran IAM Cloud Run Invoker ke allUsers. Anda juga dapat menentukan --no-allow-unauthenticated untuk melarang akses publik. Jika menghapus salah satu flag ini, Anda akan diminta untuk mengonfirmasi kapan perintah deploy dijalankan.

    2. Tunggu hingga deployment selesai. Setelah berhasil diselesaikan, pesan berhasil akan ditampilkan beserta URL layanan yang di-deploy.

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

    gcloud run deploy SERVICE --region REGION

  3. YAML

    Anda dapat menyimpan spesifikasi layanan dalam file YAML, lalu men-deploy-nya menggunakan gcloud CLI.

    1. Buat file baru service.yaml dengan konten berikut:

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE
      spec:
        template:
          spec:
            containers:
            - image: IMAGE

      Ganti kode berikut:

      • SERVICE: nama layanan Cloud Run Anda. Nama layanan harus terdiri dari 49 karakter atau kurang dan harus unik per region dan project.
      • IMAGE: URL image container Anda.

      Anda juga dapat menentukan konfigurasi lainnya, seperti variabel lingkungan atau batas memori.

    2. Deploy layanan baru menggunakan perintah berikut:

      gcloud run services replace service.yaml
    3. Sebagai opsi, tampilkan layanan Anda ke publik jika ingin mengizinkan akses tanpa autentikasi ke layanan.

    Terraform

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

    Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:
      provider "google" {
        project = "PROJECT-ID"
      }
    
      resource "google_cloud_run_v2_service" "default" {
        name     = "SERVICE"
        location = "REGION"
        client   = "terraform"
    
        template {
          containers {
            image = "IMAGE_URL"
          }
        }
      }
    
      resource "google_cloud_run_v2_service_iam_member" "noauth" {
        location = google_cloud_run_v2_service.default.location
        name     = google_cloud_run_v2_service.default.name
        role     = "roles/run.invoker"
        member   = "allUsers"
      }
    

    Ganti kode berikut:

    • PROJECT-ID: Google Cloud project ID
    • REGION: Google Cloud region
    • SERVICE: nama layanan Cloud Run Anda. Nama layanan harus terdiri dari 49 karakter atau kurang dan harus unik per region dan project.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

    Konfigurasi ini mengizinkan akses publik (setara dengan --allow-unauthenticated). Untuk membuat layanan menjadi pribadi, hapus stanza google_cloud_run_v2_service_iam_member.

    Tulis

    Anda dapat menyimpan Spesifikasi Compose dalam file YAML, lalu men-deploy-nya sebagai layanan Cloud Run menggunakan satu perintah gcloud.

    Untuk men-deploy file compose.yaml sebagai layanan Cloud Run, ikuti langkah-langkah berikut:

    1. Di direktori project Anda, buat file compose.yaml dengan definisi layanan Anda.

      services:
        web:
          image: IMAGE
          ports:
            - "8080:8080"

      Ganti IMAGE dengan URL image container Anda.

      Anda juga dapat menentukan opsi konfigurasi lainnya seperti variabel lingkungan, secret, dan pemasangan volume.

    2. Untuk men-deploy layanan, jalankan perintah gcloud beta run compose up:

      gcloud beta run compose up compose.yaml
    3. Respons y untuk setiap perintah guna menginstal komponen yang diperlukan atau mengaktifkan API.

    4. Opsional: Tampilkan layanan Anda ke publik jika ingin mengizinkan akses tanpa autentikasi ke layanan.

    Setelah deployment, URL layanan Cloud Run akan ditampilkan. Salin URL ini dan tempelkan ke browser Anda untuk melihat penampung yang sedang berjalan. Anda dapat menonaktifkan autentikasi default dari konsol Google Cloud .

    Library klien

    Untuk men-deploy layanan baru dari kode:

    REST API

    Untuk men-deploy layanan baru, kirim permintaan HTTP POST ke endpoint service Cloud Run Admin API.

    Misalnya, menggunakan curl:

    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer ACCESS_TOKEN" \
      -X POST \
      -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \
      https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services?serviceId=SERVICE

    Ganti kode berikut:

    • ACCESS_TOKEN: token akses yang valid untuk akun yang memiliki izin IAM untuk men-deploy layanan. Misalnya, jika login ke gcloud, Anda dapat mengambil token akses menggunakan gcloud auth print-access-token. Dari dalam instance container Cloud Run, Anda dapat mengambil token akses menggunakan server metadata instance container.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • SERVICE: nama layanan yang ingin Anda deploy. Nama layanan harus terdiri dari 49 karakter atau kurang dan harus unik per region dan project.
    • REGION: Google Cloud region layanan.
    • PROJECT-ID: Google Cloud Project ID

Lokasi Cloud Run

Cloud Run bersifat regional, berarti infrastruktur yang menjalankan layanan Cloud Run Anda terletak di region tertentu dan dikelola oleh Google agar tersedia secara redundan di semua zona dalam region tersebut.

Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama untuk memilih region tempat layanan Cloud Run dijalankan. Pada umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan lokasi produk Google Cloud lainnya yang digunakan oleh layanan Cloud Run Anda. Menggunakan Google Cloud produk secara bersamaan di beberapa lokasi dapat memengaruhi latensi serta biaya layanan Anda.

Cloud Run tersedia di region berikut:

Tergantung harga Tingkat 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • asia-south1 (Mumbai, India)
  • europe-north1 (Finlandia) ikon daun CO2 Rendah
  • europe-north2 (Stockholm) ikon daun CO2 Rendah
  • europe-southwest1 (Madrid) ikon daun CO2 Rendah
  • europe-west1 (Belgia) ikon daun CO2 Rendah
  • europe-west4 (Belanda) ikon daun CO2 Rendah
  • europe-west8 (Milan)
  • europe-west9 (Paris) ikon daun CO2 Rendah
  • me-west1 (Tel Aviv)
  • northamerica-south1 (Meksiko)
  • us-central1 (Iowa) ikon daun CO2 Rendah
  • us-east1 (South Carolina)
  • us-east4 (North Virginia)
  • us-east5 (Columbus)
  • us-south1 (Dallas) ikon daun CO2 Rendah
  • us-west1 (Oregon) ikon daun CO2 Rendah

Tergantung harga Tingkat 2

  • africa-south1 (Johannesburg)
  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seoul, Korea Selatan)
  • asia-southeast1 (Singapura)
  • asia-southeast2 (Jakarta)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Warsawa, Polandia)
  • europe-west10 (Berlin)
  • europe-west12 (Turin)
  • europe-west2 (London, Inggris Raya) ikon daun CO2 Rendah
  • europe-west3 (Frankfurt, Jerman)
  • europe-west6 (Zurich, Swiss) ikon daun CO2 Rendah
  • me-central1 (Doha)
  • me-central2 (Dammam)
  • northamerica-northeast1 (Montreal) ikon daun CO2 Rendah
  • northamerica-northeast2 (Toronto) ikon daun CO2 Rendah
  • southamerica-east1 (Sao Paulo, Brasil) ikon daun CO2 Rendah
  • southamerica-west1 (Santiago, Cile) ikon daun CO2 Rendah
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Jika sudah membuat layanan Cloud Run, Anda dapat melihat region di dasbor Cloud Run di konsolGoogle Cloud .

Men-deploy revisi baru dari layanan yang ada

Anda dapat men-deploy revisi baru menggunakan Google Cloud konsol, command line gcloud, atau file konfigurasi YAML.

Perhatikan bahwa mengubah setelan konfigurasi akan menyebabkan 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 penayangan.

Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.

Konsol

Untuk men-deploy revisi baru dari layanan yang sudah ada:

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Temukan layanan yang ingin Anda update dalam daftar layanan, lalu klik untuk membuka detail layanan tersebut.

  3. Klik Edit dan deploy revisi baru untuk menampilkan formulir deployment revisi.

    1. Jika diperlukan, berikan URL ke image container baru yang ingin Anda deploy.

    2. Konfigurasi penampung sesuai kebutuhan.

    3. Tetapkan penagihan sesuai kebutuhan.

    4. Di bagian Capacity, tentukan memory limit dan CPU limit.

    5. Tentukan waktu tunggu permintaan dan konkurensi sesuai kebutuhan.

    6. Tentukan lingkungan eksekusi sesuai kebutuhan.

    7. Di bagian Autoscaling, tentukan instance minimum dan maksimum.

    8. Gunakan tab lain sesuai kebutuhan untuk mengonfigurasi:

  4. Untuk mengirim semua traffic ke revisi baru, pilih Segera menayangkan revisi ini. Untuk meluncurkan revisi baru secara bertahap, hapus kotak centang tersebut. Hal ini menghasilkan deployment tanpa traffic yang dikirim ke revisi baru. Ikuti petunjuk untuk peluncuran bertahap setelah melakukan deployment.

  5. Klik Deploy dan tunggu hingga deployment selesai.

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 run deploy SERVICE --image IMAGE_URL

      Ganti kode berikut:

      • SERVICE: nama layanan yang Anda deploy ke. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama layanan jika mengabaikannya.
      • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

      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, pesan berhasil akan ditampilkan beserta URL layanan yang di-deploy.

  3. YAML

    Jika Anda perlu mendownload atau melihat konfigurasi layanan yang sudah ada, gunakan perintah berikut untuk menyimpan hasilnya ke file YAML:

    gcloud run services describe SERVICE --format export > service.yaml

    Dari file YAML konfigurasi layanan, ubah atribut turunan spec.template sesuai kebutuhan untuk memperbarui setelan revisi, lalu deploy revisi baru:

    gcloud run services replace service.yaml

    Cloud Code

    Untuk men-deploy revisi baru dari layanan yang ada dengan Cloud Code, baca panduan IntelliJ dan Visual Studio Code.

    Terraform

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

    1. Buat perubahan pada file konfigurasi.

    2. Terapkan konfigurasi Terraform:

      terraform apply

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

    Tulis

    Anda dapat menyimpan Spesifikasi Compose di file YAML, lalu men-deploy-nya sebagai revisi layanan Cloud Run menggunakan satu perintah gcloud.

    Untuk men-deploy file compose.yaml sebagai revisi layanan Cloud Run, ikuti langkah-langkah berikut:

    1. Di direktori project Anda, buat file compose.yaml dengan definisi layanan Anda.

      services:
        web:
          image: IMAGE
          ports:
            - "8080:8080"

      Ganti IMAGE dengan URL image container Anda.

      Anda juga dapat menentukan opsi konfigurasi lainnya seperti variabel lingkungan, secret, dan pemasangan volume.

    2. Untuk men-deploy layanan, jalankan perintah gcloud beta run compose up:

      gcloud beta run compose up compose.yaml
    3. Respons y untuk setiap perintah guna menginstal komponen yang diperlukan atau mengaktifkan API.

    4. Opsional: Tampilkan layanan Anda ke publik jika ingin mengizinkan akses tanpa autentikasi ke layanan.

    Setelah deployment, URL layanan Cloud Run akan ditampilkan. Salin URL ini dan tempelkan ke browser Anda untuk melihat penampung yang sedang berjalan. Anda dapat menonaktifkan autentikasi default dari konsol Google Cloud .

    Library klien

    Untuk men-deploy revisi baru dari kode:

    REST API

    Untuk men-deploy revisi baru, kirim permintaan PATCH HTTP ke endpoint service Cloud Run Admin API.

    Misalnya, menggunakan curl:

    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer ACCESS_TOKEN" \
      -X PATCH \
      -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \
      https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE

    Ganti kode berikut:

    • ACCESS_TOKEN: token akses yang valid untuk akun yang memiliki izin IAM untuk men-deploy revisi. Misalnya, jika login ke gcloud, Anda dapat mengambil token akses menggunakan gcloud auth print-access-token. Dari dalam instance container Cloud Run, Anda dapat mengambil token akses menggunakan server metadata instance container.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • SERVICE: nama layanan yang Anda deploy ke.
    • REGION: Google Cloud region layanan.
    • PROJECT-ID: Google Cloud Project ID

Lokasi Cloud Run

Cloud Run bersifat regional, berarti infrastruktur yang menjalankan layanan Cloud Run Anda terletak di region tertentu dan dikelola oleh Google agar tersedia secara redundan di semua zona dalam region tersebut.

Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama untuk memilih region tempat layanan Cloud Run dijalankan. Pada umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan lokasi produk Google Cloud lainnya yang digunakan oleh layanan Cloud Run Anda. Menggunakan Google Cloud produk secara bersamaan di beberapa lokasi dapat memengaruhi latensi serta biaya layanan Anda.

Cloud Run tersedia di region berikut:

Tergantung harga Tingkat 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • asia-south1 (Mumbai, India)
  • europe-north1 (Finlandia) ikon daun CO2 Rendah
  • europe-north2 (Stockholm) ikon daun CO2 Rendah
  • europe-southwest1 (Madrid) ikon daun CO2 Rendah
  • europe-west1 (Belgia) ikon daun CO2 Rendah
  • europe-west4 (Belanda) ikon daun CO2 Rendah
  • europe-west8 (Milan)
  • europe-west9 (Paris) ikon daun CO2 Rendah
  • me-west1 (Tel Aviv)
  • northamerica-south1 (Meksiko)
  • us-central1 (Iowa) ikon daun CO2 Rendah
  • us-east1 (South Carolina)
  • us-east4 (North Virginia)
  • us-east5 (Columbus)
  • us-south1 (Dallas) ikon daun CO2 Rendah
  • us-west1 (Oregon) ikon daun CO2 Rendah

Tergantung harga Tingkat 2

  • africa-south1 (Johannesburg)
  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seoul, Korea Selatan)
  • asia-southeast1 (Singapura)
  • asia-southeast2 (Jakarta)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Warsawa, Polandia)
  • europe-west10 (Berlin)
  • europe-west12 (Turin)
  • europe-west2 (London, Inggris Raya) ikon daun CO2 Rendah
  • europe-west3 (Frankfurt, Jerman)
  • europe-west6 (Zurich, Swiss) ikon daun CO2 Rendah
  • me-central1 (Doha)
  • me-central2 (Dammam)
  • northamerica-northeast1 (Montreal) ikon daun CO2 Rendah
  • northamerica-northeast2 (Toronto) ikon daun CO2 Rendah
  • southamerica-east1 (Sao Paulo, Brasil) ikon daun CO2 Rendah
  • southamerica-west1 (Santiago, Cile) ikon daun CO2 Rendah
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Jika sudah membuat layanan Cloud Run, Anda dapat melihat region di dasbor Cloud Run di konsolGoogle Cloud .

Men-deploy gambar dari project Google Cloud lain

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

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 layanan 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 Select a role, klik Artifact Registry -> Artifact Registry Reader.

  8. Deploy image container ke project yang berisi layanan Cloud Run.

Men-deploy gambar 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:

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

Atau, jika penggunaan repositori jarak jauh Artifact Registry bukan merupakan opsi, Anda dapat menarik dan mengirim image container untuk sementara ke Artifact Registry menggunakan docker push agar dapat men-deploy-nya ke Cloud Run. Image container diimpor oleh Cloud Run saat di-deploy, sehingga setelah deployment, Anda dapat menghapus image dari Artifact Registry.

Men-deploy beberapa container ke layanan (file bantuan)

Dalam deployment Cloud Run dengan file bantuan, ada satu masuk container yang menangani semua permintaan HTTPS yang masuk di PORT container yang Anda tentukan, dan ada satu atau lebih file bantuan container. Sidecar tidak dapat memproses permintaan HTTP yang masuk di port container masuk, tetapi dapat berkomunikasi satu sama lain dan dengan container ingress menggunakan port localhost. Porta {i>localhost<i} yang digunakan bervariasi tergantung pada kontainer yang Anda gunakan.

Dalam diagram berikut, container ingress berkomunikasi dengan file bantuan menggunakan localhost:5000.

Multi-container Cloud Run

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

Anda dapat men-deploy beberapa container di lingkungan eksekusi generasi pertama atau kedua.

Jika Anda menggunakan penagihan berbasis permintaan (default Cloud Run), file bantuan hanya dialokasikan CPU dalam skenario berikut:

  • Instance sedang memproses setidaknya satu permintaan.
  • Container ingress sedang dimulai.

Jika sidecar Anda harus menggunakan CPU di luar pemrosesan permintaan (misalnya, untuk pengumpulan metrik), konfigurasi setelan penagihan ke penagihan berbasis instance untuk layanan Anda. Untuk mengetahui informasi selengkapnya, lihat Setelan penagihan (layanan).

Jika Anda menggunakan penagihan berbasis permintaan, konfigurasi pemeriksaan startup untuk memastikan sidecar Anda tidak dibatasi CPU saat startup.

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

Kasus penggunaan

Kasus penggunaan untuk file bantuan di layanan Cloud Run meliputi:

  • Pemantauan, logging, dan pelacakan aplikasi
  • Menggunakan Nginx, Envoy, atau Apache2 sebagai proxy di depan penampung aplikasi Anda
  • Menambahkan filter autentikasi dan otorisasi (misalnya, Open Policy Agent)
  • Menjalankan proxy koneksi keluar seperti proxy Alloy DB Auth

Men-deploy layanan dengan container sidecar

Anda dapat men-deploy beberapa sidecar ke layanan Cloud Run menggunakan konsolGoogle Cloud , Google Cloud CLI, YAML, atau Terraform.

Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.

Konsol

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

    • Untuk men-deploy ke layanan yang ada, temukan layanan tersebut dalam daftar layanan, lalu klik untuk membuka, kemudian klik Edit dan deploy revisi baru untuk menampilkan formulir deployment revisi.
    • Untuk men-deploy layanan baru, klik Deploy container untuk menampilkan formulir Create service.
  2. Untuk layanan baru,

    1. Berikan nama layanan dan URL ke image container ingress yang ingin Anda deploy.
    2. Klik Container(s), Volumes, Networking, Security
  3. Di kartu Edit penampung, konfigurasi penampung ingress sesuai kebutuhan.

  4. Klik Tambahkan penampung dan konfigurasi penampung sidecar yang ingin Anda tambahkan bersama penampung ingress. Jika sidecar bergantung pada container lain dalam layanan, tunjukkan hal ini di menu Urutan start-up container. Ulangi langkah ini untuk setiap container sidecar yang Anda deploy.

  5. Untuk mengirim semua traffic ke revisi baru, pilih Segera menayangkan revisi ini. Untuk peluncuran bertahap, hapus centang pada kotak tersebut. Hal ini menghasilkan deployment tanpa traffic yang dikirim ke revisi baru. Ikuti petunjuk untuk peluncuran bertahap setelah Anda melakukan deployment.

  6. Klik Create untuk layanan baru atau Deploy untuk layanan yang sudah ada, lalu tunggu hingga deployment selesai.

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 layanan, jalankan perintah berikut:

    gcloud run deploy SERVICE \
     --container INGRESS_CONTAINER_NAME \
     --image='INGRESS_IMAGE' \
     --port='CONTAINER_PORT' \
     --container SIDECAR_CONTAINER_NAME \
     --image='SIDECAR_IMAGE'

    Ganti kode berikut:

    • SERVICE: nama layanan yang Anda deploy ke. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama layanan jika mengabaikannya.
    • INGRESS_CONTAINER_NAME: nama untuk container yang menerima permintaan—misalnya app.
    • INGRESS_IMAGE: referensi ke image container yang harus menerima permintaan—misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest.
    • CONTAINER_PORT: port tempat container ingress memproses permintaan masuk. Tidak seperti layanan container tunggal, untuk layanan yang berisi file bantuan, tidak ada port default untuk container ingress. Anda harus mengonfigurasi port container secara eksplisit untuk container ingress dan hanya satu container yang dapat memiliki port yang diekspos.
    • SIDECAR_CONTAINER_NAME: nama untuk container sidecar—misalnya sidecar.
    • SIDECAR_IMAGE: referensi ke image container file bantuan

    Jika Anda ingin mengonfigurasi setiap penampung dalam perintah deployment, berikan konfigurasi setiap penampung setelah parameter container, misalnya:

    gcloud run deploy SERVICE \
      --container CONTAINER_1_NAME \
      --image='INGRESS_IMAGE' \
      --set-env-vars=KEY=VALUE \
      --port='CONTAINER_PORT' \
      --container SIDECAR_CONTAINER_NAME \
      --image='SIDECAR_IMAGE' \
      --set-env-vars=KEY_N=VALUE_N
  3. Tunggu hingga deployment selesai. Setelah berhasil diselesaikan, pesan berhasil akan ditampilkan beserta URL layanan yang di-deploy.

  4. YAML

    Petunjuk ini menunjukkan file YAML dasar untuk layanan Cloud Run dengan file bantuan. Buat file bernama service.yaml dan tambahkan kode berikut ke dalamnya:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: INGRESS_IMAGE
            ports:
              - containerPort: CONTAINER_PORT
          - image: SIDECAR_IMAGE
          

    Ganti kode berikut:

    • SERVICE: nama layanan Cloud Run Anda. Nama layanan harus terdiri dari 49 karakter atau kurang.
    • CONTAINER_PORT: port tempat container ingress memproses permintaan masuk. Tidak seperti layanan container tunggal, untuk layanan yang berisi file bantuan, tidak ada port default untuk container ingress. Anda harus mengonfigurasi port container secara eksplisit untuk container ingress dan hanya satu container yang dapat memiliki port yang diekspos.
    • INGRESS_IMAGE: referensi ke image container yang harus menerima permintaan—misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest.
    • SIDECAR_IMAGE: referensi ke image container file bantuan. Anda dapat menentukan beberapa file bantuan dengan menambahkan lebih banyak elemen ke array containers di YAML.

    Setelah Anda memperbarui YAML untuk menyertakan container ingress dan file bantuan, deploy ke Cloud Run menggunakan perintah:

    gcloud run services replace service.yaml

    Terraform

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

    Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:
    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
      ingress = "INGRESS_TRAFFIC_ALL"
      template {
        containers {
          name = "INGRESS_CONTAINER_NAME"
          ports {
            container_port = CONTAINER_PORT
          }
          image = "INGRESS_IMAGE"
          depends_on = ["SIDECAR_CONTAINER_NAME"]
        }
        containers {
          name = "SIDECAR_CONTAINER_NAME"
          image = "SIDECAR_IMAGE"
          }
        }
      }
    

    CONTAINER_PORT menunjukkan port tempat container ingress memproses permintaan masuk. Tidak seperti layanan container tunggal, untuk layanan yang berisi file bantuan, tidak ada port default untuk container ingress. Anda harus mengonfigurasi port container secara eksplisit untuk container ingress dan hanya satu container yang dapat memiliki port yang diekspos.

Fitur penting yang tersedia untuk deployment dengan file bantuan

Memulai pesanan

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

Jika Anda memiliki penampung yang bergantung pada penampung lain, Anda harus menggunakan healthchecks dalam deployment Anda. Jika Anda menggunakan health check, Cloud Run akan mengikuti urutan startup container dan memeriksa kondisi setiap container, serta memastikan setiap container berhasil sebelum Cloud Run memulai container berikutnya sesuai urutan. Jika Anda tidak menggunakan health check, container yang responsif akan dimulai meskipun container yang menjadi dependensinya tidak berjalan.

Bertukar data file antar-sidecar

Beberapa container dalam satu instance dapat mengakses volume dalam memori bersama, yang dapat diakses oleh setiap container menggunakan titik pemasangan yang Anda buat. Ini biasanya digunakan untuk membagikan file antar-container, misalnya container sidecar telemetri dapat mengumpulkan log dari container aplikasi.

Berkomunikasi antar-sidecar

Dua container dari instance yang sama dapat saling berkomunikasi di jaringan lokal.

Pertimbangkan layanan contoh ini:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: example
spec:
  template:
    spec:
      containers:
      - name: ingress
        image: ...
        ports:
          - containerPort: 8080
      - name: sidecar
        image: ...

Setiap instance layanan ini akan menjalankan dua container: satu bernama ingress dan yang lainnya bernama sidecar.

Permintaan yang mencapai layanan dikirim ke penampung ingress di port 8080. Dalam layanan dengan beberapa container, hanya satu container yang dapat dikonfigurasi sebagai container ingress yang menangani semua permintaan masuk, dan ini harus berupa container yang dikonfigurasi containerPort-nya.

Container ingress dan sidecar dapat berkomunikasi satu sama lain di http://localhost. Misalnya, jika container sidecar memproses permintaan di port 5000, maka container ingress dapat berkomunikasi dengannya di http://localhost:5000.

Karena diberi nama, container bahkan dapat saling berkomunikasi menggunakan nama container. Misalnya, jika container sidecar memproses permintaan di port 5000, maka container ingress dapat berkomunikasi dengan sidecar menggunakan http://sidecar:5000.

Menyesuaikan container untuk Cloud Run

Sebagian besar container yang akan Anda bangun atau temukan akan kompatibel dengan kontrak runtime container Cloud Run. Namun, Anda mungkin perlu mengubah beberapa container yang dibuat untuk mempermudah pengembangan lokal atau mengharapkan kontrol mesin penuh agar kompatibel dengan lingkungan eksekusi Cloud Run.

Memindahkan pemasangan ke konfigurasi Cloud Run

Skrip inisialisasi container Anda harus mengasumsikan bahwa pemasangan sudah selesai sebelum memanggil container Anda. Anda harus memindahkan semua operasi pemasangan ke konfigurasi resource Cloud Run.

Beralih ke pengguna non-root jika memungkinkan

Lebih memilih container yang tidak menggunakan atau mengandalkan pengguna root. Praktik ini mengurangi risiko kerentanan layanan Cloud Run Anda, mengurangi permukaan serangan penampung, membatasi akses penyerang ke sistem file Anda, dan mematuhi prinsip hak istimewa terendah.

Gunakan instruksi USER di Dockerfile Anda untuk beralih ke identitas dengan hak istimewa yang lebih rendah, karena defaultnya adalah berjalan sebagai root. Cloud Run menggunakan pengguna yang ditentukan dalam Dockerfile Anda untuk menjalankan container.

Audit penggunaan biner setuid

Eksekusi biner setuid akan gagal saat dijalankan dari container Anda di Cloud Run.

Jika Anda menggunakan Docker atau Podman secara lokal, gunakan argumen --cap-drop=setuid. Atau, validasi bahwa biner yang Anda andalkan tidak memiliki set bit setuid.

Pastikan container root kompatibel dengan namespace pengguna

Uji perubahan Anda secara lokal atau di VM dengan mengevaluasi kode Anda saat berjalan di bawah namespace pengguna, seperti saat menggunakan fitur userns-remap Docker, menjalankan container Anda di Podman tanpa root, atau men-deploy perubahan tersebut ke VM yang menjalankan Container-Optimized OS dari Google dengan argumen --userns-remap=default dalam perintah docker run.

Langkah berikutnya

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

Anda dapat mengotomatiskan build dan deployment layanan Cloud Run menggunakan Pemicu Cloud Build.

Anda juga dapat menggunakan Cloud Deploy untuk menyiapkan pipeline continuous-delivery guna men-deploy layanan Cloud Run ke beberapa lingkungan: