Exposing Services
1 min read
Kubernetes Cluster : Exposing Services #
Meskipun komponen dalam aplikasimu dapat saling berkomunikasi menggunakan nama service melalui jaringan internal, koneksi dari luar tetap memerlukan konfigurasi tambahan.
Kubernetes mendukung tiga jenis service untuk membangun koneksi internal maupun eksternal ke aplikasi, yaitu :
- ClusterIP
- NodePort
- LoadBalancer
Cluster IP #
Layanan ClusterIP adalah jenis service default di Kubernetes. Layanan ini memungkinkan aplikasi diakses oleh aplikasi lain di dalam cluster Kubernetes, namun tidak menyediakan akses dari luar cluster.
Berikut ini contoh service ClusterIP sederhana :
kind: Service apiVersion: v1 metadata: name: nginx1 namespace: test spec: type: ClusterIP selector: app: nginx ports: - port: 80
NodePort #
Cara paling dasar untuk membuat koneksi dari luar ke sebuah service adalah dengan mengeksposnya melalui NodePort secara langsung. Seperti namanya, tipe service ini membuka port tertentu di setiap node, dan lalu lintas apa pun yang dikirim ke port ini akan diteruskan ke service Kamu. Secara default, nodePort akan dipilih secara acak dari rentang 30000–32767.
📝 NOTE
Metode ini memiliki beberapa kekurangan yang perlu dipertimbangkan saat mengkonfigurasi Kubernetes Cluster (satu service per port, rentang port yang terbatas, dll.). Akibatnya, tipe service NodePort biasanya hanya digunakan untuk demo atau aplikasi sementara lainnya. Namun, untuk produksi biasanya dibutuhkan konfigurasi yang lebih kompleks menggunakan Ingress dan opsi service LoadBalancer.
Berikut adalah contoh konfigurasi service dengan tipe NodePort:
kind: Service apiVersion: v1 metadata: name: nginx1 namespace: test labels: run: nginx spec: type: NodePort selector: run: nginx ports: - port: 80 targetPort: 80
Jika diperlukan, Kamu bisa memilih nodePort tertentu untuk service kamu. Misalnya, konfigurasi berikut digunakan untuk mengarahkan koneksi dari port 30984:
ports: - port: 80 targetPort: 80 nodePort: 30984
Jika IP publik telah terpasang pada node pekerja (worker nodes) Kubernetes, maka tidak diperlukan konfigurasi tambahan.
Namun, jika belum, port yang telah ditentukan sebelumnya (nodePort) perlu diekspos dari sisi platform. Berikut langkah-langkahnya:
- Buka Settings > Endpoints pada lingkungan Kubernetes kamu > Klik Add.
- Isi data berikut pada jendela yang muncul:
- Node: pilih salah satu node pekerja dari daftar.
- Name: masukkan nama endpoint sesuai keinginan.
- Private Port: isi dengan nilai nodePort yang telah kamu tentukan sebelumnya.
- Protocol: pilih opsi TCP.

Klik Add untuk mengonfirmasi. Proses ini mungkin memerlukan waktu hingga beberapa menit agar platform berhasil mengekspos port tersebut dan mengarahkan permintaan (request) ke service NodePort yang sudah kamu konfigurasi.
Load Balancer #
Tipe service LoadBalancer adalah cara yang paling umum digunakan untuk menyediakan akses layanan di Internet. Jenis ini membutuhkan IP publik yang terpasang pada salah satu worker node.
Perlu Kamu ingat bahwa dengan tipe LoadBalancer, seluruh lalu lintas (traffic) akan langsung diteruskan ke layanan tanpa adanya proses filtering, routing, atau mekanisme pengamanan lainnya. Parameter port dalam konfigurasi ini adalah port dari Internet yang masuk, sedangkan targetPort adalah port tujuan di sisi aplikasi.
Sebagai contoh:
kind: Service apiVersion: v1 metadata: name: nginx1 namespace: test spec: type: LoadBalancer selector: app: nginx ports: - port: 80 targetPort: 8080
Powered by BetterDocs
