Men-deploy layanan menggunakan Compose

Halaman ini menjelaskan cara men-deploy layanan ke Cloud Run menggunakan file berdasarkan Spesifikasi Compose.

Anda dapat men-deploy ke Cloud Run dengan file Compose dengan cara berikut:

Penggunaan Compose untuk men-deploy ke Cloud Run sangat ideal untuk pengembangan dan menyederhanakan transisi dari lingkungan lokal ke lingkungan cloud. Cara ini memungkinkan Anda mempertahankan format konfigurasi yang konsisten untuk aplikasi lokal dan yang di-deploy.

Untuk mengelola lingkungan produksi di lingkungan infrastruktur sebagai kode (IaC), sebaiknya gunakan Terraform.

Batasan

  • Deployment Compose men-deploy satu layanan Cloud Run dengan beberapa container.
  • Deployment Compose hanya menerjemahkan sebagian fitur Cloud Run yang didukung.
  • Layanan yang dibuat menggunakan Compose ditetapkan secara default ke 1 instance maksimum.
  • Meskipun menyederhanakan deployment, deployment Cloud Run Compose bukan pengganti strategi infrastruktur sebagai kode yang komprehensif untuk lingkungan produksi.

Men-deploy layanan dari image container dengan Compose

Tentukan layanan Anda dalam file compose.yaml dan deploy dari image container yang ada. Untuk mengetahui informasi selengkapnya, lihat Men-deploy image container.

Contoh: Aplikasi layanan tunggal

Contoh berikut menunjukkan file compose.yaml untuk layanan web yang menggunakan image container bawaan.

services:
  web:
    image: us-docker.pkg.dev/cloudrun/container/hello
    ports:
      - "8080:8080"

Men-deploy layanan

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

    gcloud beta run compose up compose.yaml

  2. Respons y untuk setiap perintah guna menginstal komponen yang diperlukan atau mengaktifkan API.

  3. 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 .

Men-deploy dari sumber dengan Compose

Tentukan layanan Anda dalam file compose.yaml dan deploy layanan tersebut dengan membangun dari kode sumber. Untuk mengetahui informasi selengkapnya, lihat Men-deploy layanan dari kode sumber.

Contoh: Aplikasi layanan tunggal

Contoh berikut menunjukkan file compose.yaml untuk layanan web yang di-build dari sumber di direktori saat ini.

services:
  web:
    build: .
    ports:
      - "8080:8080"

Men-deploy layanan

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

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

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

    3. 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 .

Fitur yang didukung

Saat Anda men-deploy menggunakan file compose.yaml, Cloud Run dapat secara otomatis menyediakan resource Google Cloud lain seperti yang ditentukan dalam file Compose Anda. Jika resource diperlukan, Cloud Run akan meminta persetujuan Anda sebelum membuatnya.

Cloud Run mendukung subset fitur Compose berikut:

Kolom Compose Pemetaan & deskripsi Cloud Run
services

Layanan dipetakan ke setiap container dalam layanan Cloud Run yang di-deploy.

volumes

Didukung sebagian. Menerjemahkan pemasangan bind, volume, dan tmpfs ke dalam padanan Cloud Run.

secrets

Didukung. Menggunakan Secret Manager.

configs

Didukung. Menggunakan Cloud Storage.

build

Cloud Build membangun container menggunakan konteks build, memberi tag, dan mengirim ke repositori cloud-run-source-deploy di Artifact Registry.

image

Men-deploy image container yang telah dibuat sebelumnya dari registry yang didukung. Gunakan jika Anda memiliki image bawaan. Hanya mendukung image Docker Hub dan Artifact Registry. Untuk image kustom, Anda dapat mengirim image ke Artifact Registry dan menggunakannya.

ports

Daftar pemetaan port, seperti 8080:8080, yang menentukan container ingress.

expose

Daftar port yang akan diekspos tetapi tidak dipublikasikan, seperti 3000, untuk memastikan bahwa layanan dependen memiliki port yang tersedia untuk komunikasi.

depends_on

Menentukan urutan startup container. Hal ini memastikan bahwa setiap layanan yang tercantum dalam run-compose memiliki port yang ditentukan oleh ports atau expose sehingga container lain dapat berkomunikasi dengannya.

cpu_count/cpus

Petunjuk yang digunakan untuk menyetel batas CPU dan memori Cloud Run, mengalokasikan resource secara otomatis sesuai dengan logika berikut:

  • <= 2 CPU: 1Gi Memory
  • <= 4 CPU: 2Gi Memory
  • > 4 CPU: 4Gi Memory
container_name

Menetapkan nama container untuk penyelesaian dependensi, yang secara default adalah nama layanan jika tidak ditentukan.

environment

Meneruskan variabel lingkungan ke container yang sesuai di Cloud Run.

command

Mengganti perintah default container, yang dideklarasikan oleh container, dengan memetakan ke atribut args di Cloud Run; misalnya, petunjuk CMD Dockerfile.

entrypoint

Didukung.

env_file

Didukung.

x-google-cloudrun:ingress-container

(Ekstensi) Tambahkan ekstensi khusus Google ini ke layanan dan tetapkan ke true untuk menandai sebagai penampung ingress yang menerima semua traffic eksternal.

x-google-cloudrun:volume-type: in-memory

(Ekstensi) Tambahkan ekstensi khusus Google ini ke volume dan tetapkan ke in-memory, bukan volume default yang didukung oleh Cloud Storage.

Secret yang dipetakan ke Secret Manager

Jika file compose.yaml Anda menentukan secrets, gcloud CLI akan menyediakan secret Secret Manager untuk menyimpan data ini.

Volume dan konfigurasi yang dipetakan ke Cloud Storage

Jika file compose.yaml Anda menentukan volumes atau configs tingkat teratas, gcloud CLI akan menyediakan bucket Cloud Storage untuk mengelola data ini. Satu bucket dibuat per deployment, menggunakan folder untuk memisahkan volume dan konfigurasi.

  • Volume bernama: Folder kosong yang sesuai dengan nama volume akan dibuat di bucket.
  • Bind mount: Untuk bind mount, Cloud Run mengupload konten direktori sumber lokal ke folder di bucket sebelum deployment.
  • Configs: Untuk setiap konfigurasi yang ditentukan dengan sumber file:, Cloud Run mengupload konten file lokal ke folder di bucket.

Peran yang diperlukan

Selama deployment, Cloud Run secara otomatis memberikan peran yang diperlukan kepada identitas layanan yang di-deploy untuk mengakses resource yang disediakan:

  • Bucket Cloud Storage: roles/storage.objectUser
  • Secret Manager Secrets: roles/secretmanager.secretAccessor

Komunikasi antar-container dari instance yang sama

Cloud Run menambahkan entri ke file /etc/hosts di setiap container. Entri ini memetakan nama layanan dari file compose.yaml ke alamat IP internalnya, sehingga layanan dapat berkomunikasi satu sama lain menggunakan nama layanannya.

Langkah berikutnya