Anda dapat menerapkan aplikasi dengan mengunggah kode atau image ke Serverless Application Engine (SAE). SAE mengelola sumber daya komputasi yang mendasarinya untuk Anda. Dengan beberapa konfigurasi sederhana, Anda dapat mengaktifkan skalabilitas otomatis berdasarkan traffic dan menerapkan aplikasi di beberapa zona ketersediaan.
Ikhtisar solusi
Anda akan menerapkan serangkaian aplikasi layanan mikro untuk mengimplementasikan registrasi dan penemuan layanan, memanggil metode antarlayanan, serta mengakses aplikasi dari internet. Arsitektur aplikasi contoh adalah sebagai berikut:
Meskipun tutorial ini menggunakan aplikasi layanan mikro Java sebagai contoh, SAE tidak terbatas pada bahasa pemrograman atau arsitektur tertentu. SAE mendukung berbagai kasus penggunaan, seperti situs web statis, aplikasi dengan layanan front-end dan back-end terpisah, aplikasi monolitik, dan aplikasi layanan mikro.
Dalam tutorial ini, Anda akan:
Menyebarkan aplikasi: Terapkan aplikasi provider dan consumer menggunakan contoh image. Gunakan Nacos bawaan SAE untuk mengimplementasikan registrasi dan penemuan layanan, sehingga aplikasi consumer dapat memanggil layanan dari aplikasi provider.
Mengakses aplikasi dari internet: Konfigurasikan titik akhir publik untuk aplikasi consumer dan akses aplikasi tersebut.
Prasyarat
Prosedur
SAE mendukung beberapa metode, termasuk Konsol dan tool saectl (kompatibel dengan kubectl). Pilih metode yang sudah Anda kuasai untuk menyelesaikan tutorial ini.
Konsol
1. Terapkan aplikasi
Terapkan aplikasi provider: Masuk ke Konsol SAE. Di panel navigasi sebelah kiri, pilih . Di bilah navigasi atas, pilih wilayah untuk aplikasi Anda. Tutorial ini menggunakan China (Hangzhou) sebagai contoh. Klik Create Application. Konfigurasikan parameter berikut dan biarkan sisanya pada nilai default. Klik Create Application Now untuk melewati Advanced Settings.
Jika tidak ada di panel navigasi, pilih .
Jika diminta memilih edisi aplikasi, pilih Standard Edition. Lightweight Edition dan Professional Edition saat ini sedang dalam pengujian beta hanya berdasarkan undangan. Perbedaan antar edisi tersebut tidak memengaruhi tutorial ini.
Masukkan Application Name kustom, misalnya
provider.Atur Namespace Type menjadi
System-created. Ini akan membuat aplikasi di namespace default wilayah saat ini dan secara otomatis menyediakan resource jaringan yang diperlukan, seperti VPC, vSwitch, dan security group.Atur Deployment Method menjadi
Deploy Using Image. Klik Set Image. Di tab Demo Image, temukan Microservice Application - Provider, atur Image Version menjadimicroservice-java-provider-v1.0, lalu klik OK.Di bagian Capacity Settings, sesuaikan Instance Specification dan Number of Instances. Pengaturan ini menentukan jumlah instans awal aplikasi dan sumber daya komputasi yang dialokasikan untuk setiap instans.
Terapkan aplikasi consumer: Untuk menerapkan aplikasi consumer, ulangi langkah-langkah sebelumnya dan sesuaikan parameter berikut.
Masukkan Application Name kustom, misalnya
consumer.Saat Anda Set Image, temukan Microservice Application - Consumer dan atur Image Version menjadi
microservice-java-consumer-v1.0.
Periksa hasil penerapan: Tunggu sekitar satu menit hingga aplikasi selesai diterapkan.
Anda dapat melihat aplikasi yang telah dibuat di halaman Application List. Klik salah satu aplikasi untuk membuka halaman detailnya.
Di panel navigasi sebelah kiri, pilih Basic Information. Di tab Instance List, Anda dapat melihat instans aplikasi yang telah dibuat.
2. Aktifkan akses publik
Untuk mengakses aplikasi consumer dari internet, sambungkan instans CLB yang menghadap internet ke aplikasi tersebut.
Sambungkan instans CLB yang menghadap internet ke aplikasi consumer: Buka halaman detail aplikasi consumer. Di tab Application Information, pilih CLB-based Access di bagian Application Access Settings. Klik Add internet-facing CLB, konfigurasikan parameter berikut, lalu klik OK.
Untuk CLB Instance, pilih Create CLB Instance.
Di tab HTTP Protocol, atur HTTP Port menjadi
80dan container port menjadi18082.
Verifikasi hasilnya: SAE membuat instans CLB dan menyambungkannya ke aplikasi. Setelah instans dibuat, konsol akan menampilkan public endpoint aplikasi.
Buka
http://<public_endpoint>/consumer-echo/hellodi browser Anda, ganti<public_endpoint>dengan nilai aktualnya. Hal ini memverifikasi bahwa Anda dapat mengakses aplikasi dari internet.Di halaman , Anda dapat melihat topologi pemanggilan aplikasi consumer terhadap aplikasi provider.
3. Bersihkan resource
Setelah menyelesaikan tutorial ini, kami menyarankan agar Anda membersihkan resource terkait untuk menghindari biaya tambahan.
Hapus aplikasi: Buka halaman detail aplikasi provider dan consumer. Pilih dan ikuti petunjuk di layar untuk menghapus aplikasi.
Instans CLB yang dibuat oleh SAE akan secara otomatis dilepas saat Anda menghapus aplikasi.
(Opsional) Hapus resource jaringan: Selama penerapan, SAE secara otomatis membuat VPC, vSwitch, dan security group.
Lihat VPC: Di panel navigasi sebelah kiri, pilih . Klik default. Di halaman Basic Information, lihat VPC dan klik tautannya untuk membuka halaman detail VPC.
Lihat vSwitch dan security group: Di tab Resource Management VPC, klik tautan untuk membuka halaman detail masing-masing resource.
Hapus resource tersebut di halaman detail masing-masing.
saectl tool
1. Instal dan konfigurasi saectl
2. Terapkan aplikasi
Buat file konfigurasi resource: Buat file-file berikut dalam direktori yang sama. Catatan: Ganti
image: ...cn-hangzhou...dalam file konfigurasi dengan wilayah penerapan aplikasi Anda.deployment-provider.yamlmengonfigurasi aplikasi provider:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Pilih edisi aplikasi. 'std' menunjukkan Standard Edition. Edisi Lightweight dan Professional sedang dalam pengujian beta hanya berdasarkan undangan. Pilihan ini tidak memengaruhi tutorial. name: provider # Nama aplikasi yang dapat dikustomisasi. namespace: default # Pilih namespace default yang dibuat sistem, yang secara otomatis membuat dan mengaitkan resource jaringan seperti VPC, vSwitch, dan security group. spec: replicas: 2 # Jumlah instans aplikasi. selector: matchLabels: sae.aliyun.com/app-name: provider # Harus sama dengan nama aplikasi yang ditentukan di metadata. template: metadata: labels: sae.aliyun.com/app-name: provider # Harus sama dengan nama aplikasi yang ditentukan di metadata. spec: containers: - name: main # Kami menyarankan Anda memberi nama kontainer 'main' untuk menghindari konflik. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0 # Contoh image untuk aplikasi provider. Ganti cn-hangzhou dengan wilayah penerapan Anda. resources: # Spesifikasi untuk satu instans aplikasi. 'limits' dan 'requests' harus memiliki konfigurasi yang sama. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gideployment-consumer.yamlmengonfigurasi aplikasi consumer:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Pilih edisi aplikasi. 'std' menunjukkan Standard Edition. Edisi Lightweight dan Professional sedang dalam pengujian beta hanya berdasarkan undangan. Pilihan ini tidak memengaruhi tutorial. name: consumer # Nama aplikasi yang dapat dikustomisasi. namespace: default # Pilih namespace default yang dibuat sistem, yang secara otomatis membuat dan mengaitkan resource jaringan seperti VPC, vSwitch, dan security group. spec: replicas: 2 # Jumlah instans aplikasi. selector: matchLabels: sae.aliyun.com/app-name: consumer # Harus sama dengan nama aplikasi yang ditentukan di metadata. template: metadata: labels: sae.aliyun.com/app-name: consumer # Harus sama dengan nama aplikasi yang ditentukan di metadata. spec: containers: - name: main # Kami menyarankan Anda memberi nama kontainer 'main' untuk menghindari konflik. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-consumer-v1.0 # Contoh image untuk aplikasi consumer. Ganti cn-hangzhou dengan wilayah penerapan Anda. resources: # Spesifikasi untuk satu instans aplikasi. 'limits' dan 'requests' harus memiliki konfigurasi yang sama. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gi
Terapkan aplikasi: Di direktori tempat file konfigurasi berada, jalankan
saectl apply -f deployment-provider.yaml -f deployment-consumer.yaml.Verifikasi hasilnya:
Lihat aplikasi: Jalankan
saectl get deployments -n default. Bendera-n defaultmelakukan kueri terhadap namespace default. Di output:Status
STATEbernilaiRUNNINGmenunjukkan bahwa aplikasi sedang berjalan. Jika statusnyaPUBLISHING, aplikasi sedang dalam proses penerapan. Tunggu hingga penerapan selesai.Bidang
READYmenampilkann/m, yang merepresentasikanjumlah instans siap / jumlah instans yang diinginkan.
Lihat instans aplikasi: Jalankan
saectl get pods -n default. Di output:Status
STATUSbernilaiRUNNINGmenunjukkan bahwa kontainer di dalam instans berjalan normal. Jika statusnyaContainerCreating, kontainer sedang dalam proses pembuatan. Tunggu hingga selesai.Bidang
READYmenampilkann/m, yang merepresentasikanjumlah kontainer siap / jumlah total kontainer.
3. Aktifkan akses publik
Untuk mengakses aplikasi consumer dari internet, Anda dapat menyambungkan instans CLB yang menghadap internet ke aplikasi tersebut.
Buat file konfigurasi resource: Buat file
svc.yamluntuk mengonfigurasi Service. Service ini mengekspos aplikasi consumer ke internet dengan menyediakan CLB yang menghadap internet:apiVersion: v1 kind: Service metadata: annotations: sae.aliyun.com/loadbalancer-address-type: internet # Jenis alamat. 'internet' untuk publik dan 'intranet' untuk privat. name: internet-consumer # Format tetap: ${jenis-alamat}-${nama-aplikasi} spec: ports: - name: port-80 # Format tetap: port-${port-eksternal} port: 80 protocol: HTTP targetPort: 18082 # Port kontainer aplikasi consumer. selector: sae.aliyun.com/app-name: consumer # Nama aplikasi. type: LoadBalancerTerapkan service: Di direktori tempat file konfigurasi berada, jalankan
saectl apply -f svc.yaml.Verifikasi hasilnya:
Lihat service: Jalankan
saectl get services -n default. Di output:Bidang
EXTERNAL-IPmenampilkan Alamat IP publik aplikasi. Jika menampilkan<pending>, service sedang dalam proses pembuatan. Tunggu hingga selesai.Bidang
PORT(S)menampilkan port akses yang Anda konfigurasikan untuk aplikasi.
Akses aplikasi dari internet: Jalankan
curl http://<public_endpoint>:<access_port>/consumer-echo/hello, ganti<public_endpoint>dan<access_port>dengan nilai aktualnya. Output menunjukkan aplikasi consumer memanggil aplikasi provider untuk menangani permintaan.
4. Bersihkan resource
Setelah menyelesaikan tutorial ini, kami menyarankan agar Anda membersihkan resource terkait untuk menghindari biaya tambahan.
Hapus aplikasi: Jalankan saectl delete -f deployment-provider.yaml -f deployment-consumer.yaml.
Instans CLB yang dibuat oleh SAE akan secara otomatis dilepas saat Anda menghapus aplikasi.
Langkah selanjutnya
Tutorial ini menunjukkan penerapan aplikasi menggunakan contoh image. Untuk menerapkan aplikasi Anda sendiri, SAE menyediakan metode berikut:
Terapkan aplikasi dari image (Direkomendasikan): Anda dapat mengemas aplikasi apa pun ke dalam image, mendorongnya ke repository image, lalu menerapkannya ke SAE.
Terapkan aplikasi dari paket kode: SAE menyediakan runtimes untuk versi spesifik Java, PHP, Python, dan .NET Core. Jika kode Anda kompatibel, Anda dapat menerapkan aplikasi dari paket kode. Anda harus terlebih dahulu membuat paket kode yang memenuhi persyaratan SAE lalu menerapkannya ke SAE.
Tutorial ini menggunakan Nacos bawaan SAE untuk mengimplementasikan registrasi dan penemuan layanan, sehingga aplikasi consumer dapat mengakses aplikasi provider dan memanggil metodenya. SAE juga menyediakan metode berikut untuk komunikasi antaraplikasi:
Gunakan registri MSE Nacos (Direkomendasikan): Jika Anda tidak ingin membangun registri layanan sendiri dan membutuhkan performa tinggi, skalabilitas, serta ketersediaan, kami menyarankan Anda menggunakan registri MSE Nacos.
Gunakan registri layanan yang dikelola sendiri: Jika Anda memiliki registri layanan yang dikelola sendiri (seperti Nacos atau ZooKeeper) yang memenuhi kebutuhan Anda, Anda dapat terus menggunakannya setelah menerapkan aplikasi ke SAE. Anda harus memastikan konektivitas jaringan antara aplikasi dan registri serta mengonfigurasi alamat registri secara manual di kode aplikasi Anda.
Konfigurasikan akses layanan aplikasi berdasarkan Kubernetes Service: Konfigurasikan nama domain tetap untuk aplikasi dalam kluster SAE agar dapat diakses oleh aplikasi lain.
Tutorial ini menunjukkan cara mengaktifkan akses eksternal dengan menyambungkan instans CLB ke aplikasi. Anda juga dapat menyambungkan instans NLB atau mengonfigurasi entri rute gerbang untuk mengaktifkan akses eksternal ke aplikasi. Jika aplikasi Anda perlu mengakses resource eksternal, Anda harus mengonfigurasi gerbang NAT atau menyambungkan EIP ke instans aplikasi.
Tutorial ini menggunakan namespace default yang dibuat sistem untuk menerapkan aplikasi. Anda juga dapat menggunakan namespace kustom untuk mengisolasi aplikasi atau lingkungan yang berbeda, seperti pengembangan, pengujian, dan produksi. Setiap namespace harus diikat ke VPC. Saat menerapkan aplikasi, Anda mengikat instansnya ke vSwitch di VPC tersebut. Dengan memilih vSwitch di zona ketersediaan yang berbeda, Anda dapat menerapkan aplikasi di beberapa zona ketersediaan.
Setelah membuat aplikasi, Anda dapat menyesuaikan jumlah instans secara manual dan spesifikasi instans, atau mengonfigurasi kebijakan penskalaan otomatis untuk menyesuaikan jumlah instans secara otomatis berdasarkan traffic dan penggunaan sumber daya. Anda juga dapat mengurangi biaya dengan mengaktifkan mode idle.