Men-deploy ke Cloud Run menggunakan Cloud Build

Halaman ini menjelaskan cara men-deploy layanan Cloud Run secara otomatis menggunakan Cloud Build. Jika Anda baru menggunakan Cloud Build, baca panduan memulai dan ringkasan konfigurasi build terlebih dahulu.

Cloud Run memungkinkan Anda untuk menjalankan container stateless di lingkungan serverless. Dengan Cloud Build, Anda dapat men-deploy image container dari Container Registry (Tidak digunakan lagi) dan Artifact Registry ke Cloud Run. Anda dapat men-deploy image yang ada, membangun dan men-deploy image, atau mengotomatiskan deployment.

Sebelum memulai

  • Enable the Cloud Build, Cloud Run, Container Registry, and Resource Manager APIs.

    Enable the APIs

  • Siapkan kode sumber aplikasi Anda. Kode sumber Anda harus disimpan dalam repositori, seperti Cloud Source Repositories, GitHub, atau Bitbucket.

  • Untuk menjalankan perintah gcloud di halaman ini, instal Google Cloud CLI.

Izin IAM yang diperlukan

Jika image Anda disimpan dalam project Google Cloud yang sama dengan yang digunakan untuk men-deploy image Anda, atau jika image Anda publik di Container Registry, Anda memerlukan izin IAM berikut:

Untuk men-deploy ke Cloud Run, berikan peran Cloud Run Admin dan Service Account User ke akun layanan Cloud Build:

  1. Buka halaman setelan Cloud Build di konsol Google Cloud:

    Buka halaman setelan Cloud Build

  2. Di panel Izin akun layanan, tetapkan status peran Cloud Run Admin ke DIAKTIFKAN:

    Screenshot halaman izin akun Layanan

  3. Dalam langkah-langkah tambahan yang mungkin diperlukan adalah pop-up, klik GRANT ACCESS TO ALL SERVICE ACCOUNTS.

Membangun dan men-deploy container

Dengan Cloud Build, Anda dapat membangun image container, menyimpan image bawaan di Container Registry, lalu men-deploy image tersebut ke Cloud Run.

Untuk membangun dan men-deploy image container:

  1. Di direktori utama project, buat file konfigurasi yang bernama cloudbuild.yaml.

  2. Dalam file konfigurasi build, tambahkan langkah-langkah build docker untuk mem-build image dan kirim ke Container Registry, lalu tambahkan langkah build gcloud untuk memanggil perintah gcloud run deploy guna men-deploy image di Cloud Run:

    steps:
    # Build the container image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/PROJECT_ID/IMAGE', '.']
    # Push the container image to Container Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/PROJECT_ID/IMAGE']
    # Deploy container image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'gcr.io/PROJECT_ID/IMAGE', '--region', 'SERVICE_REGION']
    images:
    - gcr.io/PROJECT_ID/IMAGE
    

    Dengan keterangan:

    • SERVICE_NAME adalah nama layanan Cloud Run.
    • SERVICE_REGION adalah region layanan Cloud Run yang Anda deploy.
    • PROJECT_ID adalah ID project Google Cloud tempat gambar Anda disimpan.
    • IMAGE adalah nama image Anda di Container Registry.
  3. Buka direktori utama project Anda dan jalankan perintah berikut, dengan BUILD_REGION adalah salah satu region build yang didukung untuk menjalankan build:

     gcloud builds submit --region=BUILD_REGION
    

Setelah berhasil diselesaikan, pesan berhasil akan ditampilkan bersama dengan URL layanan yang di-deploy.

Deployment berkelanjutan

Anda dapat mengotomatiskan deployment software ke Cloud Run dengan membuat pemicu Cloud Build. Anda dapat mengonfigurasi pemicu untuk mem-build dan men-deploy gambar setiap kali memperbarui kode sumber.

Untuk mengotomatiskan deployment Anda:

  1. Di root repositori Anda, tambahkan file konfigurasi bernama cloudbuild.yaml yang berisi langkah-langkah untuk membangun image, kirim image ke Container Registry, lalu panggil perintah gcloud run deploy:

      steps:
      # Build the container image
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA', '.']
      # Push the container image to Container Registry
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA']
      # Deploy container image to Cloud Run
      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: gcloud
        args:
        - 'run'
        - 'deploy'
        - 'SERVICE_NAME'
        - '--image'
        - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA'
        - '--region'
        - 'SERVICE_REGION'
      images:
      - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA'
    

    Dengan keterangan:

    • SERVICE_NAME adalah nama layanan Cloud Run.
    • SERVICE_REGION adalah region layanan Cloud Run yang Anda deploy.

    Penggunaan variabel substitusi $COMMIT_SHA diisi oleh Cloud Build saat dipicu dari repositori Git.

  2. Buat pemicu build dengan file konfigurasi yang dibuat pada langkah sebelumnya:

    1. Buka halaman Pemicu:

      Buka halaman Pemicu

    2. Klik Buat trigger.

    3. Di kolom Nama, masukkan nama pemicu Anda.

    4. Di bagian Wilayah, pilih wilayah untuk pemicu Anda.

    5. Di bagian Peristiwa, pilih peristiwa repositori untuk memulai pemicu Anda.

    6. Di bagian Sumber, pilih repositori dan cabang atau nama tag yang akan memulai pemicu Anda. Untuk informasi selengkapnya tentang menentukan cabang yang akan otomatis di-build, lihat Membuat pemicu build.

    7. Di bagian Configuration, pilih Cloud Build configuration file (YAML or JSON).

    8. Di kolom Lokasi file konfigurasi Cloud Build, ketik cloudbuild.yaml setelah /.

    9. Klik Buat untuk menyimpan pemicu build Anda.

  3. Selesai! Mulai sekarang, setiap kali Anda mengirim ke repositori, build dan deployment ke layanan Anda akan dipanggil secara otomatis.

Setiap kali mengirim kode baru ke repositori, Anda akan otomatis memicu build dan men-deploy ke layanan Cloud Run.

Untuk mengetahui informasi selengkapnya terkait cara membuat pemicu Cloud Build, baca Membuat dan mengelola pemicu build.

Menggunakan izin IAM minimal

Saat di-deploy dengan layanan Cloud Run, container dijalankan dengan identitas Akun Layanan Runtime di layanan Cloud Run. Karena Cloud Build dapat otomatis men-deploy container baru, Cloud Build harus dapat bertindak sebagaiAkun Layanan Runtime di layanan Cloud Run Anda.

Untuk memberikan akses terbatas pada Cloud Build guna men-deploy layanan Cloud Run:

Konsol

  1. Buka halaman akun Layanan di konsol Google Cloud:

    Buka halaman Service accounts

  2. Klik alamat email Akun Layanan Runtime layanan Cloud Run Anda (secara default, adalah PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  3. Klik tab Izin.

  4. Klik Berikan akses.

  5. Masukkan Akun Layanan Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com)

  6. Di menu dropdown Pilih peran, pilih peran Akun Layanan > Pengguna Akun Layanan.

  7. Klik Save.

gcloud

Gunakan perintah gcloud iam service-accounts add-iam-policy-binding, dengan PROJECT_NUMBER adalah ID numerik project Anda:

gcloud iam service-accounts add-iam-policy-binding \
  PROJECT_NUMBER-compute@developer.gserviceaccount.com \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

Ganti PROJECT_NUMBER dengan ID numerik project Anda.

Jika Anda menggunakan Cloud Run dengan identitas layanan yang disesuaikan, ganti PROJECT_NUMBER-compute@developer.gserviceaccount.com dengan alamat akun layanan Anda.

Lihat Izin deployment untuk informasi selengkapnya.

Contoh kode

Berikut adalah beberapa contoh repositori, yang masing-masing berisi aplikasi contoh dan file konfigurasi build untuk men-deploy aplikasi ke Cloud Run:

  • deploy-prebuilt: Contoh kode yang menunjukkan cara men-deploy image bawaan ke Cloud Run.
  • run-example-builddeploy: Contoh kode yang menunjukkan cara membangun dan men-deploy image ke Cloud Run.

Langkah selanjutnya