Men-deploy aplikasi App Engine di lingkungan standar ke Cloud Run

ID region

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.

Pelajari ID region lebih lanjut.

Panduan ini menjelaskan cara men-deploy aplikasi yang ada di lingkungan standar ke Cloud Run. Petunjuk ini berlaku untuk runtime generasi kedua yang tidak menggunakan layanan paket lama App Engine.

Langkah-langkah yang dijelaskan dalam panduan ini tidak memengaruhi fungsi atau alur traffic aplikasi App Engine yang ada. Layanan Cloud Run yang baru dibuat adalah replika layanan App Engine yang dapat Anda uji secara independen.

Cloud Run menggunakan banyak infrastruktur yang sama dengan lingkungan standar App Engine sehingga ada banyak kesamaan di antara kedua platform tersebut. Untuk mempelajari lebih lanjut persamaan dan perbedaan antara App Engine dan Cloud Run, termasuk manfaat bermigrasi ke Cloud Run, lihat ringkasan perbandingan.

Untuk men-deploy ke Cloud Run, pilih salah satu strategi berikut:

  • Gunakan konfigurasi lokal file app.yaml (direkomendasikan): Pilih opsi ini untuk membangun image container langsung dari kode sumber lokal Anda dan men-deploy-nya ke Cloud Run. Tindakan ini memastikan bahwa modifikasi lokal terbaru pada kode atau konfigurasi Anda disertakan dalam deployment baru.

  • Gunakan image yang dibuat sebelumnya: Opsi ini berguna jika Anda tidak memiliki akses ke kode sumber. Pilih opsi ini untuk men-deploy salinan persis dari versi yang sudah berjalan di App Engine, tanpa membangun ulang image container. Hal ini berguna jika Anda ingin memverifikasi perilaku deployment aktif tanpa perubahan kode.

Sebelum memulai

  1. Pastikan aplikasi App Engine Anda berjalan tanpa error. Anda memerlukan akses ke kode sumber App Engine jika memilih untuk men-deploy menggunakan konfigurasi lokal.

  2. Aktifkan Cloud Run Admin API dan Artifact Registry API:

    Aktifkan API

  3. Konfigurasi project dan region Anda menggunakan perintah berikut:

    gcloud auth login
    gcloud config set project PROJECT_ID
    gcloud config set run/region REGION
    gcloud components update
    

    Ganti kode berikut:

    • PROJECT_ID: Google Cloud Project ID Anda.
    • REGION: region tempat Anda ingin men-deploy layanan Cloud Run.
  4. Periksa fitur yang tidak kompatibel di aplikasi Anda, dan hapus fitur tersebut sebelum bermigrasi ke Cloud Run. Untuk memeriksa ketidakcocokan aplikasi tanpa melakukan migrasi atau deployment, jalankan perintah berikut:

    gcloud beta app migrate-to-run --dry-run
    

    Tinjau hasil pemeriksaan kompatibilitas dan lakukan perubahan yang direkomendasikan jika diperlukan.

  5. Tinjau perbedaan Cloud Run berikut:

    • Cloud Run menggunakan istilah Revision, bukan Version, untuk mewakili setiap kali Anda men-deploy perubahan ke layanan tertentu. Men-deploy aplikasi Anda ke layanan di Cloud Run untuk pertama kalinya akan menciptakan revisi pertamanya. Setiap deployment layanan berikutnya akan membuat revisi lainnya. Pelajari lebih lanjut cara men-deploy ke Cloud Run.

    • Anda dapat men-deploy kode sumber ke Cloud Run menggunakan gcloud CLI atau Google Cloud konsol untuk mengonfigurasi dan mengelola setelan aplikasi Anda. Cloud Run tidak memerlukan konfigurasi berbasis file; namun, konfigurasi YAML didukung.

    • Setiap layanan yang Anda deploy ke Cloud Run menggunakan domain run.app di URL untuk mengakses layanan secara publik.

    • Tidak seperti layanan App Engine yang bersifat publik secara default, layanan Cloud Run bersifat pribadi secara default dan mengharuskan Anda mengonfigurasinya untuk akses publik (tidak diautentikasi).

Peran yang diperlukan

Anda dapat memilih untuk membuat akun layanan baru atau menggunakan akun layanan yang dikelola pengguna yang sama di Cloud Run yang Anda gunakan untuk lingkungan standar. Anda atau administrator Anda harus memberikan peran IAM berikut kepada akun deployer dan akun layanan Cloud Build.

Klik untuk melihat peran yang diperlukan untuk akun deployer

Untuk mendapatkan izin yang Anda perlukan untuk membangun dan men-deploy dari sumber, minta administrator untuk memberi Anda peran IAM berikut:

Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build

Cloud Build secara otomatis menggunakan akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk membangun kode sumber dan resource Cloud Run Anda, kecuali jika Anda mengganti perilaku ini. Agar Cloud Build dapat membangun sumber Anda, minta administrator Anda untuk memberikan peran Cloud Run Builder (roles/run.builder) ke akun layanan default Compute Engine di project Anda:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Ganti PROJECT_NUMBER dengan nomor project Google Cloud Anda, dan PROJECT_ID dengan project ID Google Cloud Anda. Untuk mengetahui petunjuk mendetail tentang cara menemukan project ID dan nomor project Anda, lihat Membuat dan mengelola project.

Pemberian peran builder Cloud Run ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk berlaku.

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.

Menggunakan konfigurasi lokal file app.yaml

Deploy konfigurasi App Engine lokal ke Cloud Run menggunakan konsol Google Cloud atau gcloud CLI.

Konsol

  1. Di konsol Google Cloud , buka halaman App Engine.

    Buka App Engine

  2. Di menu navigasi, klik Migration hub untuk men-deploy aplikasi App Engine ke Cloud Run. Hub migrasi juga memungkinkan Anda memeriksa perkiraan penghematan di Cloud Run untuk perkiraan dan rekomendasi biaya.

  3. Pilih layanan yang ingin Anda migrasikan, lalu klik Periksa kompatibilitas.

  4. Pilih Layanan dan Versi Anda untuk melihat hasil kompatibilitas. Hub migrasi menjalankan pemeriksa kompatibilitas untuk mengidentifikasi fitur yang tidak kompatibel.

  5. Tinjau hasilnya untuk memverifikasi bahwa aplikasi Anda sepenuhnya kompatibel dengan Cloud Run, lalu klik Lanjutkan untuk melanjutkan ke bagian Tinjau & Deploy.

  6. Salin perintah di bagian Deploy melalui gcloud, lalu eksekusi di dalam direktori project Anda.

  7. Klik View deployed versions untuk melihat layanan App Engine Anda yang di-deploy di Cloud Run.

gcloud

Untuk men-deploy layanan Cloud Run menggunakan file app.yaml lokal dari konfigurasi App Engine yang ada, ikuti langkah-langkah berikut:

  1. Di terminal, ubah ke direktori sumber tempat file app.yaml berada.

  2. Jalankan perintah berikut untuk men-deploy layanan Anda ke Cloud Run:

    gcloud beta app migrate-to-run
    

    Perintah ini menghasilkan konfigurasi file service.yaml untuk Cloud Run dan menyimpannya secara lokal ke direktori yang sama dengan file app.yaml Anda. Untuk informasi selengkapnya, lihat: gcloud beta app migrate-to-run.

    • Saat diminta Proceed with the deployment?, masukkan Y untuk membangun image container dari kode sumber Anda, lalu men-deploy layanan ke Cloud Run.
  3. Buka layanan Cloud Run yang telah di-deploy dengan membuka URL layanan di browser web.

    Opsional:

    • Jika file app.yaml Anda berada di direktori lain, tentukan jalur file tersebut menggunakan flag --appyaml:

      gcloud beta app migrate-to-run --appyaml=PATH
      

      Ganti PATH dengan jalur ke file app.yaml Anda.

    • Untuk membuat dan mengekspor konfigurasi service.yaml Cloud Run tanpa men-deploy layanan, gunakan flag --export-only:

      gcloud beta app migrate-to-run --export-only=EXPORT_PATH
      

      Ganti EXPORT_PATH dengan direktori atau jalur tempat Anda ingin menyimpan file service.yaml.

Menggunakan image yang dibuat sebelumnya

Untuk men-deploy menggunakan image container yang sebelumnya dibuat dari versi App Engine yang di-deploy, bukan membangun ulang image container dari file app.yaml lokal, ikuti langkah-langkah berikut:

Anda tidak memerlukan kode sumber aplikasi untuk deployment ini.

  1. Jalankan perintah berikut untuk men-deploy layanan Anda ke Cloud Run. Perintah ini menggunakan image container deployment App Engine yang aktif dan tidak merekam perubahan terbaru dari file app.yaml lokal Anda, yang dapat menyebabkan deployment yang sudah tidak berlaku:

    gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --from-image
    

    Ganti kode berikut:

    • SERVICE: nama layanan App Engine Anda.
    • VERSION: ID versi layanan Anda.

    Perintah ini mengambil konfigurasi layanan dan versi yang ditentukan untuk membuat file service.yaml untuk Cloud Run. Untuk mengetahui informasi selengkapnya, lihat gcloud beta app migrate-to-run.

    • Saat diminta dengan Proceed with the deployment?, masukkan Y untuk mengekspor image container App Engine yang ada dan men-deploy layanan ke Cloud Run.
  2. Buka layanan Cloud Run yang telah di-deploy dengan membuka URL layanan di browser web.

    Opsional:

    • Untuk membuat konfigurasi service.yaml Cloud Run tanpa men-deploy layanan, jalankan perintah berikut:

      gcloud beta app migrate-to-run --service=SERVICE \
          --version=VERSION \
          --from-image \
          --export-only=EXPORT_PATH
      

      Ganti EXPORT_PATH dengan direktori atau jalur tempat Anda ingin menyimpan file service.yaml.

Fitur yang Tidak Kompatibel

Perintah migrasi akan gagal jika file app.yaml Anda berisi salah satu konfigurasi yang tidak didukung berikut:
  • Layanan masuk:

    inbound_services:
    - warmup
    

    Solusi: Hapus bagian inbound_services dari file app.yaml Anda. Cloud Run memanaskan instance menggunakan titik entri container, sehingga Anda tidak perlu mengonfigurasi permintaan pemanasan. Jika Anda perlu menjalankan kode inisialisasi sebelum melayani traffic, konfigurasi layanan Anda untuk menjalankannya saat startup, sebelum memproses permintaan atau menggunakan pemeriksaan startup. Anda juga dapat mengonfigurasi instance minimum untuk menjaga instance tetap aktif.

  • Halaman error kustom:

    error_handlers:
     - file: default_error.html
     - error_code: over_quota
     file: over_quota.html
    

    Solusi: Hapus bagian error_handlers dari file app.yaml Anda, dan ikuti salah satu atau kedua strategi berikut:

    • Menerapkan penanganan error langsung dalam kode aplikasi Anda. Tangkap kode error HTTP standar, seperti 404 atau 500, dan sajikan halaman error HTML kustom dari dalam logika aplikasi Anda.
    • Jika Anda menggunakan Cloud Load Balancing dengan Cloud Run, konfigurasi respons error kustom di tingkat load balancer. Dengan begitu, Anda dapat menyajikan halaman error kustom dari Cloud Storage berdasarkan kode respons dari layanan Cloud Run Anda.
  • Layanan paket untuk runtime generasi kedua:

    app_engine_apis: true
    

    Solusi: Hapus setelan app_engine_apis dari file app.yaml Anda, lalu migrasikan ke API Google Cloud atau alternatif pihak ketiga. Untuk mengetahui informasi selengkapnya, lihat Bermigrasi dari layanan paket.

  • Runtime generasi pertama:

    runtime: python27
    

    Solusi: Upgrade aplikasi Anda ke runtime generasi kedua yang didukung. Untuk informasi selengkapnya, lihat Ringkasan Bermigrasi ke runtime generasi kedua.

Langkah berikutnya