Belajar Kubernetes (Ingress)
Objek service (NodePort, LoadBalancer) di Kubernetes dapat digunakan sebagai jalan untuk mengakses aplikasi dari luar cluster. Hanya saja kedua cara tersebut mengharuskan setiap aplikasi diakses menggunakan port untuk masing-masing aplikasi jika menggunakan service dengan tipe NodePort, sedangkan service dengan tipe LoadBalancer menggunakan satu load balancer untuk setiap aplikasi yang mana akan memakan biaya yang lebih besar.
Dengan begitu kita membutuhkan sebuah “virtual hosting” yang dapat menyimpan banyak host HTTP dengan menggunakan satu alamat IP. Biasanya kita menggunakan sistem load balancer atau reverse proxy yang menerima koneksi pada port HTTP (80) dan HTTPS (443). Koneksi tersebut di urai berdasarkan Host header dan Path URL, kemudian reverse proxy akan melakukan pengalihan koneksi ke “upstream” server berdasarkan data tersebut. Mekanisme seperti ini bisa dilakukan dengan menggunakan Ingress objek.
Ingress adalah objek yang mendefinisikan rules untuk bagaimana user eksternal atau sistem diluar cluster dapat mengakses services yang berjalan didalam Kubernetes cluster. Ingress melayani dengan mengkespos koneksi HTTP dan HTTPS dari luar dan mengarahkan koneksi tersebut ke service berdasarkan rules yang ditentukan.
Rule menentukan bagaimana koneksi tersebut akan diarahkan, baik berdasarkan URL ataupun host. Rule juga bisa menentukan apakah koneksi tersebut menggunakan SSL/TLS termination atau tidak.
Untuk menggunakan ingress di Kubernetes, kita membutuhkan sebuah ingress controller, yang dalam hal ini merupakan komponen yang terpisah dari ingress objek. Ada banyak ingress controller yang bisa digunakan, seperti Nginx, Trafik dan Istio.