helm repo add prometheus-community <https://prometheus-community.github.io/helm-charts>
helm repo update
# prometheus-values.yaml
prometheus:
  service:
    type: ClusterIP
grafana:
  service:
    type: ClusterIP
helm upgrade --install kube-prometheus-stack prometheus-community/kube-prometheus-stack -f custom-values.yaml -n prometheus-monitoring
# verify the services
kubectl get services
kubectl get services -n prometheus-monitoring

# Output
NAME                                             TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)                         AGE
alertmanager-operated                            ClusterIP      None            <none>            9093/TCP,9094/TCP,9094/UDP      21m
kube-prometheus-stack-alertmanager               ClusterIP      10.233.63.160   <none>            9093/TCP,8080/TCP               21m
kube-prometheus-stack-grafana                    LoadBalancer   10.233.25.34    <none>            80:32258/TCP                    21m
kube-prometheus-stack-kube-state-metrics         ClusterIP      10.233.43.75    <none>            8080/TCP                        21m
kube-prometheus-stack-operator                   ClusterIP      10.233.27.200   <none>            443/TCP                         21m
kube-prometheus-stack-prometheus                 LoadBalancer   10.233.60.168   <none>            9090:32377/TCP,8080:32587/TCP   21m
kube-prometheus-stack-prometheus-node-exporter   ClusterIP      10.233.21.240   <none>            9100/TCP                        21m
prometheus-operated                              ClusterIP      None            <none>            9090/TCP                        21m

Create HTTPRoute so Traefik can redirect the request to the desired services:

# grafana-httproutes.yaml

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: grafana-httproute
  namespace: prometheus-monitoring
spec:
  parentRefs:
  - name: traefik
    sectionName: web
    namespace: default
  hostnames:
  - grafana.kube.slc.net
  rules:
  - filters:
    - type: RequestRedirect
      requestRedirect:
        scheme: https
        statusCode: 301

---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  labels:
    gateway: traefik
  name: grafana-httpsroute
  namespace: prometheus-monitoring
spec:
  hostnames:
  - grafana.kube.slc.net

  parentRefs:
  - group: gateway.networking.k8s.io
		kind: Gateway
    name: traefik
    namespace: default
    sectionName: websecure

  rules:
  - backendRefs:
    - group: ""
      kind: Service
      name: kube-prometheus-stack-grafana
      namespace: prometheus-monitoring
      port: 80
      weight: 1

    matches:
      - path:
          type: PathPrefix
          value: /
# prometheus-httproutes.yaml
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: prometheus-httproute
  namespace: prometheus-monitoring
spec:
  parentRefs:
  - name: traefik
    sectionName: web
    namespace: default
  hostnames:
  - prometheus.kube.slc.net
  rules:
  - filters:
    - type: RequestRedirect
      requestRedirect:
        scheme: https
        statusCode: 301

---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  labels:
    gateway: traefik
  name: prometheus-httpsroute
  namespace: prometheus-monitoring
spec:
  hostnames:
  - prometheus.kube.slc.net

  parentRefs:
  - group: gateway.networking.k8s.io
		kind: Gateway
    name: traefik
    namespace: default
    sectionName: websecure

  rules:
  - backendRefs:
    - group: ""
      kind: Service
      name: kube-prometheus-stack-prometheus
      namespace: prometheus-monitoring
      port: 80
      weight: 1

    matches:
      - path:
          type: PathPrefix
          value: /

Cara dapet default user grafana login:

# Get Username
kubectl get secret --namespace default kube-prometheus-stack-grafana -o jsonpath="{.data.admin-user}" | base64 --decode ; echo

# Get Password
kubectl get secret --namespace default kube-prometheus-stack-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

Dah sisa kita ngeset buat monitoring persistent volumes:

Buka hamburger menu di kiri atas > Dashboards

Untitled

Klik New > New Dashboard

Pilih yang Import Dashboard, masukin angka 11455