Cloud Run memungkinkan Anda menjalankan image stateless di lingkungan tanpa server. Dengan Cloud Build, Anda dapat men-deploy image dari Artifact Registry ke Cloud Run. Anda dapat men-deploy image yang ada, membuat dan men-deploy image, atau mengotomatiskan deployment.
Sebelum memulai
-
Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.
Siapkan kode sumber aplikasi Anda. Kode sumber Anda harus disimpan di repositori seperti GitHub atau Bitbucket.
Untuk menjalankan perintah
gcloud
di halaman ini, instal Google Cloud CLI.Jika Anda menggunakan Kontrol Layanan VPC, siapkan kumpulan pribadi di perimeter Kontrol Layanan VPC. Anda juga harus mengonfigurasi Cloud Run untuk Kontrol Layanan VPC.
Izin Identity and Access Management yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk men-deploy ke Cloud Run menggunakan Cloud Build, minta administrator untuk memberi Anda peran IAM berikut pada akun layanan Cloud Build default:
-
Cloud Run Developer (
roles/run.developer
) -
Logs Writer (
roles/logging.logWriter
) -
Penulis Artifact Registry (
roles/artifactregistry.writer
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Storage Admin (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membangun dan men-deploy image
Cloud Build memungkinkan Anda membangun image, menyimpan image yang dibangun di Artifact Registry, lalu men-deploy image ke Cloud Run.
Untuk membuat dan men-deploy image:
Di direktori root project Anda, buat file konfigurasi bernama
cloudbuild.yaml
.Dalam file konfigurasi build, tambahkan langkah-langkah build
docker
untuk mem-build image dan mengirimkannya ke Artifact Registry, lalu tambahkan langkah buildgcloud
untuk memanggil perintahgcloud run deploy
guna men-deploy image di Cloud Run:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
Dengan:
REPOSITORY
adalah nama repositori Artifact Registry tempat Anda men-deploy image.LOCATION
adalah lokasi repositori Artifact Registry Anda, sepertius-east1
.PROJECT_ID
adalah project ID Google Cloud tempat image Anda disimpan.SERVICE_NAME
adalah nama layanan Cloud Run.SERVICE_REGION
adalah region layanan Cloud Run yang Anda deploy.IMAGE
adalah nama image Anda di Artifact Registry.
Buka direktori root project Anda dan jalankan perintah berikut, dengan
LOCATION
adalah salah satu region build yang didukung untuk menjalankan build:gcloud builds submit --region=LOCATION
Setelah berhasil diselesaikan, pesan berhasil akan ditampilkan beserta 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 membangun dan men-deploy image setiap kali Anda memperbarui kode sumber.
Untuk mengotomatiskan deployment Anda:
Di root repositori, tambahkan file konfigurasi bernama
cloudbuild.yaml
dengan langkah-langkah untuk membangun image, mengirim image ke Artifact Registry, lalu memanggil perintahgcloud run deploy
:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
Dengan:
REPOSITORY
adalah nama repositori Artifact Registry tempat Anda men-deploy image.LOCATION
adalah lokasi repositori Artifact Registry Anda, sepertius-east1
.PROJECT_ID
adalah project ID Google Cloud tempat image Anda disimpan.SERVICE_NAME
adalah nama layanan Cloud Run.SERVICE_REGION
adalah region layanan Cloud Run yang Anda deploy.IMAGE
adalah nama image Anda di Artifact Registry.
Variabel substitusi
$COMMIT_SHA
diisi oleh Cloud Build saat dipicu dari repositori Git.Buat pemicu build dengan file konfigurasi yang dibuat pada langkah sebelumnya:
Buka halaman Pemicu:
Klik Create Trigger.
Di kolom Nama, masukkan nama pemicu Anda.
Di bagian Region, pilih region untuk pemicu Anda.
Di bagian Peristiwa, pilih peristiwa repositori untuk memulai pemicu Anda.
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.
Di bagian Konfigurasi, pilih File konfigurasi Cloud Build (YAML atau JSON).
Di kolom Lokasi file konfigurasi Cloud Build, ketik
cloudbuild.yaml
setelah/
.Klik Buat untuk menyimpan pemicu build Anda.
Sekarang, saat Anda mengirimkan kode baru ke repositori, Cloud Build akan memanggil build dan men-deploy layanan ke Cloud Run.
Untuk mengetahui informasi selengkapnya tentang cara membuat pemicu Cloud Build, lihat Membuat dan mengelola pemicu build.
Menggunakan izin IAM minimal
Saat di-deploy dengan layanan Cloud Run, image dijalankan menggunakan identitas Akun Layanan Runtime dari layanan Cloud Run. Karena Cloud Build dapat otomatis men-deploy image baru, Cloud Build harus dapat bertindak sebagai Akun Layanan Runtime di layanan Cloud Run Anda.
Untuk memberikan akses terbatas pada Cloud Build guna men-deploy layanan Cloud Run, lakukan hal berikut:
Konsol
Buka halaman Service accounts di konsol Google Cloud :
Klik alamat email Akun Layanan Runtime layanan Cloud Run Anda (secara default, alamatnya adalah
PROJECT_NUMBER[email protected]
).Klik tab Izin.
Klik
Berikan akses.Masukkan Akun Layanan Cloud Build (
[email protected]
)Di menu drop-down Pilih peran, pilih peran Akun Layanan > Pengguna Akun Layanan.
Klik Simpan.
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[email protected] \ --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
[email protected]
dengan alamat akun layanan Anda.
Lihat Izin deployment untuk informasi selengkapnya.
Contoh kode
Berikut beberapa contoh repositori, yang masing-masing berisi contoh aplikasi 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 berikutnya
- Pelajari cara menggunakan Cloud Deploy untuk men-deploy ke Cloud Run.
- Pelajari cara men-deploy di GKE.
- Pelajari cara men-deploy di Cloud Run Functions.
- Pelajari cara men-deploy di App Engine.
- Pelajari cara men-deploy di Firebase.
- Pelajari cara melakukan deployment biru-hijau di Compute Engine.
- Pelajari cara memecahkan masalah error build.