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 Java 8 secara default, sehingga Anda perlu memberikan izin sebelum dapat men-deploy aplikasi.
Menyiapkan alat build Maven (direkomendasikan)
Untuk men-deploy aplikasi menggunakan alat build Maven, Anda harus menyiapkan project untuk menggunakan plugin Maven untuk App Engine.
- Menginstal gcloud CLI, komponen
app-engine-java
, dan login. - Mengompilasi dan mem-build project Anda menggunakan plugin Maven
Menginstal gcloud CLI
Untuk men-deploy aplikasi dengan gcloud CLI, Anda harus mendownload, menginstal, dan melakukan inisialisasi gcloud CLI.
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 ke App Engine, gunakan
alat build Maven (direkomendasikan) atau
perintah gcloud app deploy
dari dalam direktori utama aplikasi
Anda.
Menggunakan Maven (direkomendasikan)
Untuk men-deploy aplikasi dengan alat build Maven, jalankan perintah berikut dari
direktori level teratas project, tempat file pom.xml
berada:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ganti PROJECT_ID dengan ID project Google Cloud Anda. Jika
file pom.xml
sudah
menentukan
project ID, Anda tidak perlu menyertakan properti -Dapp.deploy.projectId
dalam
perintah yang dijalankan singkat ini.
Menggunakan command line gcloud
gcloud app deploy [CONFIGURATION_FILES]
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 kustom. Jika Anda tidak menentukan ID versi, App Engine akan membuatkannya.--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 ID project Google Cloud alternatif dengan yang Anda inisialisasi sebagai default di gcloud CLI.
Untuk informasi selengkapnya, lihat referensi gcloud app deploy
atau jalankan gcloud help
dari command line.
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 seperti123-dot-my-service.[REGION_ID].r.appspot.com
, yang dapat ditafsirkan
dengan dua cara:
- Jika versi
123
ada, permintaan akan dirutekan ke versi123
layananmy-service
. - Jika versi
123
tidak ada, permintaan akan dirutekan ke ID instance123
tempat versi layananmy-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.
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
appengine-web.xml
versi yang sesuai. Untuk menentukan ID layanan, Anda menyertakan definisi elemenmodule: [YOUR_SERVICE_ID]
di setiap file konfigurasi. Secara default, mengecualikan definisi elemen ini dari file konfigurasi Anda akan men-deploy versi tersebut ke layanandefault
.Anda harus menentukan semua file konfigurasi
appengine-web.xml
yang sesuai dalam perintah deployment untuk men-deploy beberapa layanan secara bersamaan. Layanandefault
harus dicantumkan terlebih dahulu.
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 appengine-web.xml
layanan.
Menggunakan alat build Maven
Jika direktori utama project hanya berisi layanan Anda, Anda dapat men-deploy semua layanan tersebut dengan satu perintah Maven.
Perintah deployment Maven melakukan iterasi di setiap layanan project Anda untuk menemukan file konfigurasinya, lalu men-deploy setiap layanan.
Untuk men-deploy beberapa layanan menggunakan plugin Maven:
- Pastikan appengine-maven-plugin telah ditambahkan ke file
pom.xml
induk Anda. Jalankan perintah berikut:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ganti PROJECT_ID dengan ID project Google Cloud Anda. Jika file
pom.xml
sudah menentukan project ID, Anda tidak perlu menyertakan properti-Dapp.deploy.projectId
dalam perintah yang dijalankan singkat ini.
Menggunakan gcloud
gcloud app deploy [CONFIGURATION_FILES]
Ganti [CONFIGURATION_FILES]
dengan jalur ke satu atau beberapa file konfigurasi.
Gunakan satu spasi kosong untuk memisahkan nama jalur.
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 datastore-indexes.xml
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.xml
ke Datastore sebelum men-deploy versi Anda:Upload file
index.xml
ke Datastore: Untuk informasi selengkapnya, lihat referensigcloud datastore indexes create index.yaml
gcloud datastore
.Gunakan konsol Google Cloud untuk memantau status semua indeks Anda:
Setelah semua indeks Anda dibuat, deploy versi baru ke App Engine.
Buat indeks Anda sebelum memigrasikan atau membagi traffic ke versi Anda:
-
Tentukan ID versi baru di file
appengine-web.xml
aplikasi Anda. - Deploy versi baru.
- Gunakan konsol Google Cloud untuk memantau status semua indeks Anda:
- Setelah semua indeks Anda dibuat, gunakan Konsol Google Cloud untuk memigrasikan atau membagi traffic ke versi Anda:
-
Tentukan ID versi baru di file
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 perintahgcloud 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 layanandefault
, 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.
You do not have permission to modify this app (403)
- Hal ini dapat terjadi jika akun yang diautentikasi tidak memiliki
izin untuk men-deploy ke ID aplikasi yang ditentukan dalam perintah Anda
atau dalam
appengine-web.xml
. Pastikan ID aplikasi Anda akurat dan cocok dengan nilai project ID Google Cloud Console Anda. Berikutnya, periksa izin proyek di konsol dan verifikasi apakah akun Anda terdaftar dengan kredensial tingkat izin yang diperlukan untuk men-deploy aplikasi. [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:
Akun layanan App Engine default tidak ada dalam project Anda. Jika akun Anda dihapus sebelum 30 hari berlalu sejak penghapusannya, Anda dapat memulihkannya.
Project Anda berada di organisasi yang menerapkan kebijakan
constraints/gcp.resourceLocations
, dan organisasi tersebut tidak mengizinkan pembuatan resource di region yang sama tempat App Engine dibuat. Anda harus mengganti kebijakanconstraints/gcp.resourceLocations
yang diterapkan untuk project Anda, dan mengizinkan lokasi multi-region di region yang sama tempat aplikasi App Engine dibuat.
[13] An internal error occurred
Error ini dapat terjadi jika file konfigurasi
app.yaml
App Engine berisiname
resource yang tidak valid pada kuncivpc_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 berikutnya
- Gunakan layanan untuk membangun aplikasi besar.
- Pisahkan traffic atau migrasikan traffic untuk merutekan traffic ke versi yang Anda deploy.
- Tinjau argumen dan
flag command line
gcloud app deploy
.