
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本工具是一款基于文件驱动的自动化管理程序,用于监控指定文件夹下的命令文件。当检测到新增或更新的命令文件时,程序将解析文件内容并执行其中定义的HTTP命令(主要针对eKuiper流处理引擎),执行完成后将文件信息记录至历史文件(.history)中,避免重复处理。
.history文件,记录已处理的命令文件名及时间戳程序通过YAML格式的配置文件进行参数设置,示例及参数说明如下:
yamlport: 9081 # eKuiper服务端口 timeout: 500 # 命令执行超时时间(单位:毫秒) intervalTime: 60 # 文件夹检查间隔(单位:秒) ip: "127.0.0.1" # eKuiper服务IP地址 logPath: "./log/kubernetes.log" # 日志文件保存路径 commandDir: "./sample/" # 命令文件所在目录路径
| 参数名 | 类型 | 描述 | 默认值示例 |
|---|---|---|---|
| port | int | eKuiper服务端口 | 9081 |
| timeout | int | 命令执行超时时间(毫秒) | 500 |
| intervalTime | int | 文件夹检查间隔(秒) | 60 |
| ip | string | eKuiper服务IP地址 | "127.0.0.1" |
| logPath | string | 日志文件保存路径 | "./log/kubernetes.log" |
| commandDir | string | 命令文件监控目录路径 | "./sample/" |
命令文件为JSON格式,用于定义待执行的HTTP请求集合。文件需放置在commandDir配置指定的目录下,程序将自动监控并处理。
4.2.1 字段说明
| 字段名 | 是否必填 | 类型 | 描述 |
|---|---|---|---|
| commands | 否 | array | HTTP命令集合,每个元素为一个请求 |
| url | 否 | string | HTTP请求路径(相对于eKuiper IP:Port) |
| method | 否 | string | HTTP请求方法(post/get/delete/put等) |
| description | 是 | string | 操作描述(可选,用于日志记录) |
| data | 否 | json object | 请求体数据(创建操作时必填) |
4.2.2 命令文件示例
单个命令文件可包含一个或多个HTTP请求,示例如下:
json{ "commands": [ { "url": "/streams", "description": "创建stream1", "method": "post", "data": { "sql": "create stream stream1 (id bigint, name string) WITH (datasource = \"topic/temp\", FORMAT = \"json\");" } }, { "url": "/streams/stream1", "description": "查询stream1", "method": "get" } ] }
通过以下命令编译生成可执行文件:
bashgo build -o tools/kubernetes/kuiper-kubernetes-tool tools/kubernetes/main.go
编译后生成的可执行文件路径:tools/kubernetes/kuiper-kubernetes-tool
准备配置文件
创建config.yaml,配置eKuiper连接信息、监控目录等参数(详见4.1节)。
准备命令文件
在commandDir目录下创建JSON格式的命令文件(详见4.2节)。
启动程序
执行编译后的可执行文件,程序将自动加载配置并开始监控命令目录:
bash./kuiper-kubernetes-tool # 需与config.yaml在同一目录,或通过参数指定配置文件路径
查看结果
logPath配置的日志文件.history文件,记录处理记录5.4.1 Dockerfile示例
dockerfile# 编译阶段 FROM golang:1.18-alpine AS builder WORKDIR /app COPY . . RUN go mod download RUN go build -o kuiper-kubernetes-tool tools/kubernetes/main.go # 运行阶段 FROM alpine:3.16 WORKDIR /app COPY --from=builder /app/kuiper-kubernetes-tool . COPY config.yaml . # 复制配置文件(或通过挂载外部配置) # 创建命令目录和日志目录 RUN mkdir -p /app/commands /app/log # 运行程序 CMD ["./kuiper-kubernetes-tool"]
5.4.2 Docker Run命令
bashdocker run -d \ --name kuiper-tool \ -v /host/config.yaml:/app/config.yaml \ # 挂载外部配置文件 -v /host/commands:/app/commands \ # 挂载命令文件目录(需与config.yaml中commandDir一致) -v /host/log:/app/log \ # 挂载日志目录(需与config.yaml中logPath一致) kuiper-kubernetes-tool:latest
5.4.3 Docker Compose配置
yamlversion: "3" services: kuiper-tool: build: . volumes: - ./config.yaml:/app/config.yaml - ./commands:/app/commands - ./log:/app/log restart: always environment: - EKUIPER_IP=192.168.1.100 # 可通过环境变量覆盖配置文件中的eKuiper IP(需程序支持环境变量注入)
5.5.1 流(Stream)操作示例
创建流
json{ "commands": [ { "url": "/streams", "description": "创建stream1", "method": "post", "data": { "sql": "create stream stream1 (id bigint, name string, score float) WITH (datasource = \"topic/temperature\", FORMAT = \"json\", KEY = \"id\");" } } ] }
查询流列表
json{ "commands": [ { "url": "/streams", "description": "查询所有流", "method": "get" } ] }
查询指定流
json{ "commands": [ { "url": "/streams/stream1", "description": "查询stream1详情", "method": "get" } ] }
删除流
json{ "commands": [ { "url": "/streams/stream1", "description": "删除stream1", "method": "delete" } ] }
5.5.2 规则(Rule)操作示例
创建规则
json{ "commands": [ { "url": "/rules", "description": "创建rule1", "method": "post", "data": { "id": "rule1", "sql": "SELECT * FROM stream1", "actions": [{"log": {}}] } } ] }
启停规则
json{ "commands": [ { "url": "/rules/rule1/stop", "description": "停止rule1", "method": "post" }, { "url": "/rules/rule1/start", "description": "启动rule1", "method": "post" } ] }
查询规则状态
json{ "commands": [ { "url": "/rules/rule1/status", "description": "查询rule1状态", "method": "get" } ] }
5.5.3 多命令集示例
单个命令文件可按顺序执行多个关联操作,示例如下:
json{ "commands": [ { "url": "/streams", "description": "创建stream1", "method": "post", "data": { "sql": "create stream stream1 (id bigint) WITH (datasource = \"topic/temp\");" } }, { "url": "/rules", "description": "创建rule1", "method": "post", "data": { "id": "rule1", "sql": "SELECT * FROM stream1", "actions": [{"log": {}}] } }, { "url": "/rules/rule1/start", "description": "启动rule1", "method": "post" } ] }
程序处理命令文件后,会在命令文件所在目录(commandDir)生成.history文件,记录已处理的文件信息,格式如下:
json[ { "name": "sample.json", // 已处理的命令文件名 "loadTime": 1594362344 // 处理时间戳(Unix时间,秒级) } ]
说明:
.history文件用于避免重复处理同一命令文件.history中对应记录或修改文件名commandDir目录需提前创建,且程序需有读写权限logPath、commandDir)若为相对路径,需相对于程序运行目录您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务