siliconflow/dsh-k8s-yaml-converter
JavaScript
Captured source
source ↗siliconflow/dsh-k8s-yaml-converter
Description: DeepSeek Harness bundle for converting Kubernetes YAML and managing SiliconFlow FaaS
Language: JavaScript
Stars: 0
Forks: 0
Open issues: 0
Created: 2026-09-01T04:53:24Z
Pushed: 2026-09-01T04:53:46Z
Default branch: main
Fork: no
Archived: no
README:
DSH Kubernetes YAML Converter
这是一个可安装的 DeepSeek Harness bundle。它注册六个工具并提供 Web 管理面板:
convert_k8s_to_siliconflow:把标准 Kubernetes 多文档 YAML 转成产品自定义模板消费的gateway + entrypointService + additionalServicesYAML。siliconflow_faas_validate_access:只读验证组织别名对应的 API Key 是否具备 FaaS 权限。siliconflow_faas_create:创建或复用 Function、上传 Definition、渲染,并在提供region时创建 Deployment。siliconflow_faas_update:明确更新已有functionId,创建新的 Definition 版本,并可在指定区域立即部署。siliconflow_faas_inspect:查询合法区域、Function、Definition、Deployment、运行状态、容器和日志。siliconflow_faas_stop_deployment:停止测试完成或不再需要的 Deployment。
创建 Deployment 前会验证区域;创建后会轮询直到 ready、明确失败状态或超时,不再把“已获得 Deployment ID”误报为“服务已就绪”。
Web 端左下角会出现 ƒ FaaS 按钮。面板与 OSS 插件共用相同的遮罩、卡片、header/body 间距、按钮、确认框和暗色主题变量;支持组织切换、权限状态、区域与 Function/Deployment 列表、状态刷新、停止 Deployment,以及粘贴标准 Kubernetes YAML。创建页可切换“新建云函数”和“更新已有云函数”:更新模式选择已有 Function 后写入新的 Definition 版本,选择 region 时继续创建 Deployment,不选 region 时只更新 Definition。API Key 始终只在 Host 侧解析,不发送到浏览器。
Function 状态与 Deployment 状态是两个层级:Function 即使从未部署也有自身状态;没有 Deployment 时不存在 Pod/运行态可查。面板会始终展示 Function 状态并明确说明这一点。siliconflow_faas_inspect 的 deployment_status 可省略 deploymentId 自动查询最新部署;若 Function 从未部署,则返回 Function 状态和说明,而不是参数错误。
安装
在 DSH 源码目录旁直接安装本地 checkout:
pnpm dsh plugin --profile web add ../dsh-k8s-yaml-converter
重启 DSH 后可直接说:“把 /absolute/path/deployment.yaml 转成 SiliconFlow 自定义 YAML”。
凭据与多组织
默认组织别名为 faas。生产 API 为 https://function.6scloud.com/api/v1。所有 FaaS 请求都带组织自己的 X-Subject-Id。Key 由 DSH 的 credentials provider 在每次调用时按 apiKeyRef 解析,不进入工具参数或会话日志。可以使用同名环境变量,也可以通过 DSH 的本地凭据管理保存该引用。不要把真实 Key 写入 cordis.patch.yml、.env.example 或 Git。
bundle 只预置已验证可用的组织别名 faas(主体 ID d29cs9gh3vvc73c59kb0,凭据引用 SILICONFLOW_FAAS_D29_KEY)。创建工具会先预检,权限不足时停止且不会创建资源。
默认自定义模板为发布模板 siliconflow/fabric(展示名“自定义云函数”),因此普通创建不需要再填写 templateName;仍可用参数覆盖。
要管理多个组织,在 profile 的 cordis.patch.yml 中覆盖插件整段配置,为每个组织使用不同的凭据引用:
- id: k8s-yaml-converter name: dsh-k8s-yaml-converter config: defaultOrganization: team-a organizations: team-a: baseUrl: https://function.6scloud.com/api/v1 publicApiBaseUrl: https://api.siliconflow.cn/v1 subjectId: team-a-subject-id-without-sft-prefix apiKeyRef: SILICONFLOW_FAAS_TEAM_A_KEY team-b: baseUrl: https://function.6scloud.com/api/v1 publicApiBaseUrl: https://api.siliconflow.cn/v1 subjectId: team-b-subject-id-without-sft-prefix apiKeyRef: SILICONFLOW_FAAS_TEAM_B_KEY outputSuffix: .dsh.yaml defaultTemplateName: siliconflow/fabric defaultConcurrencyLimit: 1 workloadType: general recommendInstanceTypes: [nvidia.rtx4090.g1.amd64] defaultWaitForReadySeconds: 120 deploymentPollIntervalMs: 5000
转换规则
Deployment转为replicaSet,StatefulSet转为statefulSet。- 匹配入口 workload 的
Service.targetPort转为gateway.entrypointPort;单 workload 自动成为入口,多 workload 使用entrypoint参数或dsh.siliconflow.cn/entrypoint: "true"annotation。 - 第一个容器为主容器;可用
dsh.siliconflow.cn/main-containerannotation 指定,其他容器成为 sidecar。 - 转换端口、command、args、常量 env、HTTP probes、Prometheus annotations、PVC/emptyDir mounts 和可表达的 HPA 指标/行为。
- Deployment/HPA 副本数保留为 API 部署提示,在创建
SiliconFunctionDeployment时使用。
限制
目标格式不能表达 Secret/ConfigMap valueFrom、envFrom、init containers、imagePullSecrets、lifecycle hooks、非 HTTP probes、requests/limits、ConfigMap/Secret volumes 等 Kubernetes 语义。插件会明确返回 warning 并省略这些字段。疑似 Token、Password、Secret 或 API Key 的明文 env 会被保留以符合输入意图,同时产生高可见 warning;源文件和生成文件都必须按凭据文件保护。服务名与容器名必须满足目标格式的 1–32 字符限制。
API 创建默认使用 siliconflow/fabric,也支持传入其他完整模板名 subjectId/name。创建线上资源前,先调用 siliconflow_faas_validate_access;siliconflow_faas_create 是外部写操作,失败发生在 Function 创建之后时会在错误中返回已创建的 Function ID,便于继续或清理。
Notability
notability 3.0/10Routine utility repo, no traction yet