Halaman ini menjelaskan cara kerja rute dan domain di Kf, serta cara developer dan administrator mengonfigurasi rute dan domain untuk Aplikasi yang di-deploy di cluster Kf.
Anda harus membuat domain dan rute untuk memberikan akses eksternal ke aplikasi Anda.
Pemilihan rute internal
Aplikasi Kf dapat berkomunikasi secara internal dengan aplikasi lain di cluster secara langsung menggunakan jaringan mesh yang disediakan oleh Cloud Service Mesh tanpa keluar dari jaringan cluster. Secara default, semua traffic dienkripsi menggunakan TLS bersama.
Semua aplikasi yang di-deploy di cluster Kf dilengkapi dengan endpoint internal yang dikonfigurasi secara default. Anda dapat menggunakan alamat app-name.space-name.svc.cluster.local
untuk komunikasi internal antar-aplikasi. Untuk menggunakan alamat internal ini, Anda tidak perlu melakukan langkah tambahan. TLS bersama diaktifkan secara default untuk rute internal. Perhatikan bahwa alamat internal ini hanya dapat diakses dari pod yang menjalankan aplikasi dan tidak dapat diakses dari luar cluster.
Load balancing aplikasi
Traffic dirutekan oleh Istio ke instance Aplikasi yang berfungsi dengan baik menggunakan kebijakan round-robin. Saat ini, kebijakan ini tidak dapat diubah.
Kemampuan rute
Rute memberi tahu gateway masuk cluster tempat untuk mengirimkan traffic dan tindakan yang harus dilakukan jika tidak ada Aplikasi yang tersedia di alamat tertentu. Secara default, jika tidak ada Aplikasi yang tersedia di 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
:
- Penyelenggaranya adalah
payroll
- Domainnya adalah
mydatacenter.example.com
- Jalurnya adalah
/login
Rute harus berisi domain, tetapi host dan jalur bersifat opsional. Beberapa Rute dapat memiliki host dan domain yang sama jika menentukan jalur yang berbeda. Beberapa Aplikasi dapat menggunakan Rute yang sama dan traffic akan dibagi di antara aplikasi tersebut. Hal ini berguna jika Anda perlu mendukung blue/green deployment lama. Jika beberapa Aplikasi terikat ke jalur yang berbeda, prioritasnya adalah jalur terpanjang hingga terpendek.
Mengelola 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 dengannya, kode status HTTP 503 akan ditampilkan untuk permintaan yang cocok.
Memetakan rute ke aplikasi Anda
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
Membatalkan pemetaan rute
Developer dapat menghapus Aplikasi 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 agar tidak dirutekan ke semua Aplikasi yang memproses Rute.
Mengelola rute secara deklaratif di manifes aplikasi
Rute dapat dikelola secara deklaratif dalam file manifes aplikasi Anda. File tersebut 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 di dokumentasi manifes.
Me-route CRD
Ada empat jenis yang relevan dengan pemilihan rute:
- 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 memantau perubahan pada Aplikasi, saat Aplikasi meminta untuk ditambahkan ke Rute, Rute akan memperbarui daftar Aplikasinya, lalu VirtualService. VirtualService mewakili satu domain dan menggabungkan daftar semua Rute di Ruang yang termasuk dalam domain tersebut.
Istio membaca konfigurasi di VirtualServices untuk menentukan cara merutekan traffic.