RepoSiliconFlowSiliconFlowpublished Sep 1, 2026seen 1w

siliconflow/dsh-k8s-yaml-converter

JavaScript

Open original ↗

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 + additionalServices YAML。
  • 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_inspectdeployment_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 转为 replicaSetStatefulSet 转为 statefulSet
  • 匹配入口 workload 的 Service.targetPort 转为 gateway.entrypointPort;单 workload 自动成为入口,多 workload 使用 entrypoint 参数或 dsh.siliconflow.cn/entrypoint: "true" annotation。
  • 第一个容器为主容器;可用 dsh.siliconflow.cn/main-container annotation 指定,其他容器成为 sidecar。
  • 转换端口、command、args、常量 env、HTTP probes、Prometheus annotations、PVC/emptyDir mounts 和可表达的 HPA 指标/行为。
  • Deployment/HPA 副本数保留为 API 部署提示,在创建 SiliconFunctionDeployment 时使用。

限制

目标格式不能表达 Secret/ConfigMap valueFromenvFrom、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_accesssiliconflow_faas_create 是外部写操作,失败发生在 Function 创建之后时会在错误中返回已创建的 Function ID,便于继续或清理。

Notability

notability 3.0/10

Routine utility repo, no traction yet