Halaman ini menjelaskan cara men-deploy kode backend API dan Extensible Service Proxy (ESP) ke Google Kubernetes Engine, Compute Engine, dan lingkungan fleksibel App Engine.
Meskipun langkah deployment bervariasi bergantung pada platform yang menghosting API Anda, selalu ada langkah untuk memberi ESP nama layanan dan opsi yang mengonfigurasi ESP agar menggunakan konfigurasi layanan Cloud Endpoints yang terakhir di-deploy. Dengan informasi ini, ESP dapat memperoleh konfigurasi Endpoint API, yang memungkinkan ESP melakukan proxy permintaan dan respons sehingga Endpoint dapat mengelola API Anda.
Prasyarat
Sebagai permulaan, halaman ini mengasumsikan bahwa Anda telah:
Mempersiapkan deployment
App Engine
Dengan penambahan langkah konfigurasi kecil (dijelaskan dalam langkah-langkah berikut), men-deploy API agar dikelola oleh Endpoint sama dengan men-deploy aplikasi apa pun ke lingkungan fleksibel App Engine. Ikuti dokumentasi App Engine untuk:
- Mengatur file konfigurasi.
-
Membuat file konfigurasi
app.yaml
- Jika aplikasi Anda didasarkan pada microservice, lihat dokumentasi Men-deploy
beberapa aplikasi layanan untuk mengetahui informasi tentang cara mengonfigurasi file
app.yaml
untuk setiap layanan.
Anda men-deploy API ke App Engine menggunakan
perintah
gcloud app deploy
. Perintah ini secara otomatis membuat image container menggunakan layanan
Container Builder, lalu
men-deploy image tersebut ke lingkungan fleksibel App Engine Anda.
Sebelum melakukan deployment:
- Pemilik project Google Cloud harus membuat aplikasi App Engine.
- Pastikan akun pengguna Anda menyertakan hak istimewa yang diperlukan.
Compute Engine
Agar Endpoint dapat mengelola API, Anda harus menginstal dan mengonfigurasi ESP, serta kode server backend untuk API Anda. Anda harus menginstal Docker di instance VM Compute Engine agar dapat menjalankan image Docker ESP yang tersedia gratis di Container Registry.
Sebelum melakukan deployment:
Berikut adalah uraian secara umum langkah-langkah yang harus Anda lakukan sebelum dapat men-deploy API dan ESP ke Compute Engine. Secara umum, Anda melakukan semua langkah seperti yang biasa dilakukan untuk menjalankan kode server backend di Compute Engine.
- Buat, konfigurasikan, dan mulai instance VM Anda. Lihat dokumentasi Compute Engine.
- Instal Docker Enterprise Edition (EE) atau Docker Community Edition (CE) di instance VM Anda. Lihat Menginstal Docker.
- Membuat container Docker untuk kode server backend. Lihat Dokumentasi Cloud Build.
- Kirim container ke Container Registry atau registry lain.
- Pastikan Anda berhasil:
- Menghubungkan ke instance VM.
- Jalankan image Docker untuk memulai server backend di instance VM. Lihat Referensi berjalan Docker.
- Mengirim permintaan ke API Anda.
GKE
Saat Anda membuat cluster di Konsol Google Cloud, secara default, cakupan OAuth yang diberikan ke akun layanan cluster mencakup cakupan yang diperlukan Endpoint:
- Kontrol Layanan: Diaktifkan
- Pengelolaan Layanan: Hanya Baca
Saat membuat cluster menggunakan perintah
gcloud container clusters create
atau file konfigurasi pihak ketiga, pastikan Anda menentukan cakupan berikut:
"https://www.googleapis.com/auth/servicecontrol"
"https://www.googleapis.com/auth/service.management.readonly"
Untuk mengetahui informasi selengkapnya, lihat Apa yang dimaksud dengan cakupan akses?
Sebelum melakukan deployment:
Dengan menambahkan bagian kecil ke file manifes deployment, Anda dapat menjalankan image Docker ESP di cluster container bersama dengan aplikasi dalam container. Berikut adalah uraian secara umum langkah-langkah yang harus Anda ambil sebelum dapat men-deploy API dengan ESP ke GKE. Secara umum, Anda melakukan semua langkah seperti yang biasa dilakukan untuk menjalankan kode server backend di GKE.
- Deploy aplikasi dalam container ke cluster container. Langkah-langkah
umum sebagaimana dijelaskan dalam
dokumentasi GKE
adalah:
- Kemas aplikasi Anda ke dalam image Docker.
- Upload image ke registry.
- Buat cluster container.
- Deploy aplikasi Anda ke cluster.
- Ekspos aplikasi Anda ke internet.
- Pastikan Anda berhasil:
- Mulai server API Anda.
- Mengirim permintaan ke API Anda.
Men-deploy API dan ESP Anda
App Engine
Untuk men-deploy API dan ESP ke App Engine:
- Dapatkan
service name API Anda. Ini adalah nama yang Anda tentukan dalam kolom
host
pada dokumen OpenAPI Anda. - Edit file
app.yaml
, dan tambahkan bagian bernamaendpoints_api_service
yang berisi nama layanan. Anda dapat menggunakan fileapp.yaml
dari tutorial sebagai model:Java Python Mulai PHP Ruby NodeJS Ganti
ENDPOINTS-SERVICE-NAME
dengan nama layanan API Anda. Contoh:endpoints_api_service: name: example-project-12345.appspot.com rollout_strategy: managed
Opsi
rollout_strategy: managed
mengonfigurasi ESP untuk menggunakan konfigurasi layanan yang terakhir di-deploy. Saat Anda menentukan opsi ini, hingga 5 menit setelah Anda men-deploy konfigurasi layanan baru, ESP akan mendeteksi perubahan tersebut dan mulai menggunakannya secara otomatis. Sebaiknya tentukan opsi ini, bukan ID konfigurasi khusus untuk digunakan ESP.Jika aplikasi Anda didasarkan pada microservice, Anda harus menyertakan bagian
endpoints_api_service
di setiap fileapp.yaml
. - Simpan file
app.yaml
(atau beberapa file). - Deploy kode backend dan ESP Anda ke App Engine:
gcloud app deploy
Karena Anda menambahkan bagian endpoints_api_service
ke
file app.yaml
, perintah gcloud app deploy
men-deploy
dan mengonfigurasi ESP dalam container terpisah dengan
lingkungan fleksibel App Engine Anda. Semua traffic permintaan diarahkan melalui ESP, dan menjadi proxy permintaan serta respons ke dan dari penampung yang menjalankan kode server backend Anda.
Jika Anda perlu mengonfigurasi ESP untuk menggunakan ID konfigurasi tertentu:
- Di bagian
endpoints_api_service
fileapp.yaml
Anda, tambahkan kolomconfig_id
dan tetapkan ke ID konfigurasi tertentu. - Hapus
rollout_strategy: managed
atau tetapkanrollout_strategy
kefixed
. Opsifixed
mengonfigurasi ESP agar menggunakan konfigurasi layanan yang Anda tentukan dalamconfig_id
. - Deploy ulang API dan ESP Anda:
gcloud app deploy
Sebaiknya jangan mengonfigurasi ESP untuk menggunakan ID konfigurasi tertentu dalam waktu lama karena jika men-deploy konfigurasi layanan yang diperbarui, Anda harus memulai ulang ESP untuk menggunakan konfigurasi baru.
Untuk menghapus ID konfigurasi tertentu:
- Hapus opsi
config_id
dari fileapp.yaml
. - Tambahkan opsi
rollout_strategy: managed
. - Berikan perintah
gcloud app deploy
Saat Anda menggunakan opsi rollout_strategy: managed
, jangan sertakan
config_id: YOUR_SERVICE_CONFIG_ID
dalam
file app.yaml
. Jika Anda melakukannya, gcloud app deploy
akan gagal dengan error berikut:
config_id is forbidden when rollout_strategy is set to "managed".
Saat Anda men-deploy API ke lingkungan fleksibel App Engine untuk pertama kalinya, mungkin ada penundaan saat virtual machine (VM) dan infrastruktur lainnya disiapkan. Untuk informasi tambahan, lihat Memastikan deployment yang berhasil dalam dokumentasi App Engine.
Compute Engine
Untuk men-deploy API dengan ESP ke Compute Engine dengan Docker:
- Hubungkan ke instance VM Anda. Ganti
INSTANCE_NAME
dengan nama instance VM Anda.gcloud compute ssh INSTANCE_NAME
- Buat jaringan penampung Anda sendiri yang disebut
esp_net
:sudo docker network create --driver bridge esp_net
- Jalankan instance image kode server backend Anda dan hubungkan ke jaringan container
esp_net
:sudo docker run \ --detach \ --name=YOUR_API_CONTAINER_NAME \ --net=esp_net \ gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1.0
- Ganti
YOUR_API_CONTAINER_NAME
dengan nama penampung Anda. - Ganti
YOUR_PROJECT_ID
dengan project ID Google Cloud yang Anda gunakan saat mengirim image. - Ganti
YOUR_IMAGE
dengan nama image Anda.
- Ganti
- Dapatkan nama
layanan API Anda. Ini adalah nama yang Anda tentukan dalam kolom
host
pada dokumen OpenAPI Anda. - Jalankan instance image Docker ESP:
sudo docker run \ --name=esp \ --detach \ --publish=80:8080 \ --net=esp_net \ gcr.io/endpoints-release/endpoints-runtime:1 \ --service=SERVICE_NAME \ --rollout_strategy=managed \ --backend=YOUR_API_CONTAINER_NAME:8080
- Ganti
SERVICE_NAME
dengan nama layanan Anda. - Ganti
YOUR_API_CONTAINER_NAME
dengan nama penampung API Anda.
Opsi
--rollout_strategy=managed
mengonfigurasi ESP untuk menggunakan konfigurasi layanan yang terakhir di-deploy. Saat Anda menentukan opsi ini, hingga 5 menit setelah Anda men-deploy konfigurasi layanan baru, ESP akan mendeteksi perubahan tersebut dan mulai menggunakannya secara otomatis. Sebaiknya tentukan opsi ini, bukan ID konfigurasi khusus untuk digunakan ESP. - Ganti
Jika Anda perlu mengonfigurasi ESP untuk menggunakan ID konfigurasi tertentu:
- Sertakan opsi
--version
dan tetapkan ke ID konfigurasi tertentu. - Hapus opsi
--rollout_strategy=managed
atau tetapkan--rollout_strategy
kefixed
. Opsifixed
mengonfigurasi ESP agar menggunakan konfigurasi layanan yang Anda tentukan dalam--version
. - Berikan perintah
docker run
lagi.
Jika Anda menentukan opsi --rollout_strategy=managed
dan
--version
, ESP akan memulai dengan konfigurasi
yang Anda tentukan di --version
, lalu berjalan dalam mode terkelola
dan mendapatkan konfigurasi terbaru.
Sebaiknya jangan mengonfigurasi ESP untuk menggunakan ID konfigurasi tertentu dalam waktu lama karena jika men-deploy konfigurasi layanan yang diperbarui, Anda harus memulai ulang ESP untuk menggunakan konfigurasi baru.
Untuk menghapus ID konfigurasi tertentu:
- Pada tanda ESP untuk
docker run
, hapus opsi--version
. - Tambahkan opsi
--rollout_strategy=managed
. - Berikan perintah
docker run
untuk memulai ulang ESP.
Lihat Opsi startup ESP untuk mengetahui daftar lengkap opsi yang dapat Anda tentukan saat memulai ESP.
GKE
Untuk men-deploy ESP ke GKE:
- Dapatkan nama layanan API Anda (nama yang Anda tentukan di kolom
host
pada dokumen OpenAPI). - Buka file manifes Deployment Anda (disebut sebagai file
deployment.yaml
) dan tambahkan kode berikut ke bagian container:containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:1 args: [ "--http_port=8081", "--backend=127.0.0.1:8080", "--service=SERVICE_NAME", "--rollout_strategy=managed" ]
Ganti
SERVICE_NAME
dengan nama layanan API Anda.Opsi
--rollout_strategy=managed"
mengonfigurasi ESP untuk menggunakan konfigurasi layanan yang terakhir di-deploy. Saat Anda menentukan opsi ini, hingga 5 menit setelah Anda men-deploy konfigurasi layanan baru, ESP akan mendeteksi perubahan tersebut dan mulai menggunakannya secara otomatis. Sebaiknya tentukan opsi ini, bukan ID konfigurasi khusus untuk digunakan ESP. - Mulai layanan Kubernetes menggunakan perintah kubectl create:
kubectl create -f deployment.yaml
Jika Anda perlu mengonfigurasi ESP untuk menggunakan ID konfigurasi tertentu:
- Dalam file manifes Deployment Anda, tambahkan opsi
--version
dan tetapkan ke ID konfigurasi tertentu. - Hapus
--rollout_strategy=managed
atau tetapkan--rollout_strategy
kefixed
. Opsifixed
mengonfigurasi ESP agar menggunakan konfigurasi layanan yang Anda tentukan di--version
. - Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Jika Anda menentukan opsi --rollout_strategy=managed
dan
--version
, ESP akan memulai dengan konfigurasi
yang Anda tentukan di --version
, lalu berjalan dalam mode terkelola dan
mendapatkan konfigurasi terbaru.
Sebaiknya jangan mengonfigurasi ESP untuk menggunakan ID konfigurasi tertentu dalam waktu lama karena jika men-deploy konfigurasi layanan yang diperbarui, Anda harus memulai ulang ESP untuk menggunakan konfigurasi baru.
Untuk menghapus ID konfigurasi tertentu:
- Dalam file manifes Deployment, hapus opsi
--version
. - Tambahkan
--rollout_strategy=managed
. - Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Lihat Opsi startup ESP untuk mengetahui daftar lengkap opsi yang dapat Anda tentukan saat memulai ESP.
Aktivitas API pelacakan
Setelah men-deploy ESP dan backend API, Anda dapat menggunakan alat seperti
curl
atau Postman untuk mengirim permintaan ke API Anda. Jika Anda tidak mendapatkan respons yang berhasil, lihat Memecahkan masalah error respons.
Setelah mengirim beberapa permintaan, Anda dapat:
Lihat grafik aktivitas untuk API Anda di Endpoint > Layanan.
Mungkin perlu waktu beberapa saat agar permintaan ditampilkan dalam grafik.Lihat log permintaan untuk API Anda di halaman Cloud Logging.
Langkah selanjutnya
- Memecahkan masalah deployment lingkungan fleksibel App Engine.
- Memecahkan masalah Endpoint di Compute Engine.
- Memecahkan masalah Endpoint di Google Kubernetes Engine.