mcpField
S
sealtun

sealtun

github.com/gitlayzer云与 DevOps7853 次安装5 周前更新
代码仓库

关于 sealtun

Sealtun 的操作指南技能,根据用户意图选择隧道、配置或故障排查流程。面向使用 Sealtun 暴露本地服务、访问集群服务及管理隧道的用户,并区分稳定、Alpha 和弃用命令。

主要功能

  1. 01按意图路由到相应指南
  2. 02优先推荐稳定命令
  3. 03区分 Alpha 与弃用命令
  4. 04执行前检查并验证操作
  5. 05提供故障诊断流程

适用场景

  1. 01将本地开发服务公开访问
  2. 02配置多个隧道并检查差异
  3. 03排查登录、连接或证书问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gitlayzer/sealtun --skill sealtun

安装后在 Claude Code 中输入/sealtun确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
cli.md
declarative.md
evals.md
troubleshooting.md

详细介绍

Sealtun

首要判断

在回答或编辑前,先对请求进行分类:

  • 用户操作:安装、Shell 补全、TUI/控制台、引导式初始化、登录、up、发现本地端口、公开 HTTPS、远程 HTTP 上游目标、SSH 或通用 TCP、使用 connect 访问集群内部的 Service/Pod、构建服务级跨区域 Mesh、生成协议模板、保护公共 HTTP 流量、查看/设置策略、审计访问、创建/列出/撤销/轮换临时分享链接、轮换服务密钥、规划/添加/验证自定义域名、检查状态、监控状态、查看或调整资源、停止/启动/恢复、清理,或导出 YAML。请阅读 references/cli.md。
  • 声明式配置:sealtun.yaml、apply -f、diff -f、export、多隧道管理、稳定名称、ttl、Pod 资源、HTTPS 访问策略、SSH 隧道声明,或通用 TCP 隧道声明。请阅读 references/declarative.md。
  • 故障排查:登录/配置文件不匹配、守护进程/会话问题、本地端口发现/故障、SSH/TCP 直连 NodePort 问题、远程 Kubernetes 问题、资源列表/资源占用、DNS、Ingress、证书、日志、指标或事件。请阅读 references/troubleshooting.md。
  • 技能维护或质量审查:此技能的触发精度、工作流评分或回归提示词。请阅读 references/evals.md。

如果请求涉及 Sealtun 仓库,且这些参考资料与当前源代码树、README 和 QuickStart 文档冲突,应优先采用后者。更改 CLI 使用说明前,请使用 rg 检查 Cobra 命令和标志。

稳定性路由

  • 日常指导和自动化优先使用 Stable 命令。
  • 当前的 Alpha 入口包括 init、tui/console、connect、mesh、ssh connect,以及独立的 discover、template、export、events、metrics、resources 和 watch 命令。这些命令的功能仍然可用,但其接口可能会更改或移除,且不保证向后兼容。推荐 Alpha 方案前,请简要说明这一点。
  • repair、domain set 和顶层 disconnect 是已弃用的兼容命令。不要建议新用户使用;请改用 doctor <id> --fix、domain add 和 connect disconnect。
  • Alpha 并不意味着功能有缺陷或不完整。如果某项 Alpha 功能能独特地满足用户的明确请求,则可使用该功能,并遵循与 Stable 功能相同的预检、变更和验证规则。

意图路由

根据用户意图选择最短的安全路径:

用户意图主要路径验证方式
将本地 Web 应用、开发服务器、回调、预览或 Webhook 公开交互式或开发用途使用 status -> up;脚本使用 expose <port>输出中的 URL、list --check、inspect <id>
从交互式终端管理隧道Alpha tui 或 console说明 Alpha 状态;所选隧道状态、已确认的操作结果、list --check
将可从此机器访问的 HTTP 服务公开开发用途使用 status -> up --target http://host:port;脚本使用 expose --target输出中的 URL、inspect <id>、受保护请求的行为
添加 Basic Auth、Bearer 令牌、IP 规则、速率限制、审计或临时链接HTTPS expose、policy、share 或 YAML 访问策略inspect <id>、policy show/audit、受保护请求的行为
直接公开 SSHexpose 22 --protocol ssh输出的 SSH 主机/端口、inspect <id> --remote、用户的 SSH 客户端输出
公开数据库、队列、MQTT 或任意 TCP 服务使用 Alpha template <protocol> 获取指引,然后使用稳定版 expose <port> --protocol tcp说明模板功能的 Alpha 状态;输出的 <host>:<node-port>、协议客户端、list --check
从本地工具访问当前 Sealos 命名空间内的 Service/Pod使用 Alpha connect --check,然后使用 Linux sudo sealtun connect说明 Alpha 状态;Service FQDN、ClusterIP 或 Pod IP 的 TCP 访问;无需 SOCKS/代理配置
跨 Sealos 区域导入 Kubernetes Service使用 Alpha mesh init、mesh login、mesh up,然后使用 mesh service publish/check说明 Alpha 状态;已导入的 mesh-<name> ClusterIP Service 和 mesh service check
管理大量隧道或稳定配置编辑 sealtun.yaml,然后运行 apply --dry-run、diff;仅在用户请求时运行实际的 applyapply 输出、list、inspect
自定义域名先运行 domain plan;仅在用户请求变更时运行 domain add --waitdomain verify/status、DNS CNAME、证书状态
调整隧道 Pod 资源先运行 Alpha resources <id>,然后在用户请求时运行 resources set 或配置 YAML resources说明 Alpha 状态;resources <id>、滚动更新/启动行为
排查连接问题或不明确的状态先运行稳定版检查:status、list --check、inspect、doctor、logs;仅在需要时使用 Alpha resources/events/metrics使用 Alpha 功能时说明其状态;按层定位的问题及后续操作
监视或修复隧道状态使用 Alpha watch 监视状态变化;执行前先运行稳定版 doctor <id> --fix --dry-run说明 watch 的 Alpha 状态;试运行计划,然后验证状态

必需的执行流程

技能触发后,请遵循以下流程:

  1. 范围判定:确认请求是否涉及让本地/开发服务可通过公网访问、操作 Sealtun 隧道、排查 Sealtun 问题或使用声明式 Sealtun 配置。如果请求仅涉及通用生产部署、购买域名、仅配置 DNS、通用 Kubernetes,或不使用 Sealtun 隧道的通用 SSH,则不要强行在回答中引入 Sealtun。
  2. 执行前选择一种模式:
    • 指导模式:用户询问如何使用 Sealtun。加载匹配的参考资料并提供命令;不要运行实时隧道/云端命令。
    • 实时操作模式:用户明确要求执行、创建、应用、停止、清理或绑定域名。先运行预检,再运行所请求的命令,最后进行验证。
    • 故障排查模式:用户报告问题。先运行不会修改状态的诊断,确定可能出问题的环节,然后仅在所请求操作明确时提出或执行修复。
  3. 收集最低限度的上下文。在此仓库中,先检查当前代码/README/QuickStart 文档,再参考其他资料。在仓库外,将参考资料作为命令来源。优先使用稳定且不会修改状态的检查,例如 sealtun --version、sealtun status、sealtun profile current、sealtun region current、sealtun list、sealtun inspect 和 sealtun doctor。只有在特定发现、资源或首次运行输出有用时,才使用 Alpha sealtun discover、sealtun resources 或 sealtun init。
  4. 温和处理首次授权。如果 status 显示未登录,请说明 Sealtun 需要 Sealos 授权和 kubeconfig 才能创建云资源。引导用户运行 sealtun login,或在区域/配置文件相关时运行 sealtun login <region> --profile <name>。如果打开浏览器/设备授权流程,请告知用户在浏览器中完成操作并等待;不要将等待视为失败。登录后,使用 sealtun status、sealtun region current,以及可选的 sealtun profile current 进行验证。
  5. 控制有状态变更。除非用户在当前任务中明确要求相应操作,否则不要运行 sealtun up、sealtun expose、真实的 sealtun apply、Alpha sealtun mesh up/down、Alpha sealtun mesh service publish/unpublish、Alpha sealtun resources set/unset、sealtun share create/revoke、sealtun domain add/clear、sealtun stop、sealtun cleanup 或 sealtun logout。Alpha sealtun template、Alpha sealtun export、sealtun domain plan、Alpha sealtun mesh status、Alpha sealtun mesh service list/check、sealtun share list、apply --dry-run、diff 和只读诊断都是安全的指导步骤。对于声明式变更,真实运行 apply 前,优先使用 apply --dry-run 和 diff。
  6. 验证完成情况。实时操作后,使用以下约定进行验证,然后报告准确的命令序列和最终状态,不要打印机密信息。

验证约定

  • up/expose:记录隧道 ID、公共端点和特定协议的输出;使用 sealtun list --check 和 sealtun inspect <tunnel-id> 验证。对于 up,说明是否复用了 .sealtun/state.json、选择了发现的端口,或使用了显式端口/目标输入。
  • apply:先运行或建议运行 apply --dry-run 和 diff;实际执行 apply 后,使用 list 和 inspect 验证每条预期隧道。
  • domain add/clear:使用 domain status 或 domain verify 验证;对于 add --wait,分别报告 DNS/CNAME 和证书就绪情况。仅将 domain set 视为已弃用的别名。
  • share create/revoke/rotate:使用 share list 验证;除非一次性共享令牌是该命令的直接输出,否则绝不重复提供。
  • stop/start/cleanup:使用 list 或 inspect 验证;请记住,stop 会保留条目资源,而 cleanup 会移除已停止、已过期、过时或处于错误状态的隧道资源。
  • Alpha resources set/unset:说明其稳定性状态,并使用 resources <id> 验证;停止的隧道仍保持缩放到 0,同时更新其 Deployment 模板。
  • Alpha mesh:说明其稳定性状态,然后验证 mesh auth status、mesh status 和 mesh service check <name> --from <region>;解释 Mesh v1 是服务级 HTTP/TCP 导入,不是透明的 Pod IP/CNI 路由。
  • 故障排除:提出变更前,先指出故障所在层:本地登录/配置文件、本地端口、守护进程/会话、远程资源、DNS/证书、访问策略,或用户协议/身份验证。用户需要经过脱敏的支持材料时,使用 doctor <id> --report。

操作规则

  • 不要在最终答复、日志、提交或生成的文档中暴露用户机密。除非用户明确要求提供一次性内联示例,否则密码和令牌优先使用 *Env 字段和环境变量。
  • 说明 Sealtun 公共访问控制由 Sealtun 服务代理层执行,而非 Ingress 注解。这些控制保护 HTTPS 公共业务流量,包括 --target 上游流量,但不保护内部 /_sealtun/ws 控制通道,也不保护 SSH/TCP 直接 NodePort 流量。
  • 对于 SSH 暴露,若所在区域支持公共 TCP NodePort,优先使用稳定的 sealtun expose 22 --protocol ssh。只有在需要通过 WebSocket ProxyCommand 回退时,才使用 Alpha sealtun ssh connect <tunnel-id>,并说明其稳定性。
  • 对于通用 TCP 暴露,优先使用 sealtun expose <port> --protocol tcp,并报告生成的 <public-host>:<node-port> 端点。
  • 对于声明式操作,在条件允许时,实际应用配置前先运行或建议运行 sealtun apply -f sealtun.yaml --dry-run 和 sealtun diff -f sealtun.yaml。
  • 对于 HTTPS 策略操作,使用 policy show、policy set --rate-limit 60/m --audit 和 policy audit --since 10m;审计输出不得包含明文令牌、Authorization 标头或 Basic Auth 密码。
  • 对于临时分享链接,仅对 HTTPS 隧道使用 sealtun share create <tunnel-id> --ttl 1h --name review;告知用户 URL 只会显示一次,因为 Sealtun 只存储令牌哈希。使用 share rotate 使旧令牌失效并打印新的单次 URL,使用 share list 查看元数据,使用 share revoke 按名称撤销。
  • 对于服务端密钥轮换,使用 sealtun rotate <tunnel-id> --server-secret;说明新密钥只会输出一次,且 SSH/TCP 访问策略保持不变。
  • 对于 Alpha 配置导出,说明其稳定性,并使用 sealtun export <tunnel-id> 或 sealtun export --all -o sealtun.yaml。说明无法恢复已存储的密码/令牌哈希;--include-secret-placeholders 会输出环境变量占位符。
  • 对于 Alpha 集群内部访问,说明其稳定性,先使用 sealtun connect --check,然后在 Linux 上运行 sudo sealtun connect;使用 sudo sealtun connect disconnect 停止。说明它会通过 Kubernetes pods/portforward 透明地重定向 TCP Service FQDN、Service ClusterIP 和 Pod IP 流量;它不是 SOCKS/HTTP 代理配置,也不支持 ICMP/ping 或 UDP。
  • 对于 Alpha 跨区域 Mesh,说明其稳定性,然后使用 sealtun mesh init --regions ...、mesh login、mesh up 和 mesh service publish <name> --from <region> --k8s-service <namespace>/<service>:<port> --import ...。说明它会在每个区域创建一个网关,并在其他区域将 Services 导入为 mesh-<name> ClusterIP Services。
  • 对于首次使用的用户,优先提供清晰的操作路径:安装、sealtun login,然后使用稳定的 sealtun up 进行交互式本地开发,或使用 sealtun expose 精确创建隧道。仅当用户需要只读命令/YAML 建议时才使用 Alpha sealtun init。说明登录凭据存储在 ~/.sealtun 下,项目隧道状态位于 .sealtun/state.json,而 profiles 适用于多个 Sealos 账户、区域或工作区。
  • 修改说明时,使用仓库中的准确命令名称和标志。支持的隧道协议包括 https、专用的 ssh 和通用的 tcp;除非仓库新增支持,否则不支持 UDP/gRPC。

回复格式

对于使用问题,给出一组简短、可执行的命令,并仅说明相关注意事项。对于故障排查,先从成本最低的本地检查开始,然后再逐步升级到远程 Kubernetes 诊断。

评论

支持 Markdown