Men-deploy Aplikasi Python

Deploy aplikasi Anda untuk diupload dan menjalankannya di App Engine. Saat men-deploy aplikasi, Anda membuat beberapa versi aplikasi tersebut dan layanan yang sesuai di App Engine. Anda dapat men-deploy seluruh aplikasi, termasuk semua kode sumber dan file konfigurasi, atau Anda dapat men-deploy dan mengupdate versi satu per satu atau file konfigurasi.

Untuk men-deploy aplikasi secara terprogram, gunakan Admin API.

Sebelum memulai

Sebelum Anda dapat men-deploy aplikasi Anda:

  • Pemilik project Google Cloud harus membuat aplikasi App Engine.

  • Pastikan bahwa akun pengguna Anda menyertakan hak istimewa yang diperlukan.

  • Beri Cloud Build izin untuk men-deploy aplikasi di project Anda. Saat Anda men-deploy aplikasi, App Engine akan menggunakan Cloud Build untuk membangun aplikasi ke dalam container dan men-deploy container ke runtime di region aplikasi. Cloud Build tidak memiliki izin untuk men-deploy aplikasi Python 2 secara default, sehingga Anda perlu memberikan izin sebelum dapat men-deploy aplikasi.

Menginstal gcloud CLI

Untuk men-deploy aplikasi dengan gcloud CLI, Anda harus mendownload, menginstal, dan melakukan inisialisasi gcloud CLI.

Mendownload SDK

Jika Anda sudah menginstal gcloud CLI dan ingin mengonfigurasinya untuk menggunakan ID project Google Cloud selain yang Anda inisialisasi, lihat Mengelola Konfigurasi gcloud CLI.

Menggunakan proxy

Jika Anda menjalankan perintah deployment dari sistem yang menggunakan proxy HTTP atau HTTPS, Anda harus mengonfigurasi alat tersebut agar dapat berkomunikasi melalui proxy.

Jalankan perintah berikut untuk mengonfigurasi gcloud CLI:

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

Anda juga dapat menyetel username dan password untuk proxy. Untuk mengetahui informasi selengkapnya, lihat konfigurasi gcloud.

Men-deploy aplikasi

Untuk men-deploy aplikasi Anda ke App Engine, gunakan gcloud app deploy perintah dari tempat file konfigurasi berada, misalnya app.yaml.

Memilih ID versi yang unik

Untuk instance yang diskalakan secara manual, ID versi Anda harus dimulai dengan huruf untuk membedakannya dari ID instance numerik. Hal ini memastikan bahwa permintaan dirutekan ke tujuan yang benar dan menghindari ambiguitas dengan pola URL seperti 123-dot-my-service.[REGION_ID].r.appspot.com, yang dapat ditafsirkan dengan dua cara:

  • Jika versi 123 ada, permintaan akan dirutekan ke versi 123 layanan my-service.
  • Jika versi 123 tidak ada, permintaan akan dirutekan ke ID instance 123 tempat versi layanan my-service dijalankan.

Anda dapat memberi nama versi sesuai keinginan untuk instance yang dikonfigurasi untuk penskalaan otomatis atau penskalaan dasar karena penargetan instance tersebut tidak didukung.

gcloud app deploy [CONFIGURATION_FILES]

Secara default, perintah tersebut men-deploy file konfigurasi app.yaml dari direktori saat ini. Jika Anda menjalankan perintah dari direktori yang tidak memuat app.yaml aplikasi Anda, atau jika Anda ingin men-deploy beberapa aplikasi, ganti [CONFIGURATION_FILES] dengan jalur ke satu atau beberapa file konfigurasi. Gunakan satu spasi kosong untuk memisahkan nama jalur.

Flag opsional:

  • --version: Menentukan ID versi khusus. Secara default, App Engine membuat ID versi.
  • --no-promote: Men-deploy aplikasi tanpa otomatis merutekan semua traffic ke versi tersebut. Secara default, setiap versi yang Anda deploy akan otomatis dikonfigurasi untuk menerima 100% traffic.
  • --project: Menentukan project ID Google Cloud alternatif dengan yang Anda inisialisasi sebagai default di gcloud CLI.

Untuk mengetahui informasi selengkapnya, lihat referensi gcloud app deploy atau jalankan gcloud help dari command line.

Contoh:

gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]

Jika Anda men-deploy versi yang menentukan ID versi yang sama dengan versi yang sudah ada di App Engine, file yang Anda deploy akan menimpa versi yang ada. Hal ini dapat menjadi masalah jika versi menayangkan traffic karena traffic ke aplikasi Anda mungkin terganggu. Anda dapat menghindari gangguan traffic jika Anda men-deploy versi baru dengan ID versi yang berbeda, lalu memindahkan traffic ke versi tersebut.

Men-deploy beberapa aplikasi layanan

Jika aplikasi Anda diperhitungkan dalam beberapa layanan, Anda dapat men-deploy dan mengupdate layanan yang ditargetkan satu per satu atau semua layanan secara bersamaan. Men-deploy update ke layanan dapat mencakup mengupdate setiap file konfigurasi atau mengupdate kode sumber dalam versi yang sesuai.

Misalnya, Anda dapat men-deploy dan membuat dua versi di App Engine, dengan setiap versi berjalan di layanannya sendiri. Versi pertama berfungsi sebagai layanan frontend dan versi lainnya sebagai backend aplikasi Anda. Selanjutnya, Anda dapat men-deploy setiap file konfigurasi untuk memperbarui setelan layanan saja. Anda juga dapat memilih untuk men-deploy versi baru ke layanan guna memperbarui kode sumber frontend, backend, atau keduanya secara bersamaan.

Persyaratan untuk beberapa layanan

Gunakan perintah deployment yang sama untuk men-deploy dan mengupdate beberapa layanan aplikasi Anda dengan persyaratan berikut:

  • Pertama-tama, Anda harus men-deploy versi aplikasi ke layanan default sebelum dapat membuat dan men-deploy layanan berikutnya.

  • Anda harus menentukan ID layanan di file konfigurasi app.yaml versi yang sesuai. Untuk menentukan ID layanan, Anda menyertakan definisi elemen service: [YOUR_SERVICE_ID] di setiap file konfigurasi. Secara default, mengecualikan definisi elemen ini dari file konfigurasi Anda akan men-deploy versi tersebut ke layanan default.

  • Anda harus menentukan semua file konfigurasi app.yaml yang sesuai dalam perintah deployment untuk men-deploy beberapa layanan secara bersamaan.

Untuk men-deploy beberapa layanan

Dari direktori utama aplikasi tempat file konfigurasi berada, Anda dapat menjalankan perintah deployment dan menentukan jalur relatif serta nama file untuk setiap file app.yaml layanan.

gcloud app deploy [CONFIGURATION_FILES]

Dengan [CONFIGURATION_FILES] adalah satu atau beberapa jalur dan nama file konfigurasi yang dipisahkan oleh satu spasi kosong.

Contoh
gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml

Anda akan menerima verifikasi melalui command line setiap kali suatu layanan berhasil di-deploy.

Melihat log build

Cloud Build melakukan streaming log build dan deploy yang dapat dilihat di bagian histori Cloud Build di konsol Google Cloud. Untuk melihat build dalam region aplikasi, gunakan menu drop-down Region di bagian atas halaman untuk memilih region yang ingin Anda filter.

Mengupdate indeks

Untuk membuat atau mengupdate indeks aplikasi Anda gunakan, upload file konfigurasi index.yaml ke Datastore. Indeks yang belum ada akan dibuat setelah file konfigurasi tersebut diupload.

Datastore perlu waktu untuk membuat semua indeks. Oleh karena itu, indeks tersebut tidak akan langsung tersedia untuk App Engine. Jika aplikasi Anda sudah dikonfigurasi untuk menerima traffic, pengecualian dapat terjadi untuk kueri yang memerlukan indeks yang masih dalam proses dibuat.

Untuk menghindari pengecualian, Anda harus memberikan waktu agar semua indeks dapat dibuat, misalnya:

  • Upload file konfigurasi index.yaml ke Datastore sebelum men-deploy versi Anda:

    1. Upload file index.yaml ke Datastore:

      gcloud datastore indexes create index.yaml

      Untuk informasi selengkapnya, lihat referensi gcloud datastore.

    2. Gunakan konsol Google Cloud untuk memantau status semua indeks Anda:

      Buka halaman Datastore

    3. Setelah semua indeks Anda dibuat, deploy versi baru ke App Engine.

  • Buat indeks Anda sebelum memigrasikan atau membagi traffic ke versi Anda:

    1. Deploy versi baru tanpa merutekan traffic ke versi tersebut: Anda harus menentukan file app.yaml dan index.yaml dan juga menyertakan flag --no-promote agar tidak ada traffic yang dirutekan ke versi:
      gcloud app deploy app.yaml index.yaml --no-promote
    2. Gunakan konsol Google Cloud untuk memantau status semua indeks Anda:

      Buka halaman Datastore

    3. Setelah semua indeks Anda dibuat, gunakan Konsol Google Cloud untuk memigrasikan atau membagi traffic ke versi Anda:

      Buka halaman Versions

Untuk mengetahui informasi selengkapnya tentang indeks, lihat Mengonfigurasi Indeks Datastore.

Pemecahan masalah

Berikut adalah pesan error umum yang mungkin Anda lihat:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Jika project Google Cloud tidak menyertakan aplikasi App Engine yang diperlukan , perintah gcloud app deploy bisa gagal saat mencoba menjalankan perintah gcloud app create. Hanya akun dengan peran Pemilik yang memiliki izin yang diperlukan untuk membuat aplikasi App Engine.
Command not found
Lihat Menggunakan server pengembangan lokal untuk mengetahui petunjuk tentang cara menyiapkan alat server pengembangan lokal.
Import Error
Jika Anda menginstal gcloud CLI dan App Engine SDK yang asli, entri ke JALUR Anda mungkin saling bertentangan dan menyebabkan error impor. Jika Anda menerima error saat menjalankan perintah gcloud CLI, ikuti petunjuk untuk menjalankan server pengembangan lokal.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Sebelum dapat men-deploy dan membuat beberapa layanan aplikasi, Anda harus men-deploy dan membuat layanan default terlebih dahulu. Untuk mengetahui detail cara men-deploy versi ke layanan default, lihat Men-deploy beberapa aplikasi layanan.
Too Many Versions (403)
App Engine memiliki batas jumlah versi yang di-deploy untuk aplikasi Anda. Batasan ini berbeda untuk aplikasi gratis dan aplikasi yang di-deploy. Anda dapat menggunakan konsol Google Cloud untuk menghapus versi yang lebih lama, lalu mengupload kode terbaru.
[13] An internal error occurred while creating a Cloud Storage bucket.

App Engine membuat bucket multi-regional Cloud Storage default untuk Anda, pada region yang sama tempat aplikasi Anda dibuat. Bucket ini diperlukan untuk menyimpan konten aplikasi Anda. Error ini ditampilkan jika bucket ini tidak dapat dibuat, dalam skenario berikut:

[13] An internal error occurred

Error ini dapat terjadi jika file konfigurasi app.yaml App Engine berisi name resource yang tidak valid pada kunci vpc_access_connector. Pastikan kolomname berisi project dan region yang benar tempat konektor Akses VPC Serverless dibuat.

Jika masalah berlanjut setelah memastikan konfigurasi app.yaml Anda valid, gunakan Google Cloud SDK untuk men-deploy ulang layanan Anda, menambahkan flag--verbosity=debug, dan hubungi Dukungan Cloud dengan memberikan output perintah.

Error deployment lainnya

Jika deployment gagal, pastikan Cloud Build API diaktifkan di project Anda. App Engine mengaktifkan API ini secara otomatis saat pertama kali Anda men-deploy aplikasi, namun, jika seseorang telah menonaktifkan API tersebut, deployment akan gagal.

Langkah selanjutnya