mcpField
V
VMware AVI

VMware AVI

本地服务
github.com/zw008云与基础设施25 天前更新

关于 VMware AVI

VMware AVI 是面向负载均衡器与 Kubernetes 运维的命令行工具和 MCP 服务,适用于管理 AVI Controller 与 AKO。它将传统 AVI 管理和 AKO 操作结合,并提供服务、证书、分析及故障诊断能力。

主要功能

  1. 01管理 Virtual Service 和池成员
  2. 02检查 SSL 证书与流量分析
  3. 03查看 Service Engine 健康状态
  4. 04管理 AKO 配置与 Pod
  5. 05诊断 Ingress 和同步问题
  6. 06查看多集群 AKO 状态

适用场景

  1. 01维护期间排空并恢复池成员流量
  2. 02排查 Ingress 未创建 Virtual Service
  3. 03检查即将到期的 SSL 证书
  4. 04比较 Kubernetes 与 Controller 的同步状态

MCP 相关

MCP 服务通过 Model Context Protocol 向兼容客户端提供 28 个工具,涵盖 AVI Controller 管理和 AKO Kubernetes 运维。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"zw008-vmware-avi": {
"command": "uvx",
"args": [
"vmware-avi"
]
}
}
}
启动命令uvx vmware-avi

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypivmware-avi1.8.8

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

VMware AVI

作者:Wei Zhou,VMware by Broadcom — [email protected] 这是由 VMware 工程师发起的社区项目,并非 VMware 官方产品。 如需 VMware 官方开发者工具,请参阅 developer.broadcom.com。

English | 中文

AVI(NSX Advanced Load Balancer)管理和 AKO Kubernetes 操作工具 — 涵盖 10 个类别的 28 个工具。

双模式:在一个技能中提供传统 AVI Controller 管理和 AKO K8s 操作。

配套技能负责其他所有功能:

技能范围安装
vmware-aiopsVM 生命周期、部署、来宾操作、集群uv tool install vmware-aiops
vmware-monitor只读:清单、健康状况、警报、事件uv tool install vmware-monitor
vmware-storage数据存储、iSCSI、vSAN 管理uv tool install vmware-storage
vmware-vksTanzu 命名空间、TKC 集群生命周期uv tool install vmware-vks
vmware-nsxNSX 网络:网段、网关、NATuv tool install vmware-nsx-mgmt
vmware-nsx-securityDFW 防火墙规则、安全组uv tool install vmware-nsx-security
vmware-ariaAria Ops:指标、警报、容量uv tool install vmware-aria

PyPI Python License: MIT ClawHub


升级到 2.0

2.0 重命名了全部 28 个 MCP 工具,使每个名称都以动词开头(例如,ako_amko_status → get_ako_amko_status、ako_clusters → list_ako_clusters、ako_config_diff → diff_ako_config)。完整的新旧名称对照表请参阅 RELEASE_NOTES.md。其他内容均未更改:工具、参数、 安全门控和 CLI 命令都相同。如果 Agent 提示词、脚本或 ~/.vmware/rules.yaml 中使用了工具名称,请更新它们。不过,使用旧名称编写的拒绝规则仍可与 vmware-policy ≥ 1.18 配合使用(vmware-audit policy 会列出重命名后适用范围扩大的规则),vmware-pilot ≥ 1.13 会转换已保存工作流中的旧名称。 如果低于 2.0 的安装与其共用该 rules.yaml,也请将其升级到 vmware-policy ≥ 1.18.2:该版本会同时针对新旧名称匹配每条规则,因此一个文件即可供两者使用。

快速安装

# Via uv (recommended)
uv tool install vmware-avi

# Or via pip
pip install vmware-avi

# China mainland mirror
pip install vmware-avi -i https://pypi.tuna.tsinghua.edu.cn/simple

# Verify installation
vmware-avi doctor
离线/隔离网络安装(从源代码安装)

本项目使用现代 PEP 517 构建系统(hatchling),因此有意不提供 setup.py — 这是预期行为,并非文件缺失。如果你克隆了源代码并遇到 ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build,说明你的 pip 版本低于 21.3,无法使用非 setuptools 后端进行可编辑(-e)安装。可编辑模式是开发者的便利功能,运行工具并不需要它 — 请采用以下任一方式:

# From the source tree — a normal (non-editable) install builds a wheel:
pip install .              # NOT  pip install -e .

# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .

对于完全隔离网络的主机,请在联网计算机上构建 wheel 并复制过去 — 目标主机无需联网:

# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist        # → dist/*.whl   (or: uv build, for just this package)

# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-avi

功能概览

此 Skill 的功能
类别工具数量
虚拟服务列出、查看状态、启用/禁用3
池成员池发现、成员列表、启用/禁用成员(排空/恢复流量)4
SSL 证书列出、检查到期时间2
分析VS 指标概览、请求错误日志2
服务引擎列出、运行状况检查2
AKO Pod 运维状态、日志、重启、版本信息4
AKO 配置查看 values.yaml、Helm 差异、Helm 升级3
Ingress 诊断注解验证、VS 映射、错误诊断、修复建议4
同步诊断K8s-Controller 对比、不一致项列表、强制重新同步3
多集群集群列表、跨集群 AKO 概览、AMKO 状态3
CLI 与 MCP:选择哪种模式
场景推荐方式原因
本地/小型模型(Ollama、Qwen)CLI约 2K 个 token,相比之下 MCP 约为 8K
云端模型(Claude、GPT-4o)两者均可MCP 提供结构化 JSON 输入/输出
自动化流水线MCP类型安全的参数、结构化输出
AKO 故障排查CLI可交互式跟踪日志、输出 Helm 差异

经验法则:追求成本效率或使用小型模型时,使用 CLI。需要借助大模型进行结构化自动化时,使用 MCP。

架构
User (Natural Language)
  |
AI CLI Tool (Claude Code / Gemini / Codex / Cursor / Trae)
  | reads SKILL.md
  |
vmware-avi CLI
  |--- avisdk (AVI REST API) ---> AVI Controller ---> Virtual Services / Pools / SEs
  |--- kubectl / kubernetes ---> K8s Cluster ---> AKO Pods / Ingress / Services

配置

步骤 1:创建配置目录
mkdir -p ~/.vmware-avi
vmware-avi init          # generates config.yaml and .env templates
chmod 600 ~/.vmware-avi/.env
步骤 2:编辑 config.yaml
controllers:
  - name: prod-avi
    host: avi-controller.example.com
    username: admin
    api_version: "22.1.4"
    tenant: admin
    port: 443
    verify_ssl: true

default_controller: prod-avi

ako:
  kubeconfig: ~/.kube/config
  default_context: ""
  namespace: avi-system
步骤 3:设置密码

创建 ~/.vmware-avi/.env:

# AVI Controller passwords
# Format: {CONTROLLER_NAME_UPPER}_PASSWORD
PROD_AVI_PASSWORD=your-password-here

密码环境变量命名约定:

{CONTROLLER_NAME_UPPER}_PASSWORD
# Replace hyphens with underscores, UPPERCASE
# Example: controller "prod-avi" -> PROD_AVI_PASSWORD
# Example: controller "staging-alb" -> STAGING_ALB_PASSWORD
步骤 4:验证
vmware-avi doctor    # checks Controller connectivity + kubeconfig + avisdk

CLI 用法

虚拟服务管理
# List all virtual services
vmware-avi vs list [--controller prod-avi]

# Check status of a specific VS
vmware-avi vs status my-webapp-vs

# Enable / disable a VS (disable requires double confirmation)
vmware-avi vs enable my-webapp-vs
vmware-avi vs disable my-webapp-vs
池成员排空/恢复
# List pool members and health status
vmware-avi pool members my-pool

# Graceful drain (disable) — double confirmation required
vmware-avi pool disable my-pool 10.1.1.5

# Restore traffic (enable)
vmware-avi pool enable my-pool 10.1.1.5
SSL 证书到期检查
# List all certificates
vmware-avi ssl list

# Check certificates expiring within 30 days
vmware-avi ssl expiry --days 30
分析和错误日志
# VS analytics: throughput, latency, error rates
vmware-avi analytics my-webapp-vs

# Request error logs
vmware-avi logs my-webapp-vs --since 1h
服务引擎运行状况
# Name, mgmt IP, operational status, SE group — status sourced from the
# serviceengine-inventory endpoint (config + runtime merged)
vmware-avi se list

# Per-SE operational status + connected-VS counts
vmware-avi se health
AKO 故障排查
# Check AKO pod status
vmware-avi ako status [--context my-k8s-context]

# View AKO logs
vmware-avi ako logs [--tail 100] [--since 30m]

# Restart AKO pod (double confirmation)
vmware-avi ako restart

# Show AKO version
vmware-avi ako version
AKO Helm 配置管理

系统会自动发现 AKO Helm 版本(官方安装使用 helm install --generate-name,因此版本名称不是 ako)。升级时会使用 --reuse-values 拉取 Broadcom 官方 OCI Chart oci://projects.packages.broadcom.com/ako/helm-charts/ako。

# View current AKO Helm values (release auto-discovered)
vmware-avi ako config show

# Show pending changes (diff against the official OCI chart)
vmware-avi ako config diff

# Helm upgrade (double confirmation + --dry-run default)
vmware-avi ako config upgrade
Ingress 诊断
# Validate Ingress annotations
vmware-avi ako ingress check <namespace>

# Show Ingress-to-VS mapping
vmware-avi ako ingress map

# Diagnose why an Ingress has no VS
vmware-avi ako ingress diagnose <ingress-name>
同步诊断
# Check K8s-Controller sync status
vmware-avi ako sync status

# Show inconsistencies between K8s and Controller
vmware-avi ako sync diff

# Force AKO resync (double confirmation)
vmware-avi ako sync force
多集群 AKO
# List every kube-context and whether AKO runs there
vmware-avi ako clusters

# Cross-cluster AKO status overview
vmware-avi ako cluster-overview

# AMKO GSLB status
vmware-avi ako amko status

MCP 服务

MCP 服务通过 Model Context Protocol 提供全部 28 个工具。适用于任何兼容 MCP 的客户端。

执行 uv tool install vmware-avi 后,只需一条命令即可启动 MCP 服务(v1.5.15+):

# Recommended — single command, no network re-resolve
vmware-avi mcp

# With custom config path
VMWARE_AVI_CONFIG=/path/to/config.yaml vmware-avi mcp
Claude Desktop 配置

将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "vmware-avi": {
      "command": "vmware-avi",
      "args": ["mcp"],
      "env": {
        "VMWARE_AVI_CONFIG": "~/.vmware-avi/config.yaml"
      }
    }
  }
}
其他方式:uvx(无需安装)或旧版入口点
# Run without installing (requires PyPI access each launch)
uvx --from vmware-avi vmware-avi mcp

# Legacy entry point (still works, kept for backward compatibility)
vmware-avi-mcp

位于企业 TLS 代理之后? uvx 可能会因 invalid peer certificate: UnknownIssuer 而失败。 请使用上面推荐的 vmware-avi mcp 方式(无需网络),或设置 UV_NATIVE_TLS=true。

MCP 工具(28 个)
类别工具
虚拟服务(3)list_virtual_services、get_virtual_service_status、set_virtual_service_enabled
池成员(4)list_lb_pools、list_lb_pool_members、enable_lb_pool_member、disable_lb_pool_member
SSL 证书(2)list_ssl_certs、check_ssl_cert_expiry
分析(2)get_virtual_service_analytics、get_virtual_service_error_logs
服务引擎(2)list_service_engines、get_service_engine_health
AKO Pod(4)get_ako_status、get_ako_logs、restart_ako、get_ako_version
AKO 配置(3)get_ako_config、diff_ako_config、upgrade_ako_config
Ingress 诊断(3)check_ako_ingress、list_ako_ingresses、diagnose_ako_ingress
同步诊断(3)get_ako_sync_status、diff_ako_sync、force_ako_sync
多集群(2)list_ako_clusters、get_ako_amko_status

常见工作流

1. 维护窗口——排空池成员

将后端服务器下线以进行补丁维护时:

  1. 列出池成员及其健康状态
    vmware-avi pool members my-pool
    
  2. 禁用目标服务器(优雅排空)
    vmware-avi pool disable my-pool 10.1.1.5
    
  3. 监控分析数据,确认活动连接正在排空
    vmware-avi analytics my-vs
    
  4. 对服务器进行维护
  5. 重新启用服务器
    vmware-avi pool enable my-pool 10.1.1.5
    
  6. 确认健康状态为绿色
    vmware-avi pool members my-pool
    
2. AKO Ingress 未创建 VS

开发人员报告其 Ingress 未生成 Virtual Service 时:

  1. 确认 AKO 正在运行
    vmware-avi ako status
    
  2. 验证 Ingress 注解
    vmware-avi ako ingress check <namespace>
    
  3. 检查 K8s 与 Controller 之间的同步状态
    vmware-avi ako sync status
    
  4. 如果注解有误,诊断具体的 Ingress
    vmware-avi ako ingress diagnose <ingress-name>
    
  5. 如果检测到同步偏差,检查差异,并在需要时强制重新同步
    vmware-avi ako sync diff
    vmware-avi ako sync force
    
3. SSL 证书到期审计

证书过期会导致服务中断。定期执行检查:

  1. 检查所有将在 30 天内到期的证书
    vmware-avi ssl expiry --days 30
    
  2. 查看每个即将到期的证书被哪些 VS 使用(输出包含 VS 映射)
  3. 与证书团队规划续期
  4. 续期后,确认新证书已就位
    vmware-avi ssl list
    

故障排除

“Controller 无法访问”错误
  1. 运行 vmware-avi doctor 以验证连接
  2. 检查 ~/.vmware-avi/config.yaml 中的 Controller 地址和端口是否正确
  3. 对于自签名证书:在 config.yaml 中设置 verify_ssl: false(仅限实验室环境)
AKO Pod 处于 CrashLoopBackOff 状态
  1. 检查日志:vmware-avi ako logs --tail 50
  2. 常见原因:values.yaml 中的 Controller IP 错误、网络策略阻止 AKO 访问 Controller、凭据过期
  3. 修复配置:使用 vmware-avi ako config show 检查,然后使用修正后的值运行 vmware-avi ako config upgrade(自动发现 release;拉取官方 Broadcom OCI chart)
已创建 Ingress,但 Controller 上没有 VS
  1. 验证注解:vmware-avi ako ingress check <namespace>
  2. 检查 AKO 日志中的拒绝原因:vmware-avi ako logs --since 5m
  3. 运行同步差异检查:vmware-avi ako sync diff,查看对象是否卡住
池成员启用后仍显示为“down”

健康监视器可能仍然失败。该成员已启用,但处于不健康状态。检查 Controller 端的实际健康状态。先修复后端服务,健康状态随后会自动恢复。

SSL 到期检查显示 0 个证书

确认 Controller 连接具有租户级访问权限。AVI 中的证书按租户划分。配置的用户可能只能看到其所在租户中的证书。

AKO 强制同步无效

强制重新同步会触发 AKO 重新协调所有 K8s 对象。如果偏差仍然存在,问题可能出在 K8s 资源定义本身(注解错误、缺少 secret)。使用 vmware-avi ako ingress diagnose 确定根本原因。


安全功能

功能详情
双重确认破坏性操作(禁用 VS、禁用池成员、重启 AKO、Helm 升级、强制重新同步)需要连续确认 2 次
默认试运行ako config upgrade 默认使用 --dry-run 模式——用户必须明确确认才能应用
MCP 影响范围set_virtual_service_enabled、disable_lb_pool_member、restart_ako、force_ako_sync 和 upgrade_ako_config 接受 confirm(默认为 false):未使用 confirm=true 的调用会返回 blast_radius(将发生的更改:VS/池及成员数量、AKO Pod 及其 Ingress、Helm 发布版本和 chart 变更),且不会进行任何更改。若存在阻止条件(池中唯一启用的成员、正在终止的 AKO Pod、失败的 helm --dry-run)或字段无法读取,则会拒绝 confirm=true。旧版 confirmed / dry_run 别名已在 2.4.1 中移除,作为未知参数拒绝
审计跟踪所有操作均通过 vmware-policy(@vmware_tool 装饰器)记录到 ~/.vmware/audit.db
密码保护加载 .env 文件时检查权限;密码绝不会进入 shell 历史记录
SSL 支持仅在隔离的实验室环境中使用 verify_ssl: false 以支持自签名证书
提示词注入防护所有源自 API 的文本均会截断(最多 500 个字符),并剥离 C0/C1 控制字符
输入验证在调用 API 前验证池名称、VS 名称、IP 地址和命名空间名称
安全详情
  • 源代码:github.com/vmware-skills/VMware-AVI
  • 配置文件内容:config.yaml 存储控制器地址、用户名和 AKO 设置。不包含密码或令牌。所有机密信息仅存储在 .env 中
  • Webhook 数据范围:默认禁用。不向第三方传输数据
  • TLS 验证:默认启用。仅在使用自签名证书的环境中禁用
  • 提示词注入防护:对所有 AVI API 响应执行 _sanitize() 截断处理和控制字符清理
  • 最小权限:使用权限最少的专用 AVI 服务账户。AKO 操作仅需要命名空间范围的 kubeconfig 访问权限

配套技能

技能范围工具安装
vmware-aviAVI 负载均衡器、AKO K8s 操作28uv tool install vmware-avi
vmware-aiopsVM 生命周期、部署、来宾操作、集群49uv tool install vmware-aiops
vmware-monitor只读监控、告警、事件27uv tool install vmware-monitor
vmware-storage数据存储、iSCSI、vSAN11uv tool install vmware-storage
vmware-vksTanzu 命名空间、TKC 集群生命周期20uv tool install vmware-vks
vmware-nsxNSX 网段、网关、NAT、路由33uv tool install vmware-nsx-mgmt
vmware-nsx-securityDFW 防火墙、安全组、IDS/IPS21uv tool install vmware-nsx-security
vmware-ariaAria Ops:指标、警报、容量28uv tool install vmware-aria
vmware-harden合规基线、偏差检测6uv tool install vmware-harden

版本兼容性

AVI Controller / 环境支持情况备注
VCF 9.1 中的 AVI 30.x✅ 完全支持avisdk 30.x 系列涵盖 VCF 9.1 套件
VCF 9.0 中的 AVI 30.x✅ 完全支持标准 AVI / NSX ALB 集成
独立部署的 AVI 22.x — 31.x✅ 完全支持固定版本 avisdk>=22.1,<31.0
AKO 1.10+✅ 完全支持通过 AKO ConfigMap / GatewayClass 实现 Kubernetes 集成
Broadcom 官方参考资料

故障排查与贡献

如果遇到任何错误或问题,请将错误消息、日志或屏幕截图发送至 [email protected]。欢迎贡献——欢迎加入我们,一起维护和改进此项目!

远程访问(HTTPS)与限制工具

默认情况下,vmware-avi mcp 通过 stdio 与一个本地客户端通信,并提供所有工具。以下两个选项可以改变这一行为 (vmware-policy ≥ 1.21.0)。

通过 HTTPS 提供服务,以便其他机器上的客户端连接。每个调用方都需要一个 bearer token:

vmware-audit token create alice          # prints the token once; give it to alice
vmware-audit token list                  # names only
vmware-audit token revoke alice          # refused from its next request, no restart
vmware-avi mcp --transport https --host 0.0.0.0 --port 8443 \
    --cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
    --public-name mcp.example.com

连接客户端(以下以 Claude Code 为例;任何支持 streamable HTTP 和自定义标头的 MCP 客户端均可使用):

claude mcp add --transport http vmware-avi https://mcp.example.com:8443/mcp \
    --header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
  "mcpServers": {
    "vmware-avi": {
      "type": "http",
      "url": "https://mcp.example.com:8443/mcp",
      "headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
    }
  }
}
  • 没有 token 时,服务不会启动;它会拒绝 --public-name 之外的 Host / Origin 值,并在绑定前检查未经身份验证的请求是否会返回 401。请使用客户端信任的、适用于这些名称的证书。
  • 如果在同一台机器上使用终止 TLS 的反向代理,请使用 --transport http --host 127.0.0.1 --public-name mcp.example.com,并透传 Authorization 标头。
  • 如果负载均衡器或网关位于另一台机器上,请保留 --transport https(自签名证书也可以),在 --public-name 中列出负载均衡器发送为 Host 的主机名,并让它转发 Authorization。其运行状况探测可使用 GET /healthz,此请求无需 token,且只返回 {"status": "ok"} (vmware-policy ≥ 1.23.0)。
  • 每次请求都发送 traceparent 或 X-Request-ID,以便将其记录到审计行中; 随后运行 vmware-audit log --correlation-id ID,即可查找同一平台请求对应的调用。
  • 审计日志会将每个调用方记录为 token:<name>。调用会并行运行:每个调用都使用自己面向 Controller(或 Kubernetes 上下文)的会话,每个目标最多有 VMWARE_MCP_POOL_SIZE 个会话(默认值为 2)。每个 Controller 会话都需要在 Controller 上登录;调用最多等待 300 s 以获取可用会话。
  • 所有能够访问此端点的人,都会以此服务的账户身份操作。 Token 用于标识调用方;它们不会授予任何平台权限。请为每个权限级别运行一个端点。
  • **同一端点上有多个用户或角色时:**运行一次 vmware-audit roles enable,然后为每个 token 分配一个角色(vmware-audit token create NAME --role reader,或在 roles.yaml 中指定角色可用的工具和目标;vmware-policy ≥ 1.24.0)。角色会限制 token 在此端点上可调用的工具,但不会授予超出账户自身权限的权限。请参阅 vmware-policy 的 README 中的“Roles for network callers”。

仅提供只读工具,以及你选择的写入工具:

vmware-avi mcp --expose read --allow-write disable_lb_pool_member
# or: VMWARE_AVI_MCP_EXPOSE=read VMWARE_AVI_MCP_ALLOW_WRITE=disable_lb_pool_member vmware-avi mcp

未提供的工具不会显示在客户端的工具列表中。无效值或未知的写入工具会导致服务停止(退出码 2)。这限制了客户端可使用的工具;但这并非授权机制,因此账户本身应遵循最小权限原则。

详情:skills/vmware-avi/references/setup-guide.md(“Serving MCP over HTTPS”、“Limiting which tools are offered”)。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。