关于 app-sdk-concepts
用于在 Grafana App Platform 构建以 Schema 为中心的应用的命令行工具和 Go 库。它通过 CUE Schema 定义资源并生成 Go 与 TypeScript 代码,应用逻辑由准入控制和协调器实现。
主要功能
- 01搭建应用项目和组件
- 02使用 CUE 定义资源类型
- 03生成 Go 和 TypeScript 代码
- 04实现准入控制和协调器
- 05支持多种部署模式
适用场景
- 01启动独立的 Operator 应用
- 02在 Grafana 仓库内构建应用
- 03创建仅含前端的应用
- 04修改 CUE Schema 后生成代码
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ grafana/ skills --skill app-sdk-concepts安装后在 Claude Code 中输入/app-sdk-concepts确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cli-reference.mddeployment-modes.mdlocal-config.mdlocal-development.mdproject-structure.mdspecific-config.md详细介绍
Grafana App SDK 概念
grafana-app-sdk 是一个 CLI + Go 库,用于在 Grafana App Platform 上构建以 schema 为中心的应用。应用通过 CUE schema(“kind”)定义资源,生成 Go + TypeScript 代码,并通过准入控制和协调器实现业务逻辑。
前提条件
go install github.com/grafana/grafana-app-sdk/cmd/grafana-app-sdk@latest
grafana-app-sdk version # verify
常见工作流
搭建独立的 operator 应用
# 1. Init the project (use the Go module path)
grafana-app-sdk project init github.com/example/my-app
# 2. Add operator scaffolding — ASK THE USER FIRST.
# They may prefer to write app.App by hand.
grafana-app-sdk project component add operator
# 3. Verify scaffolded layout
ls pkg/app pkg/watchers cmd/operator
# Expected: app.go, watchers/<kind>.go, main.go
常见问题:忘记 go install 会更新二进制文件;请在初始化前通过 grafana-app-sdk version 验证。
搭建 grafana/apps 风格的应用(位于 grafana/grafana 内)
仅在 Grafana 仓库(或其 fork)内可用;init 命令会检测仓库根目录下的 apps/ 和 pkg/registry/apps/。
mkdir -p apps/my-app && cd apps/my-app
grafana-app-sdk project init github.com/grafana/grafana/apps/my-app
# Keep ONLY: kinds/ pkg/ go.mod go.sum — delete everything else.
cp apps/example/Makefile apps/my-app/Makefile
cp apps/example/kinds/config.cue apps/my-app/kinds/config.cue # overwrite
go work use ./apps/my-app
然后在 Grafana 内注册应用(pkg/registry/apps/apps.go + register.go)。完整指南请参阅 references/deployment-modes.md。
端到端开发循环
1. project init → module, Makefile, kinds/
2. project kind add MyKind → CUE kind scaffold
3. Edit kinds/*.cue → schemas, validation, versions
4. grafana-app-sdk generate → Go types, clients, TS types, AppManifest, CRDs
5. Implement logic → fill in reconciler / admission stubs
6. (optional) project component add frontend
每次修改 CUE 后都要重新运行 generate;生成的代码就是协调器所看到的 API。
部署模式(一行表格)
| 模式 | 适用场景 | 运行位置 |
|---|---|---|
| 独立 operator | 位于 Grafana 仓库之外,希望使用自己的二进制文件 | 具有独立 webhook 服务的 Kubernetes operator |
| grafana/apps | 位于 github.com/grafana/grafana 内(或其 fork) | 在 Grafana 的 API 服务进程内运行 |
| 仅前端 | 仅 UI 应用,无需 Go 逻辑 | 无后端;仅提供 TS 类型 |
各模式的初始化、运行时和接线详情请参阅 references/deployment-modes.md。
参考资料
references/deployment-modes.md— 各模式的初始化、运行时语义、grafana/apps 注册指南references/project-structure.md— 独立项目布局,以及手动编辑与自动生成的内容references/cli-reference.md—grafana-app-sdk的所有子命令及其标志references/specific-config.md— 用于由功能标志驱动的应用配置的app.Config.SpecificConfig模式references/local-development.md— 使用 Tilt + k3d 的本地开发循环references/local-config.md—local/config.yaml参考
资源
评论
支持 Markdown