Grafana 13 大版本发布后,社区反馈和边缘场景的修复正在快速跟进。13.0.2 作为补丁版本,改动不大但有两点值得部署端关注:Alpine 基础镜像升级到 3.x,以及 Dashboard 保存流程中 Kubernetes 格式的配置现在可以被直观看到。前者影响容器安全基线,后者让 GitOps 管理面板的人少踩一个暗坑。
Alpine 镜像升级:安全基线跟着走
Grafana 官方 Docker 镜像一直提供 Alpine 变体,体积小、启动快,是生产环境常用选择。这次将 Alpine 基础镜像从旧版升级到 3.x,意味着底层 musl libc、busybox 等组件拿到了近期的安全补丁。如果你正在用 Grafana 容器,这个变更不需要你改任何代码——重新拉取镜像即可。
实际操作:
# 拉取最新 13.0.2 Alpine 镜像
docker pull grafana/grafana:13.0.2-alpine
# 验证基础镜像版本
docker run --rm grafana/grafana:13.0.2-alpine cat /etc/alpine-release
# 预期输出类似: 3.21.x
如果你用 docker-compose 管理部署,更新一行版本号就够了:
services:
grafana:
image: grafana/grafana:13.0.2-alpine
ports:
- "3000:3000"
volumes:
- grafana-storage:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin # 上线前务必改掉
volumes:
grafana-storage:
跑起来后访问 http://localhost:3000,用 admin / admin 登录(首次会要求改密码)。
Dashboard K8s 格式:GitOps 不再"看不见"
Grafana 13 开始更深度地拥抱 Kubernetes 原生资源模型——Dashboard 可以用 ConfigMap 或自定义资源(CRD)的形式存储在集群里。但在之前的版本中,当你通过 UI 保存一个 Dashboard 时,如果后端配置了 Kubernetes 存储后端,用户其实看不到最终写入的 K8s 格式内容,排查问题只能去集群里 kubectl get。
13.0.2 修复了这个体验缺口:在已配置 Kubernetes 存储的情况下,保存 Dashboard 时界面会展示对应的 K8s 资源格式(#123045)。这对以下场景直接有帮助:
- 用 ArgoCD / Flux 做 Dashboard GitOps 同步,需要确认 YAML 结构
- 多集群环境下排查 Dashboard 为什么没同步到目标集群
- 从 UI 创建 Dashboard 后想导出 YAML 放进 Git 仓库
一个典型的 K8s Dashboard ConfigMap 看起来是这样的:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-dashboard
namespace: monitoring
labels:
grafana_dashboard: "1"
data:
my-dashboard.json: |
{
"annotations": {
"list": []
},
"title": "Node Metrics",
"uid": "node-metrics-001",
"panels": [
{
"id": 1,
"title": "CPU Usage",
"type": "timeseries",
"targets": [
{
"expr": "node_cpu_seconds_total",
"legendFormat": "{{instance}}"
}
]
}
],
"templating": {
"list": []
},
"schemaVersion": 39,
"version": 1
}
如果你用 Grafana Operator,CRD 格式会更简洁:
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
name: node-metrics
namespace: monitoring
spec:
json: |
{
"title": "Node Metrics",
"uid": "node-metrics-001",
"panels": [
{
"id": 1,
"title": "CPU Usage",
"type": "timeseries",
"targets": [
{"expr": "node_cpu_seconds_total"}
]
}
],
"schemaVersion": 39,
"version": 1
}
instanceSelector:
matchLabels:
dashboards: "grafana"
现在在 UI 保存后能直接看到这类输出,不用再盲猜格式了。
升级建议与注意事项
13.0.2 是补丁版本,没有破坏性变更,升级路径平滑:
- Docker 部署:改镜像标签,重新部署。建议先在测试环境跑一轮,确认插件兼容性——部分社区插件可能还没适配 13 大版本的新面板模型。
- K8s Helm 部署:更新
grafana.image.tag值即可。如果你用了grafana-operator,确认 operator 版本也兼容 13.x。 - Dashboard GitOps:升级后重新保存一次关键 Dashboard,观察 K8s 格式输出是否与你在 Git 里维护的 YAML 一致。如果之前手动拼过 YAML,现在可以对照 UI 输出做一次校准。
# Helm 升级示例
helm upgrade grafana grafana/grafana \
--namespace monitoring \
--set image.tag=13.0.2-alpine \
--reuse-values
一个快速检查清单:
- ✅ 镜像标签是否已指向
13.0.2-alpine - ✅ Alpine 版本是否为 3.x(
cat /etc/alpine-release) - ✅ Dashboard 保存后 K8s 格式是否可见
- ✅ 已有 Dashboard JSON schemaVersion 是否兼容 39
- ✅ 插件列表是否全部正常加载
小版本看似不起眼,但 Alpine 升级影响安全扫描结果,K8s 格式可见影响日常运维效率。如果你已经在 13.x 线上,没有理由不升到 13.0.2。