首页龙虾技能列表 › Alibabacloud Nginx Ingress To Api Gateway — alibabacloud-nginx-ingress-to-api-gateway — Nginx Ingress 迁移至 APIG

Alibabacloud Nginx Ingress To Api Gateway — alibabacloud-nginx-ingress-to-api-gateway — Nginx Ingress 迁移至 APIG

v0.0.1

阿里云 APIG 迁移技能。将 Kubernetes nginx Ingress 资源迁移至阿里云 API Gateway(APIG,ingressClass: apig)。用户提供 Ingress YAML(粘贴、文件或目录)即可完成离线分析,无需集群访问。涵盖注解兼容性分类、Higress 原生映射、内置插件选择、自定义 WasmPlugin 开发、迁移后 YAML 生成及包含部署指南的完整迁移报告。

0· 59·0 当前·0 累计
by @sdk-team (alibabacloud-skills-team)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/31
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
该技能基本符合其声明的用途(nginx Ingress YAML 离线迁移至阿里云 APIG),但存在内部不一致性和一些值得在安装或自主调用前谨慎考虑的操作选择。
评估建议
该技能似乎实现了其声称的功能(离线迁移和 WasmPlugin 脚手架),但使用前建议审查: - 预期 Agent 会读取您提供的任何 YAML 文件(包括扫描目录)。请勿将其指向包含密钥或您不希望被读取的配置的目录。 - 技能将生成带有占位符(<REGION>, <YOUR_REGISTRY>)的迁移后 Ingress YAML,并建议不提示输入 region/registry — 您必须在部署前手动替换这些占位符。 - 部分参考文档提到 kubectl 自动检测 region;SKILL.md 禁止提示或预检查。请确认是否希望 Agent 运行集群命令(默认情况下不应运行)。如果允许集群访问,请考虑提供明确的有限凭证和明确同意。 - 技能包含用于构建/推送 Wasm 插件镜像的脚本和 Go/Docker 脚手架。构建/推送需要本地工具和 registry 凭证;技能不会请求这些,但可能会指导您如何运行。在安全环境中检查生成的插件代码和 Dockerfile 之前,请勿运行构建/推送命令。 - 如果计划让 Agent 自主运行,建议限制为仅分析模式(无 build/push 或 ku...
详细分析 ▾
用途与能力
名称/描述与包含的脚本和参考文档(注解分类、生成迁移后 Ingress YAML、脚手架 WasmPlugin)一致。也就是说,部分参考文件(platform-oci-registry.md)包含 kubectl 自动检测命令和 registry 查询逻辑,这与 SKILL.md 声称的工作流完全离线且无需集群访问或 CLI 的说法部分矛盾。build/push 指令和插件脚手架的存在与迁移目的相称,但 kubectl 提及是一个未经解释的异常值。
指令范围
SKILL.md 指示 Agent 接受粘贴的 YAML、文件路径或目录路径,并立即运行完整分析/工作流,无需提示输入 region/registry。接受目录路径意味着 Agent 将读取该目录中的任何 .yml/.yaml 文件 — 这对迁移来说是预期的,但是一个重要的文件读取范围,应向用户明确说明。此外,部分包含的文档显示命令(kubectl)并建议自动检测 region;SKILL.md 明确禁止提示 region 或运行外部检查 — 这种分歧是一个范围不一致性,如果 Agent 遵循其他文档,可能会导致 Agent 困惑或采取意外操作。
安装机制
无安装规范(仅指令 + 辅助脚本)。技能清单本身不会自动下载或安装任何东西,这降低了风险。包含的脚本和 Go/Docker 构建指南是本地的,与 Wasm 插件的离线生成一致。
凭证需求
技能声明无需环境变量、凭证或配置路径。这与声明的离线分析行为一致。参考文档显示 OCI registry URL 和将镜像推送到 registry 的说明,但技能指示使用占位符(例如 <REGION>, <YOUR_REGISTRY>)而不是请求或使用凭证 — 只要 Agent 不会自行尝试推送镜像或调用云 API,这是相称的。
持久化与权限
技能未标记 always:true 且不请求持久/特权存在。它未声明任何修改其他技能或系统范围设置的能力。允许自主模型调用(平台默认) — 只有在您接受 Agent 无需额外确认即可行动时,才可结合「立即执行」的指令。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv0.0.12026/3/31

阿里云 Nginx Ingress 至 API Gateway 迁移技能首次发布。 - 支持将 Kubernetes nginx Ingress YAML 离线迁移至阿里云 API Gateway(APIG)格式。 - 自动将所有 nginx.ingress.kubernetes.io/* 注解分类为 Compatible、Ignorable 或 Unsupported,并使用决策树解析 Unsupported 注解(Higress 原生、安全可丢弃、内置插件或自定义 WasmPlugin)。 - 生成迁移后的 Ingress YAML 和包含部署指南的完整迁移报告 — 无需集群/云访问。 - 接受粘贴的 YAML、文件或目录作为输入(无需云凭证或 CLI)。 - 引导用户在未提供输入时提供 YAML 以进行迁移。

● 无害

安装命令 点击复制

官方npx clawhub@latest install alibabacloud-nginx-ingress-to-api-gateway
镜像加速npx clawhub@latest install alibabacloud-nginx-ingress-to-api-gateway --registry https://cn.clawhub-mirror.com

技能文档

场景描述

将 Kubernetes nginx Ingress 资源迁移至阿里云 API Gateway(APIG)。APIG 是一个基于 Envoy 的网关(Higress),使用 ingressClassName: apig。该技能将每个 nginx.ingress.kubernetes.io/ 注解分类为 Compatible / Ignorable / Unsupported,通过四级决策树解析不支持的注解(Higress 原生 → 安全可丢弃 → 内置插件 → 自定义 WasmPlugin),生成迁移后的 Ingress YAML,并生成可直接部署的迁移报告。

架构: nginx Ingress Controller → APIG (Envoy/Higress) + optional WasmPlugin (Go, proxy-wasm-go-sdk)

核心分析工作流完全在用户提供的 YAML 上离线运行 — 无需集群访问、CLI 工具或云凭证。

安装

此技能完全在用户提供的 YAML 上离线运行。无需 CLI 工具、SDK 或云凭证。

按需工具(仅在工作流到达需要它们的步骤时):

工具何时需要检查命令最低版本
jq基于脚本的离线分析jq --version>= 1.6
python3 + PyYAMLYAML 解析(yq 的替代方案)python3 -c "import yaml; print(yaml.__version__)"python3 >= 3.8, PyYAML >= 5.0
yqYAML 解析(python3+PyYAML 的替代方案)yq --version>= 4.0
Go步骤 3 判定需要自定义 WasmPlugingo version>= 1.24
Docker自定义 WasmPlugin 需要构建为 OCI 镜像docker version
在分析期间,请勿预检查或提示安装任何工具。

环境变量

无需环境变量。此技能不调用任何云 API 或 CLI 工具。

认证

不适用。此技能不调用阿里云 API 或 CLI。不需要凭证。

RAM 策略

不适用。此技能完全在本地 YAML 文件上运行,不调用任何云 API。

参数确认

此技能仅执行分析和代码生成 — 不执行任何部署或集群写入操作。
>
当用户提供 Ingress YAML 时,立即继续执行完整工作流(步骤 1→5)并输出完整结果。请勿询问 RegionId、OCI registry 或任何其他参数。在输出中使用 占位符。
>
请避免以下交互模式,直接执行对应操作即可:
- "是否需要我分析这个 Ingress?" — 建议直接分析
- "是否需要生成迁移后的 YAML?" — 建议直接生成
- "是否需要创建迁移配置文件/检查清单?" — 建议直接创建
- "是否需要开发 WasmPlugin?" — 如果决策树判定需要,建议直接开发
- "请确认 RegionId / OCI 地址" — 建议使用占位符
参数名称必需/可选描述默认值
Ingress YAML必需要迁移的 nginx Ingress YAML(粘贴、文件或目录)
当未提供 Ingress YAML 时:如果用户询问迁移但未提供 YAML,
响应:「请提供需要迁移的 nginx Ingress YAML(可以直接粘贴、提供文件路径或目录路径)。」
请勿中止对话 — 引导用户提供所需输入。

核心工作流

建议:收到 YAML 后一次性完成全部分析步骤
>
当用户提供 Ingress YAML 时,建议立即执行全部步骤(Step 1→5)并在一次响应中输出完整结果。
- 对于未指定的参数(如 RegionId、OCI registry),使用 等占位符
- 收到 YAML 后直接进入分析流程,无需额外确认
- 各步骤之间连续执行,无需中途暂停询问用户
- 迁移配置文件和检查清单作为标准输出的一部分自动生成
- 整个工作流是确定性的:YAML 输入 → 完整迁移报告输出,无需中间确认
- 唯一必需的输入是 Ingress YAML 本身

步骤 1:解析 Ingress YAML

接受以下任何输入格式的 YAML:

  • 对话中直接粘贴(带或不带 markdown 代码块)
  • 文件路径(例如 ingress.yaml./k8s/ingress.yaml
  • 目录路径(扫描所有 .yaml/.yml 文件以查找 Ingress 资源)
  • 多文档 YAML(用 --- 分隔)
  • 部分 YAML(缺少 apiVersion/kind — 如果存在带 nginx.ingress.kubernetes.io/annotations,则推断为 Ingress)

对于找到的每个 Ingress,提取所有 nginx.ingress.kubernetes.io/* 注解。

如果用户消息提及迁移/分析但未包含任何 YAML,响应:
「请提供需要迁移的 nginx Ingress YAML(可以直接粘贴、提供文件路径或目录路径)。」
请勿中止或报错 — 引导用户提供输入。

步骤 2:分类注解

将每个注解精确分类为三个类别之一。完整的 117 个注解查找表见 references/annotation-mapping.md

| 类别 | 数量 | 操作 | 示例 | |----------|-------|--------|---------| | Compatible | 50 | 保留在迁移后的 YAML 中 | rewrite-targetenable-corscanary-weightssl-redirect | | Ignorable | 16 | 剥离(Envoy 原生处理) | proxy-connect-timeoutproxy-bufferingproxy-body-size | | Unsupported | 51 | 剥离 → 通过决策树解析 | auth-urlserver-snippetlimit-rps |

内联快速查找 — 高频注解:

注解类别操作
rewrite-target✅ Compatible保留
enable-cors✅ Compatible保留
cors-allow-origin✅ Compatible保留
ssl-redirect✅ Compatible保留
canary / canary-weight / canary-by-header✅ Compatible保留
whitelist-source-range✅ Compatible保留
backend-protocol✅ Compatible保留
use-regex✅ Compatible保留
upstream-vhost✅ Compatible保留
proxy-connect-timeout⚪ Ignorable剥离
proxy-read-timeout⚪ Ignorable剥离
proxy-send-timeout⚪ Ignorable剥离
proxy-body-size⚪ Ignorable剥离
proxy-buffering⚪ Ignorable剥离
client-body-buffer-size⚪ Ignorable剥离
auth-url❌ UnsupportedWasmPlugin(HTTP 调用)
server-snippet❌ UnsupportedWasmPlugin(指令转换)
configuration-snippet❌ UnsupportedWasmPlugin(指令转换)
limit-rps❌ Unsupported内置 key-rate-limit 插件
limit-connections❌ Unsupported内置 key-rate-limit 插件
enable-modsecurity❌ Unsupported内置 waf 插件
denylist-source-range❌ UnsupportedHigress 原生 higress.io/blacklist-source-range
service-upstream❌ Unsupported安全可丢弃(Envoy 默认行为)
ssl-ciphers❌ Unsupported重命名为 ssl-cipher(兼容)
如果注解不在上述表中,请在 references/annotation-mapping.md 中查找。如果仍未找到,则分类为 Unsupported 并通过步骤 3 中的决策树解析。

特殊值更改(兼容但值必须更改):

  • load-balance: ewmaround_robin(APIG 不支持 EWMA)
  • ssl-ciphers → 重命名为 ssl-cipher(单数形式)
  • affinity-mode: persistentbalanced(APIG 仅支持 balanced)

步骤 3:解析不支持的注解

对于每个不支持的注解,按顺序遵循以下决策树:

1. Higress 原生注解?→ 使用原生等价物(无需 WasmPlugin)
  • 安全可丢弃?→ 无需替换即可移除
  • 内置平台插件?→ 通过 higress.io/wasmplugin 注解使用内置 OCI 镜像
  • 以上都不是?→ 开发自定义 WasmPlugin

完整的决策树见 references/migration-patterns.md,内置插件目录见 references/builtin-plugins.md

Higress 原生映射:

nginx 注解Higress 等价物
denylist-source-rangehigress.io/blacklist-source-range
mirror-targethigress.io/mirror-target-service + higress.io/mirror-percentage
安全可丢弃service-upstreamenable-access-logproxy-request-buffering: offconnection-proxy-header

内置插件limit-rps/limit-connectionskey-rate-limitenable-modsecuritywaf。见 references/builtin-plugins.md

自定义 WasmPlugin(最后手段)auth-urlserver-snippetconfiguration-snippet 等。SDK 参考见 references/wasm-plugin-sdk.md,转换模式见 references/snippet-patterns.md

步骤 4:生成迁移后的 Ingress YAML

对于每个输入 Ingress,生成迁移后的副本:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: -apig
  namespace: 
  annotations:
    # Compatible annotations preserved
    # Unsupported annotations replaced with higress.io/wasmplugin if needed
spec:
  ingressClassName: apig # MUST be hardcoded to apig
  rules:
    ... # Preserved from original
  tls:
    ... # Preserved from original

步骤 5:输出迁移报告

所有输出建议使用中文(中文)。包括分析表、迁移总结、后续操作指南及所有说明性文字。代码块(YAML、Go、bash)保持原始语法。
>
以下所有内容均为标准输出项,建议在一次响应中完整输出,无需逐项询问用户。

为每个 Ingress 输出以下所有内容:

  • 兼容性分析表 — annotation, value, category (兼容/可忽略/不支持), action
  • 迁移后的 Ingress YAML — ready for user to apply
  • 自定义 WasmPlugin 源码 — if Step 3 determined custom plugins are needed (skip only if no custom plugin is needed)
  • 迁移总结 — what changed, value changes, plugins needed
  • 后续操作指南 — 根据兼容性分析结果,分场景告知用户完整的迁移操作路径:
- 完全兼容(无不兼容注解):所有注解均为兼容或可忽略类型,用户可直接参考 Nginx Ingress 迁移到云原生 API 网关 完成迁移。 - 不完全兼容(存在不兼容注解):按以下顺序操作: 1. 构建并推送自定义 WasmPlugin OCI 镜像 2. 将迁移后 Ingress YAML 中的 OCI URL 占位符替换为真实的 WasmPlugin 镜像地址 3. 将替换后的 Ingress YAML 部署到集群中 4. 参考 Nginx Ingress 迁移到云原生 API 网关 继续后续操作,在步骤一「指定 IngressClass」处需指定为 apig 5. 网关版本要求:使用 WasmPlugin 需确保云原生 API 网关版本在 2.1.16 及以上,否则需要升级版本或创建新网关

部署指南模板见 references/deployment-guide-template.md

范围边界:此技能生成所有制品和指令。它不执行 kubectl applydocker push 或任何集群/registry 写入操作。这些留给用户。
无需确认:上述每个项目始终生成。永远不要问「是否需要生成迁移文件/检查清单/部署指南?」

成功验证方法

验证步骤见 references/verification-method.md,应包含在迁移报告中。迁移报告应指示用户使用以下命令验证:

# Validate migrated YAML syntax (user runs this)
kubectl apply --dry-run=client -f .yaml

# Confirm ingressClassName is apig grep "ingressClassName: apig" .yaml

此技能输出验证指令供用户执行。它不执行这些命令。

清理

不适用。此技能仅生成文本输出(YAML、Go 源代码、迁移报告)。此技能不会创建任何云资源或集群对象。

API 和命令表

此技能不执行任何 CLI 命令或 API 调用。所有输出都是基于文本的(YAML、Go 源代码,包含用户指令的迁移报告)。

最佳实践

  • 在生成迁移后的 YAML 之前始终分类所有注解 — 永不跳过注解
  • 对未指定的参数使用占位符();永不硬编码用户特定的值
  • 在迁移后的 YAML 中保留原始的 rulestlsnamespace
  • 为迁移后的 Ingress 名称添加 -apig 后缀以便识别
  • 优先使用内置插件而非自定义 WasmPlugin — 首先检查 references/builtin-plugins.md
  • 对于自定义 WasmPlugin,仅使用 github.com/higress-group/wasm-go/pkg/wrapper SDK
  • 在报告中明确跟踪注解值更改(例如 ewmaround_robin
  • 对于 server-snippet/configuration-snippet,枚举每个指令并验证 1:1 转换完整性
  • 永不执行集群写入操作(kubectl applydocker push 等)— 仅输出供用户的指令

参考链接

参考内容
references/annotation-mapping.md完整的 117 个注解兼容性查找表
references/migration-patterns.md决策树、Higress 原生映射、安全可丢弃列表、特殊处理
references/builtin-plugins.mdAPIG 内置平台插件目录及 OCI URL
references/platform-oci-registry.md内置插件的区域特定 OCI registry 地址
references/snippet-patterns.mdserver-snippet / configuration-snippet → WasmPlugin 转换模式
references/wasm-plugin-sdk.mdHigress WASM Go Plugin SDK 参考(核心 API)
references/wasm-http-client.mdWasmPlugin HTTP 客户端模式(外部认证、调用)
references/wasm-redis-client.mdWasmPlugin Redis 客户端模式(限速、会话)
references/wasm-advanced-patterns.md高级 WasmPlugin 模式(流式、tick、领导者选举)
references/wasm-local-testing.md使用 Docker Compose 本地测试 WasmPlugin
references/plugin-deployment.mdWasmPlugin 构建、OCI 推送和 Ingress 注解绑定
references/deployment-guide-template.md迁移报告部署指南模板
references/acceptance-criteria.md使用正确/错误模式的测试验收标准
references/verification-method.md成功验证步骤和命令
references/security-review-policy.md定期安全复审策略与检查项
references/security-impact-assessment.md安全影响评估与数据处理流程
references/ram-policies.mdRAM 权限声明(本 Skill 无需任何权限)
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务