Beberapa Aplikasi berguna tanpa dapat diakses di luar cluster, tetapi sebagian besar Aplikasi harus tersedia di luar cluster pada satu atau beberapa endpoint HTTP. Di Kf, ini adalah tugas Routes.
Secara default, setiap Aplikasi dapat diakses oleh proses lain dalam cluster menggunakan
alamat Aplikasi internal cluster: app-name.space-name
. Anda dapat menggunakan alamat ini
saat men-deploy satu atau beberapa Aplikasi dalam cluster yang perlu berkomunikasi satu
sama lain. Alamat ini memungkinkan traffic langsung dari satu Aplikasi ke Aplikasi lainnya, bukan
keluar dari cluster dan kembali. Hal ini membuat komunikasi lebih aman, lebih cepat, dan
dijamin untuk menggunakan layanan di cluster lokal.
Jika Aplikasi harus dapat diakses dari luar cluster, Anda harus membuat Rute untuknya.
Domain internal cluster
Domain internal cluster untuk setiap Aplikasi memiliki beberapa karakteristik khusus.
- Menggunakannya di Aplikasi memungkinkan pemilihan rute Timur-Barat (titik ke titik).
- Traffic yang dikirim ke aplikasi tersebut akan di-load balanced antara menjalankan App Pod.
- Anda dapat terhubung ke endpoint non-HTTP menggunakan domain internal.
Routes memungkinkan Anda membuat URL cantik di atas domain internal cluster.
Load balancing aplikasi
Traffic dirutekan oleh Istio ke instance Aplikasi yang sehat menggunakan kebijakan round-robin. Saat ini, kebijakan ini tidak dapat diubah.
Kemampuan rute
Rute memberi tahu gateway masuk cluster tujuan pengiriman traffic, dan tindakan yang harus dilakukan jika tidak ada Aplikasi yang tersedia di alamat yang diberikan. Secara default, jika tidak ada Aplikasi yang tersedia di suatu Rute dan Rute menerima permintaan, Rute akan menampilkan kode status HTTP 503.
Rute terdiri dari tiga bagian: host, domain, dan jalur. Misalnya, dalam
URI payroll.mydatacenter.example.com/login
:
- Host adalah
payroll
- Domainnya adalah
mydatacenter.example.com
- Jalurnya adalah
/login
Rute harus berisi host dan domain, tetapi jalurnya bersifat opsional. Beberapa Rute dapat berbagi host dan domain yang sama jika menentukan jalur yang berbeda. Beberapa Aplikasi dapat berbagi Rute dan traffic yang sama akan dibagi di antara keduanya. Ini berguna jika Anda perlu mendukung blue/green deployment lama. Jika beberapa Aplikasi terikat ke jalur yang berbeda, prioritasnya adalah jalur terpanjang hingga jalur terpendek.
Menggunakan Rute
Bagian berikut menjelaskan cara menggunakan CLI kf
untuk mengelola Rute.
Membuat Daftar Rute
Developer dapat mencantumkan Rute untuk Ruang saat ini menggunakan perintah
kf routes
.
$ kf routes
Getting Routes in Space: my-space
Found 2 Routes in Space my-space
HOST DOMAIN PATH APPS
echo example.com / echo
* example.com /login uaa
Membuat Rute
Developer dapat membuat Rute menggunakan perintah kf create-route
.
# Create a Route in the targeted Space to match traffic for myapp.example.com/*
$ kf create-route example.com --hostname myapp
# Create a Route in the Space myspace to match traffic for myapp.example.com/*
$ kf create-route -n myspace example.com --hostname myapp
# Create a Route in the targeted Space to match traffic for myapp.example.com/mypath*
$ kf create-route example.com --hostname myapp --path /mypath
# You can also supply the Space name as the first parameter if you have
# scripts that rely on the old cf style API.
$ kf create-route myspace example.com --hostname myapp # myapp.example.com
Setelah Rute dibuat, jika tidak ada Aplikasi yang terikat padanya, kode status HTTP 503 akan ditampilkan untuk setiap permintaan yang cocok.
Memetakan Rute ke Aplikasi
Developer dapat membuat Aplikasi mereka dapat diakses di Rute menggunakan perintah
kf map-route
.
$ kf map-route MYAPP mycluster.example.com --host myapp --path mypath
Batalkan pemetaan Rute
Developer dapat menghapus Aplikasi mereka agar tidak dapat diakses di Rute menggunakan perintah kf
unmap-route
.
$ kf unmap-route MYAPP mycluster.example.com --host myapp --path mypath
Menghapus Rute
Developer dapat menghapus Rute menggunakan perintah kf delete-route
.
$ kf delete-route mycluster.example.com --host myapp --path mypath
Menghapus Rute akan menghentikan traffic dirutekan ke semua Aplikasi yang memproses Rute tersebut.
Rute Deklarasi di manifes Aplikasi Anda
Rute bisa dikelola secara deklaratif dalam file manifes Aplikasi Anda. Mereka akan dibuat jika belum ada.
---
applications:
- name: my-app
# ...
routes:
- route: example.com
- route: www.example.com/path
Anda dapat membaca selengkapnya tentang properti rute yang didukung dalam dokumentasi manifes.
Topik lanjutan
CRD Rute
Ada empat jenis {i>routing<i} yang relevan:
- VirtualService
- Rute
- Layanan
- Aplikasi
Setiap Aplikasi memiliki Layanan, yang merupakan nama abstrak yang diberikan ke semua instance Aplikasi Anda yang sedang berjalan. Nama Layanan sama dengan Aplikasi. Rute mewakili satu URL eksternal. Rute terus-menerus memantau perubahan pada Aplikasi, saat Aplikasi meminta untuk ditambahkan ke Route, Route akan memperbarui daftar Aplikasi, lalu VirtualService. VirtualService mewakili satu domain dan menggabungkan daftar semua Rute dalam Ruang milik domain tersebut.
Istio membaca konfigurasi pada VirtualServices untuk menentukan cara mengarahkan traffic.