关于 devops-network-calculator-for-azure
这是一款离线 Azure 网络规划工具,可计算 CIDR、检查地址重叠、分析 VNet 和规划 AKS 网络。它仅依赖 Python 标准库,并可生成适用于 Terraform 的输出。
主要功能
- 01计算 CIDR 并拆分子网
- 02分析 VNet 利用率与空闲地址段
- 03检测地址重叠及 Azure 约束违规
- 04使用 first-fit 查找子网位置
- 05规划多环境地址分配
- 06生成 Terraform 适用输出
适用场景
- 01按主机数量估算子网大小
- 02部署前检查 VNet 配置
- 03规划多个环境的地址空间
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill devops-network-calculator-for-azure安装后在 Claude Code 中输入/devops-network-calculator-for-azure确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
workflow.mdreferences/aks-networking-guide.mdazure-constraints.mdcidr-calculation-guide.mdsegmentation-patterns.mdscripts/network-calc.pytemplates/multi-env-plan.md.tplnsg-rules-aks.tfvars.tplvnet-layout.tfvars.tpl详细介绍
Azure 网络计算器
离线 Azure 网络规划工具。可计算 CIDR、检测重叠、分析 VNet 利用率、规划 AKS 网络,并生成适用于 Terraform 的输出。零外部依赖——仅使用 Python 标准库。
快速开始
# What CIDR do I need for 500 hosts?
python3 scripts/network-calc.py calculate --from-hosts 500
# Analyze current VNet
python3 scripts/network-calc.py analyze --from-tfvars terraform/terraform.tfvars
# Validate for overlaps (pre-commit compatible)
python3 scripts/network-calc.py validate --from-tfvars terraform/terraform.tfvars
# Find where to place a new subnet
python3 scripts/network-calc.py first-fit --vnet 10.50.0.0/20 \
--subnets "10.50.0.0/22,10.50.4.0/22,10.50.8.0/26,10.50.9.0/24" --hosts 500
命令
| 命令 | 用途 | 参考 |
|---|---|---|
calculate | CIDR 信息、主机规模估算、子网划分 | CIDR 指南 |
analyze | VNet 利用率、空闲地址分析 | CIDR 指南 |
validate | 重叠检测、Azure 约束检查 | Azure 约束 |
first-fit | 查找新子网的最佳位置 | CIDR 指南 |
plan-multi | 多环境 VNet 分配 | 网段划分 |
项目背景
参考 VNet:10.50.0.0/20(4,096 个 IP,利用率 57.8%)
| 子网 | CIDR | 可用地址数 |
|---|---|---|
| GatewaySubnet | 10.50.0.0/22 | 1,019 |
| PublicSubnet | 10.50.4.0/22 | 1,019 |
| AzureBastionSubnet | 10.50.8.0/26 | 59 |
| PrivateSubnet | 10.50.9.0/24 | 251 |
| 可用地址段 | 1,708 |
关键文件:terraform/terraform.tfvars、terraform/networking.tf、terraform/nsg.tf
Azure 快速参考
- 每个子网保留 5 个 IP(.0、.1、.2、.3、广播地址)
- **Bastion:**最小 /26 | **Gateway:**最小 /27 | **Firewall:**最小 /26
- **每个 VNet 的子网数上限:**3,000 | **NSG 规则上限:**1,000
- 完整参考:Azure 约束
参考指南
| 指南 | 适合阅读时机 |
|---|---|
| CIDR 计算指南 | 子网规模估算、空闲地址分析、重叠检测 |
| AKS 网络指南 | CNI 对比、Pod/服务 CIDR、节点规模估算 |
| 网段划分模式 | 设计模式、反模式、决策矩阵 |
| Azure 约束 | 硬性限制、命名规则、保留地址 |
模板
| 模板 | 用途 |
|---|---|
| VNet 布局 | VNet 配置的 Terraform 变量块 |
| AKS NSG 规则 | AKS 工作负载的 NSG 规则 |
| 多环境规划 | 多环境规划输出 |
执行
请按照 ./workflow.md 中的说明操作。
注意事项
- **Azure 每个子网保留 5 个 IP,而不是 2 个:**标准 /29 只能提供 3 个可用 IP,而不是 6 个。使用 /29 规划 AKS 节点池会限制扩容,并在扩容过程中触发
InsufficientFreeAddressesInSubnet。 - **GatewaySubnet 是固定名称:**如果子网名称不是
GatewaySubnet,Azure 会拒绝关联 VPN Gateway。AzureBastionSubnet和AzureFirewallSubnet也一样。名称拼错会在 apply 阶段报错,而不是 plan 阶段。 - **AKS Azure CNI 会为每个 Pod 占用一个子网 IP:**一个有 30 个节点、每个节点运行 30 个 Pod 的集群需要 900 多个子网 IP,而不是 30 个。请先规划
--max-pods;之后切换 CNI 需要重建集群。 - **first-fit 选择的是地址段最低的空闲位置,不是最合适的位置:**它可能会把 /24 放入 /22 空闲段,留下零碎且无法使用的 /25 地址段。对于长期使用的 VNet,请使用
plan-multi并明确预留扩容地址段。 - **与本地网络 CIDR 重叠,在对等互连前不会显现:**单独看,10.0.0.0/16 VNet 似乎没有问题,但 ExpressRoute 对等互连会使与企业网段重叠的路由被黑洞处理。请对照完整的企业 IPAM 数据进行验证。
- **NSG 规则上限是总计 1,000 条,而非每个方向各 1,000 条:**入站、出站、默认和 Azure 自动规则共用此额度。请预留余量,否则扩容时会触及硬性上限。
评论
支持 Markdown