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:

  1. Menyediakan IP stabil untuk sekelompok Pod.
  2. 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

  1. ClusterIP (Default Service)
  2. NodePort
  3. LoadBalancer
  4. 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:

apiVersion: v1 kind: Service metadata: name: my-clusterip-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: ClusterIP
  • type: ClusterIP: Menentukan tipe Service.
  • selector: Menghubungkan Service ke Pod dengan label app: 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:

apiVersion: v1 kind: Service metadata: name: my-nodeport-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 nodePort: 30007 type: 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:

http://<Node-IP>:30007

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:

apiVersion: v1 kind: Service metadata: name: my-loadbalancer-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer
  • type: LoadBalancer: Kubernetes meminta load balancer eksternal dari provider cloud.

Cara akses:
Setelah Service dibuat, Anda bisa mendapatkan IP eksternal menggunakan perintah:

kubectl get service my-loadbalancer-service

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:

  1. Routing trafik berdasarkan host atau path tertentu.
  2. SSL termination untuk HTTPS.
  3. Load balancing untuk trafik HTTP/HTTPS.

Contoh konfigurasi Ingress:

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: my-clusterip-service port: number: 80
  • 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:

http://example.com

Perbedaan Singkat Jenis Service

Tipe ServiceAksesibilitasFungsi
ClusterIPInternal klusterKomunikasi antar Pod di kluster
NodePortExternal (Node IP)Akses ke Pod melalui Node Port
LoadBalancerExternal (Cloud-based)Akses dengan load balancing
IngressExternal (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!

BABAI


Komentar

Postingan Populer