Men-deploy Aplikasi Java

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.

Untuk men-deploy aplikasi menggunakan alat build Maven, Anda harus menyiapkan project untuk menggunakan plugin Maven untuk App Engine.

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 ke App Engine, gunakan alat build Maven (direkomendasikan) atau perintah gcloud app deploy dari dalam direktori utama aplikasi Anda.

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

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 elemen module: [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 appengine-web.xml yang sesuai dalam perintah deployment untuk men-deploy beberapa layanan secara bersamaan. Layanan default 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:

  1. Pastikan appengine-maven-plugin telah ditambahkan ke file pom.xml induk Anda.
  2. 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:

    1. Upload file index.xml 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. Tentukan ID versi baru di file appengine-web.xml aplikasi Anda.
    2. Deploy versi baru.
    3. Gunakan konsol Google Cloud untuk memantau status semua indeks Anda:

      Buka halaman Datastore

    4. 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. 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:

[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 berikutnya