Rute dan Domain

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

{i>Internal Routing<i}

Aplikasi Kf dapat berkomunikasi secara internal dengan aplikasi lain di cluster secara langsung menggunakan jaringan mesh yang disediakan oleh Anthos Service Mesh tanpa meninggalkan jaringan cluster. Secara default, semua lalu lintas 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-langkah tambahan. TLSal diaktifkan secara default untuk rute internal. Perlu diperhatikan 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 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 domain, tetapi host dan jalur 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.