关于 sealtun
Sealtun 的操作指南技能,根据用户意图选择隧道、配置或故障排查流程。面向使用 Sealtun 暴露本地服务、访问集群服务及管理隧道的用户,并区分稳定、Alpha 和弃用命令。
主要功能
- 01按意图路由到相应指南
- 02优先推荐稳定命令
- 03区分 Alpha 与弃用命令
- 04执行前检查并验证操作
- 05提供故障诊断流程
适用场景
- 01将本地开发服务公开访问
- 02配置多个隧道并检查差异
- 03排查登录、连接或证书问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gitlayzer/ sealtun --skill sealtun安装后在 Claude Code 中输入/sealtun确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/cli.mddeclarative.mdevals.mdtroubleshooting.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、受保护请求的行为 |
| 直接公开 SSH | expose 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;仅在用户请求时运行实际的 apply | apply 输出、list、inspect |
| 自定义域名 | 先运行 domain plan;仅在用户请求变更时运行 domain add --wait | domain 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 状态;试运行计划,然后验证状态 |
必需的执行流程
技能触发后,请遵循以下流程:
- 范围判定:确认请求是否涉及让本地/开发服务可通过公网访问、操作 Sealtun 隧道、排查 Sealtun 问题或使用声明式 Sealtun 配置。如果请求仅涉及通用生产部署、购买域名、仅配置 DNS、通用 Kubernetes,或不使用 Sealtun 隧道的通用 SSH,则不要强行在回答中引入 Sealtun。
- 执行前选择一种模式:
- 指导模式:用户询问如何使用 Sealtun。加载匹配的参考资料并提供命令;不要运行实时隧道/云端命令。
- 实时操作模式:用户明确要求执行、创建、应用、停止、清理或绑定域名。先运行预检,再运行所请求的命令,最后进行验证。
- 故障排查模式:用户报告问题。先运行不会修改状态的诊断,确定可能出问题的环节,然后仅在所请求操作明确时提出或执行修复。
- 收集最低限度的上下文。在此仓库中,先检查当前代码/README/QuickStart 文档,再参考其他资料。在仓库外,将参考资料作为命令来源。优先使用稳定且不会修改状态的检查,例如
sealtun --version、sealtun status、sealtun profile current、sealtun region current、sealtun list、sealtun inspect和sealtun doctor。只有在特定发现、资源或首次运行输出有用时,才使用 Alphasealtun discover、sealtun resources或sealtun init。 - 温和处理首次授权。如果
status显示未登录,请说明 Sealtun 需要 Sealos 授权和 kubeconfig 才能创建云资源。引导用户运行sealtun login,或在区域/配置文件相关时运行sealtun login <region> --profile <name>。如果打开浏览器/设备授权流程,请告知用户在浏览器中完成操作并等待;不要将等待视为失败。登录后,使用sealtun status、sealtun region current,以及可选的sealtun profile current进行验证。 - 控制有状态变更。除非用户在当前任务中明确要求相应操作,否则不要运行
sealtun up、sealtun expose、真实的sealtun apply、Alphasealtun mesh up/down、Alphasealtun mesh service publish/unpublish、Alphasealtun resources set/unset、sealtun share create/revoke、sealtun domain add/clear、sealtun stop、sealtun cleanup或sealtun logout。Alphasealtun template、Alphasealtun export、sealtun domain plan、Alphasealtun mesh status、Alphasealtun mesh service list/check、sealtun share list、apply --dry-run、diff和只读诊断都是安全的指导步骤。对于声明式变更,真实运行apply前,优先使用apply --dry-run和diff。 - 验证完成情况。实时操作后,使用以下约定进行验证,然后报告准确的命令序列和最终状态,不要打印机密信息。
验证约定
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 回退时,才使用 Alphasealtun 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停止。说明它会通过 Kubernetespods/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 建议时才使用 Alphasealtun init。说明登录凭据存储在~/.sealtun下,项目隧道状态位于.sealtun/state.json,而 profiles 适用于多个 Sealos 账户、区域或工作区。 - 修改说明时,使用仓库中的准确命令名称和标志。支持的隧道协议包括
https、专用的ssh和通用的tcp;除非仓库新增支持,否则不支持 UDP/gRPC。
回复格式
对于使用问题,给出一组简短、可执行的命令,并仅说明相关注意事项。对于故障排查,先从成本最低的本地检查开始,然后再逐步升级到远程 Kubernetes 诊断。
评论
支持 Markdown