SuperAPI AI 工具集

docker-to-sealos

部署与运维

查看项目

更新于 10-16 02:06

技能介绍

用途

docker-to-sealos 用于把 Docker Compose 文件或安装文档转换为生产级的 Sealos 模板。当用户已有 docker-compose.yml 并希望得到 Sealos 模板时使用。该技能会端到端自动执行分析、转换、校验与输出,不向用户询问缺失字段。

主要能力

  • 从 Docker Compose 或文档中提取:应用服务与数据库服务、卷/配置挂载/对象存储需求、端口与依赖及服务通信、环境变量与密钥使用、资源限制/请求与健康检查;若存在官方 Kubernetes 安装文档或清单,还会从中提取应用运行时行为(如引导管理员字段、外部端点/协议假设、健康探针、启动/初始化流程)。
  • 推断并规范化元数据:应用名称、标题、描述、分类、官方 URL、gitRepo、图标来源、locale/i18n 元数据。
  • 按严格顺序规划资源:Template CR → ObjectStorageBucket(如需要)→ 数据库资源(ServiceAccount → Role → RoleBinding → Cluster → Job 如需要)→ 应用工作负载资源(ConfigMap/Secret → Deployment/StatefulSet → Service → Ingress)→ App 资源(最后)。
  • 应用字段级转换规则,包括镜像固定与注解映射、端口/服务/Ingress 转换、环境变量转换与依赖排序、存储转换与 vn 命名、服务名到 Kubernetes FQDN 转换、数据库 URL/DSN 环境变量的 host/port/username/password 注入与 $(VAR) 展开组合、边缘网关归一化、Sealos Ingress 的 TLS 卸载归一化等。
  • 数据库策略:PostgreSQL 遵循固定版本与结构要求;MySQL/MongoDB/Redis/Kafka 使用指定模板与密钥命名;按需添加数据库初始化 Job/initContainer;PostgreSQL 自定义数据库的初始化 Job 需等待就绪并幂等创建。
  • 输出固定文件:template/<app-name>/index.yaml,以及在可解析官方图标时输出 template/<app-name>/logo.<ext>。
  • 输出前运行校验器与自测,校验失败先修复模板/规则/示例。

使用方式

该技能以 SKILL.md 规则文件为核心,配合 references 目录下的规范、映射、数据库模板、示例指南、规则注册表与 MUST 规则映射等参考文件,以及 scripts 目录下的脚本工具使用。

脚本工具包括:

  • scripts/path_converter.py:将路径转换为 vn 名称,支持自测。
  • scripts/compose_to_template.py:确定性的 compose/文档到模板生成入口,支持 --kompose-mode auto|always|never(默认 always),输出 template/<app-name>/index.yaml。
  • scripts/test_compose_to_template.py:compose 转换行为的回归测试。
  • scripts/check_consistency.py:注册表驱动的一致性校验器。
  • scripts/test_check_consistency.py:校验器行为的回归测试。
  • scripts/check_must_coverage.py:校验 MUST 条目覆盖映射与注册表规则。
  • scripts/test_check_must_coverage.py:MUST 覆盖校验器的回归测试。

校验命令包括:

  • python scripts/path_converter.py --self-test
  • python scripts/test_check_consistency.py
  • python scripts/test_compose_to_template.py
  • python scripts/test_check_must_coverage.py
  • python scripts/check_consistency.py --skill SKILL.md --references references --rules-file references/rules-registry.yaml
  • python scripts/check_consistency.py --skill SKILL.md --references references --rules-file references/rules-registry.yaml --artifacts template/<app-name>/index.yaml
  • python scripts/check_must_coverage.py --skill SKILL.md --mapping references/must-rules-map.yaml --rules-file references/rules-registry.yaml
  • (CI/一次性)python scripts/quality_gate.py(默认要求 template/*/index.yaml;仅在无产物的开发/调试时设置 DOCKER_TO_SEALOS_ALLOW_EMPTY_ARTIFACTS=1)

转换完成后需提供:简要转换摘要、目标文件路径(template/<app-name>/index.yaml)、完整模板 YAML、仅在存在歧义时说明关键决策。

适用场景

  • 用户已有 docker-compose.yml,希望生成 Sealos 模板。
  • 用户提供安装文档,希望转换为生产级 Sealos 模板。
  • 需要将 Compose 中的数据库服务按指定版本与结构转换为 Sealos 数据库资源。
  • 需要将 Compose 中的边缘代理(如 Traefik)归一化为 Sealos Ingress 直连业务服务。
  • 需要将双端口 HTTP/HTTPS 工作负载的 TLS 终止统一到 Sealos Ingress。
  • 项目涉及 Frappe、ERPNext、HRMS 或 bench 时,需加载 references/frappe-bench.md 后再生成应用工作负载。

限制

  • 不向用户询问缺失字段,缺失信息从 compose/文档与平台约定推断。
  • 不使用 :latest,避免浮动标签,镜像引用必须具体且不含 Compose 风格变量表达式。
  • 不使用 emptyDir,需要存储时使用持久化存储模式(volumeClaimTemplates)。
  • 业务容器不得使用自定义 env/volume Secret 引用,仅允许批准的 Kubeblocks 数据库密钥与对象存储密钥;应用级镜像拉取 Secret 仅通过 template.spec.imagePullSecrets 引用。
  • 保留的 Kubeblocks 数据库密钥名称不得被自定义 Secret 资源重定义。
  • App 资源必须使用 spec.data.url,spec.displayType 为 normal,spec.type 为 link,不得使用 spec.template。
  • 分类只能使用预定义值(tool、ai、game、database、low-code、monitor、dev-ops、blog、storage、frontend、backend)。
  • 若官方 Kubernetes 文档/清单与 Compose 冲突,优先采用官方 Kubernetes 运行时语义,除非违反更高优先级的 Sealos MUST/安全约束。
  • 具体收费、价格、平台支持范围等未在资料中提供。