mcpField
A
app-sdk-concepts

app-sdk-concepts

github.com/grafana开发2954.3k 次安装1 天前更新
代码仓库

关于 app-sdk-concepts

用于在 Grafana App Platform 构建以 Schema 为中心的应用的命令行工具和 Go 库。它通过 CUE Schema 定义资源并生成 Go 与 TypeScript 代码,应用逻辑由准入控制和协调器实现。

主要功能

  1. 01搭建应用项目和组件
  2. 02使用 CUE 定义资源类型
  3. 03生成 Go 和 TypeScript 代码
  4. 04实现准入控制和协调器
  5. 05支持多种部署模式

适用场景

  1. 01启动独立的 Operator 应用
  2. 02在 Grafana 仓库内构建应用
  3. 03创建仅含前端的应用
  4. 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.md
deployment-modes.md
local-config.md
local-development.md
project-structure.md
specific-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。

参考资料

资源

评论

支持 Markdown