Appearance
Grafana on Kubernetes 部署
使用 Bitnami Helm Chart 在 Kubernetes 上部署 Grafana,含持久化設定、NodePort 暴露與匿名登入的 grafana.ini 自訂。
概述
Grafana 是監控體系中的視覺化前端,連接 Prometheus 資料來源,以 Dashboard 呈現時序指標、設定告警規則。在 Kubernetes 上透過 Bitnami Helm Chart(OCI Registry 版本)部署,以持久化 Volume 保存 Dashboard 設定與資料來源。
Bitnami 的 Grafana Chart 提供兩種設定擴充方式:(1)透過 --set 參數在 Helm 安裝時直接指定;(2)透過 grafana.ini ConfigMap 進行細粒度設定,適合需要啟用匿名登入、自訂 root_url、關閉遙測等進階需求。
核心內容
grafana.ini 自訂設定
當需要超出 Helm Chart --set 所能控制的設定時,可透過 ConfigMap 掛載 grafana.ini:
bash
--set config.useGrafanaIniFile="true" \
--set config.grafanaIniConfigMap="grafana-custom-config"常用的設定區塊:
[auth.anonymous]:啟用匿名登入,適合內部共享儀表板(設定org_role = Viewer)[server]:設定root_url確保連結跳轉正確(尤其在 NodePort 或 subpath 部署時)[analytics]:關閉使用報告與更新檢查
Dashboard 管理
Grafana 官方 Dashboard 市集提供豐富的現成範本,輸入 Dashboard ID 即可一鍵匯入,常用範本:
- Redis:#763
- PostgreSQL:#9628
- RabbitMQ:搜尋 "RabbitMQ Overview"
- Node Exporter:#1860
連線 Prometheus 資料來源
部署後需在 Grafana UI 中設定 Prometheus 資料來源,叢集內部 URL 格式:
http://prometheus-server.monitoring.svc.cluster.local:80關鍵要點
- Bitnami Chart 以 OCI Registry 格式分發(
oci://registry-1.docker.io/bitnamicharts/grafana) - 需持久化 Volume(
persistence.enabled=true)才能保留 Dashboard 和資料來源設定 - 自訂
root_url在 NodePort 或 Ingress subpath 部署時很重要,確保連結導向正確 hide_version = true可隱藏 Grafana 版本號(安全最佳實踐)- 升級時建議透過
image.registry/image.repository/image.tag明確釘定版本(如bitnamilegacy/grafana:12.1.1),避免自動拉取未驗證的新版 - 正式環境應設定 Resource Limits(
grafana.resources.limits.*),避免 Grafana 異常時耗盡節點資源 helm upgrade的認證參數名稱為auth.username/auth.password(早期版本 Chart 用admin.user/admin.password),兩者不相容,升級時請確認 Chart 版本對應的參數名
實際應用
Grafana 作為 Prometheus 的視覺化前端,在 NodePort 30900 上提供 Web 介面。搭配匿名登入設定,內部使用者無需帳號即可查看監控 Dashboard,適合公司內部監控看板。實際監控各服務的 Dashboard 可從 Grafana 市集匯入對應的 Exporter Dashboard,如 Redis Exporter、Postgres Exporter、RabbitMQ Exporter 等。
部署設定參考
以下為實際部署時使用的完整設定,供日後查詢與複製使用。
環境參數
| 項目 | 值 |
|---|---|
| Namespace | monitoring |
| StorageClass | nfs-client |
| PVC 大小 | 20Gi |
| 管理員帳號 | admin |
| 管理員密碼 | Bed200@2023 |
| Service 類型 | NodePort |
| NodePort | 30900 |
| root_url | http://10.248.36.248:30900/ |
| Image Registry | docker.io |
| Image Repository | bitnamilegacy/grafana |
| Image Tag | 12.1.1 |
| CPU Limit / Request | 1 / 250m |
| Memory Limit / Request | 1024Mi / 256Mi |
安裝指令
bash
helm install grafana \
--namespace monitoring \
--set persistence.enabled="true" \
--set persistence.storageClass="nfs-client" \
--set persistence.accessMode="ReadWriteOnce" \
--set persistence.size="20Gi" \
--set admin.user="admin" \
--set admin.password="Bed200@2023" \
--set service.type="NodePort" \
--set service.nodePorts.grafana="30900" \
oci://registry-1.docker.io/bitnamicharts/grafana升級指令(版本更新 / 2025-10-09)
用於已存在的 Release 版本升級,新增指定 Image、Resource Limits,並加上
--wait。 注意:此版本 Chart 的認證參數改為auth.username/auth.password, NodePort 參數改為service.nodePorts.http。
bash
helm upgrade grafana oci://registry-1.docker.io/bitnamicharts/grafana \
--namespace monitoring \
--set persistence.enabled=true \
--set persistence.storageClass="nfs-client" \
--set persistence.accessMode="ReadWriteOnce" \
--set persistence.size="20Gi" \
--set auth.username="admin" \
--set auth.password="Bed200@2023" \
--set service.type="NodePort" \
--set service.nodePorts.http=30900 \
--set image.registry="docker.io" \
--set image.repository="bitnamilegacy/grafana" \
--set image.tag=12.1.1 \
--set grafana.resources.limits.cpu=1 \
--set grafana.resources.limits.memory=1024Mi \
--set grafana.resources.requests.cpu=250m \
--set grafana.resources.requests.memory=256Mi \
--set config.useGrafanaIniFile="true" \
--set config.grafanaIniConfigMap="grafana-custom-config" \
--wait與初始安裝指令的差異對照:
項目 初始安裝 升級版本 認證帳號參數 admin.userauth.username認證密碼參數 admin.passwordauth.passwordNodePort 參數 service.nodePorts.grafanaservice.nodePorts.httpImage 版本 未指定(Chart 預設) bitnamilegacy/grafana:12.1.1Resource Limits 未設定 CPU 1 / Memory 1024Mi --wait無 有
grafana.ini ConfigMap(匿名登入設定)
yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-custom-config
namespace: monitoring
data:
grafana.ini: |-
[auth.anonymous]
enabled = true
org_name = Main Org.
org_role = Viewer
hide_version = true
[server]
root_url = http://10.248.36.248:30900/
[analytics]
reporting_enabled = false
check_for_updates = false啟用 grafana.ini 自訂設定:
bash
# 在 helm install 指令中加入以下參數
--set config.useGrafanaIniFile="true" \
--set config.grafanaIniConfigMap="grafana-custom-config"相關概念
- Prometheus on Kubernetes 部署 — Grafana 的主要資料來源
- Prometheus Exporter 部署模式 — 各 Exporter 提供 Grafana 可視覺化的指標
- Redis Exporter 部署 — Redis 監控指標來源
- Postgres Exporter 部署 — PostgreSQL 監控指標來源
- RabbitMQ Exporter 部署 — RabbitMQ 監控指標來源
- Prometheus StatsD Exporter 部署 — 接收應用程式推送指標,可在 Grafana 進行視覺化