Belajar Observability dengan LGTM Stack - Deploying LGTM Stack di Kubernetes
Episode 28 of 36

Belajar Observability dengan LGTM Stack - Deploying LGTM Stack di Kubernetes

Menjalankan LGTM Stack di Kubernetes memerlukan Helm charts dan resource yang tepat. Episode ini membahas Helm chart tiap komponen, resource K8s seperti StatefulSet dan PVC, desain high availability, serta operator dan CRD untuk konfigurasi deklaratif.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Membangun LGTM Stack di Kubernetes berbeda dari Docker Compose: setiap komponen menjadi workload terpisah, konfigurasi jadi ConfigMap atau Secret, dan data stateful butuh PersistentVolume. Untungnya, Grafana menyediakan Helm charts resmi untuk semua komponen.

Episode ini membahas Helm chart masing-masing komponen, resource Kubernetes yang dibutuhkan, desain high availability, serta operator dan custom resource untuk konfigurasi deklaratif.

Helm Charts

Chart untuk Setiap Komponen

  • Grafana Helm chart: grafana/grafana — men-deploy Grafana dengan provisioning.
  • Loki distributed chart: grafana/loki dengan mode simple scalable.
  • Tempo distributed chart: grafana/tempo mendukung single binary atau microservices.
  • Mimir distributed chart: grafana/mimir dengan komponen terpisah.
  • Alloy Helm chart: grafana/alloy untuk collector di tiap node.
Menambahkan repo Helm Grafana
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

Perintah helm repo add grafana menambahkan repository chart resmi Grafana Labs.

Deploy Komponen

Mimir dengan Helm

Contoh deployment Mimir dengan nilai default chart:

Install Mimir di cluster
helm install mimir grafana/mimir-distributed \
  --namespace mimir --create-namespace

Setelah helm install mimir, chart membuat StatefulSet untuk ingester dan Deployment untuk komponen stateless secara otomatis.

Resource Kubernetes yang Terlibat

  • StatefulSets: untuk ingester Mimir, ingester Loki, dan ingester Tempo yang stateful.
  • Deployments: untuk distributor, querier, dan compactor yang stateless.
  • Services: ClusterIP untuk komunikasi internal, LoadBalancer untuk akses luar.
  • Ingress: mengarahkan trafik eksternal ke Grafana.
  • PersistentVolumeClaims: penyimpanan data untuk komponen stateful.
  • ConfigMaps dan Secrets: konfigurasi dan kredensial tiap komponen.
Konsep PVC untuk ingester
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mimir-ingester-data
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

PersistentVolumeClaim di atas menyediakan 100Gi penyimpanan untuk data ingester Mimir.

Desain High Availability

Redundansi dan Anti-Affinity

  • Multi-replica deployments: minimal 2-3 replika untuk komponen kritis.
  • Pod anti-affinity: mencegah replika komponen stateful berada di node yang sama.
  • Pod disruption budgets: memastikan replika tetap tersedia saat node maintenance.
  • Readiness dan liveness probes: mengarahkan trafik hanya ke pod yang sehat.
Pod disruption budget
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: mimir-ingester-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: mimir-ingester

minAvailable: 2 menjamin setidaknya dua ingester tetap berjalan saat terjadi maintenance.

Operators dan CRD

Prometheus Operator dan ServiceMonitor

Prometheus Operator memperkenalkan Custom Resource Definitions (CRD) yang membuat konfigurasi scraping deklaratif:

ServiceMonitor untuk aplikasi
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: checkout-monitor
spec:
  selector:
    matchLabels:
      app: checkout
  endpoints:
    - port: metrics

ServiceMonitor memberitahu sistem scraping tentang pod mana yang harus dipantau — persis konsep anotasi di episode 27, tapi dalam bentuk resource.

Operator Lainnya

  • Grafana Operator: mengelola Grafana, data source, dan dashboard sebagai CRD.
  • PodMonitor: seperti ServiceMonitor untuk target pod langsung.

Tip

Mulai deployment K8s dari chart resmi dengan nilai default, lalu sesuaikan bertahap. Mengubah banyak nilai sekaligus membuat debugging deployment jauh lebih sulit.

Penutup

Di episode 28 ini kalian memahami Helm charts untuk tiap komponen LGTM, resource Kubernetes yang terlibat dari StatefulSet hingga PVC, desain high availability dengan anti-affinity dan PDB, serta operator dan CRD untuk konfigurasi deklaratif.

Inti yang harus dibawa pulang:

  • Gunakan Helm charts resmi Grafana untuk tiap komponen.
  • Ingester stateful butuh StatefulSet dan PVC.
  • Anti-affinity dan PDB menjaga ketersediaan replika.
  • ServiceMonitor dan PodMonitor membuat scraping deklaratif.
  • Mulai dari nilai default chart, sesuaikan bertahap.

Di episode 29 selanjutnya kita akan membahas observability dengan service mesh — telemetry otomatis di Istio dan Linkerd, metrik Envoy, tracing otomatis, golden metrics, serta integrasi mesh dengan LGTM Stack. Service mesh menghadirkan observability yang hampir tanpa instrumentasi manual.

Belajar Observability dengan LGTM Stack - Deploying LGTM Stack di Kubernetes | Belajar Observability dengan LGTM Stack