Day 95 Prakerin Di Excellent ~ Service Dalam Kubernetes
Hari ke- 95 PKL: Service Dalam Kubernetes
Halo, semuanya! Pada blog sebelumnya, kita sudah membahas tentang DaemonSet di Kubernetes yang memastikan Pod berjalan di setiap Node. Kali ini, kita akan membahas komponen penting lainnya dalam Kubernetes, yaitu Service.
Apa Itu Service dalam Kubernetes?
Dalam Kubernetes, Pod memiliki siklus hidup yang dinamis. Ketika sebuah Pod dihapus atau direplikasi, IP Pod akan berubah. Hal ini bisa menyebabkan aplikasi sulit berkomunikasi satu sama lain. Untuk mengatasi masalah ini, Service digunakan sebagai abstraksi jaringan yang:
- Menyediakan IP stabil untuk sekelompok Pod.
- Mengatur routing trafik menuju Pod berdasarkan label selector.
Service bertindak sebagai pintu gerbang yang memungkinkan aplikasi berkomunikasi baik antar Pod maupun dari luar kluster Kubernetes.
Jenis-jenis Service dalam Kubernetes
- ClusterIP (Default Service)
- NodePort
- LoadBalancer
- Ingress
Mari kita bahas satu per satu!
1. ClusterIP
ClusterIP adalah tipe default untuk Service. Service ini hanya dapat diakses secara internal dalam kluster Kubernetes. Ini cocok digunakan untuk komunikasi antar aplikasi dalam kluster.
Contoh konfigurasi ClusterIP:
type: ClusterIP
: Menentukan tipe Service.selector
: Menghubungkan Service ke Pod dengan labelapp: my-app
.port
: Port yang diekspos di Service.targetPort
: Port pada Pod yang akan menerima trafik.
2. NodePort
NodePort memungkinkan akses ke aplikasi dari luar kluster Kubernetes menggunakan port di setiap Node. Kubernetes akan membuka port pada setiap Node di kisaran 30000-32767.
Contoh konfigurasi NodePort:
type: NodePort
: Menentukan Service dapat diakses melalui port pada Node.nodePort
: Port yang digunakan untuk akses eksternal (optional, jika tidak ditentukan, Kubernetes akan memilih port acak).
Cara akses:
3. LoadBalancer
LoadBalancer memungkinkan akses ke Service dari luar kluster dengan fitur load balancing otomatis. Biasanya, Service ini digunakan di cloud provider seperti AWS, GCP, atau Azure yang menyediakan external load balancer.
Contoh konfigurasi LoadBalancer:
type: LoadBalancer
: Kubernetes meminta load balancer eksternal dari provider cloud.
Cara akses:
Setelah Service dibuat, Anda bisa mendapatkan IP eksternal menggunakan perintah:
4. Ingress
Jika Anda membutuhkan akses HTTP/HTTPS yang lebih kompleks, Ingress adalah pilihan yang tepat. Ingress tidak menggantikan Service, tetapi bertindak sebagai entry point untuk trafik eksternal yang akan diarahkan ke Service.
Ingress mendukung:
- Routing trafik berdasarkan host atau path tertentu.
- SSL termination untuk HTTPS.
- Load balancing untuk trafik HTTP/HTTPS.
Contoh konfigurasi Ingress:
host: example.com
: Trafik HTTP/HTTPS dari host ini akan diarahkan ke Service.backend
: Menghubungkan Ingress ke Service.
Cara akses:
Pastikan Anda sudah memiliki Ingress Controller, lalu akses host di browser:
Perbedaan Singkat Jenis Service
Tipe Service | Aksesibilitas | Fungsi |
---|---|---|
ClusterIP | Internal kluster | Komunikasi antar Pod di kluster |
NodePort | External (Node IP) | Akses ke Pod melalui Node Port |
LoadBalancer | External (Cloud-based) | Akses dengan load balancing |
Ingress | External (HTTP/HTTPS) | Routing trafik HTTP/HTTPS |
Kesimpulan
Service dalam Kubernetes memainkan peran penting sebagai penghubung antar Pod dan mengatur trafik eksternal maupun internal.
- Gunakan ClusterIP untuk komunikasi internal antar Pod.
- Gunakan NodePort atau LoadBalancer untuk akses dari luar kluster.
- Gunakan Ingress jika Anda ingin melakukan routing HTTP/HTTPS dengan konfigurasi lebih kompleks.
Mungkin cukup sekian untuk pembahasan service kali ini. Semoga membantu. Terimakasih sudah membaca. Samapai jumpa di blog selanjutnya!
Komentar
Posting Komentar