Rute dan Domain

Beberapa Aplikasi berguna tanpa dapat diakses di luar cluster, tetapi sebagian besar harus tersedia di luar cluster di satu atau beberapa endpoint HTTP. Di Kf, ini adalah tugas Routes.

Secara default, setiap Aplikasi dapat diakses oleh proses lain di 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 berpindah dari satu Aplikasi ke Aplikasi lain, bukan ke luar cluster dan kembali. Hal ini membuat komunikasi lebih aman, lebih cepat, dan dijamin untuk menggunakan layanan di cluster lokal.

Jika Aplikasi Anda perlu 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 rute Timur-Barat (titik ke titik).
  • Traffic yang dikirim ke Pod ini di-load balance di antara Pod Aplikasi yang sedang berjalan.
  • Anda dapat terhubung ke endpoint non-HTTP menggunakan domain internal.

Rute memungkinkan Anda membuat URL vanity di atas domain internal 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 ingress 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 tersebut 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 host dan domain, tetapi 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.

Menggunakan Routes

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

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 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 agar tidak dirutekan ke semua Aplikasi yang memproses Rute.

Rute Deklaratif di manifes Aplikasi Anda

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.

Topik lanjutan

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