拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Cilium 依赖的 Azure Network SDK(armnetwork v11)演进全解析:CHANGELOG 到源码的对照指南

Cilium 依赖的 Azure Network SDKarmnetwork v11演进全解析CHANGELOG 到源码的对照指南【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium导读本文以 Cilium 仓库内 vendor 的 Azurearmnetwork模块 CHANGELOG.md 为主线完整梳理该 SDK 从 1.0.0 到 11.0.0 的发布历史破坏性变更、枚举与结构体扩展、新增客户端与服务能力。该 SDK 是 Cilium 在 Azure 云上运行 eBPF 数据平面时负责虚拟机网卡、子网、公网 IP 与 IP 前缀等网络资源编排的核心依赖见 pkg/azure/api/api.go 与 pkg/azure/ipam/instances.go。读完本文你将理解该 SDK 的版本节奏、升级时需要关注的破坏点、以及如何对照 Cilium 的pkg/azure实现 判断某个新 API 是否值得跟进。一、为什么 Cilium 需要这份 CHANGELOG1.1 依赖关系与版本锁定当前仓库通过 go.mod 锁定github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v11 v11.0.0与 vendor 目录中模块自身的 version.go 声明的moduleVersion v11.0.0完全一致。这意味着本仓库实际编译使用的正是 CHANGELOG 中最新的 11.0.0 版本而非历史版本。1.2 Cilium 实际用到了 SDK 的哪些面Cilium 的 Azure 集成集中在 pkg/azure 目录其中 pkg/azure/api/api.go 是 SDK 客户端的主要封装点。从源码可以看到Cilium 在初始化阶段依次创建了多个 armnetwork 客户端armnetwork.NewInterfacesClient网卡接口armnetwork.NewSubnetsClient子网armnetwork.NewPublicIPPrefixesClient公网 IP 前缀armnetwork.NewPublicIPAddressesClient公网 IP 地址这些客户端分别对应 Cilium Azure IPAM 分配私有 IP、绑定公网 IP、查询子网与 IP 前缀的关键路径。pkg/azure/ipam/instances.go 中定义的AzureAPI接口也直接暴露了ListAllNetworkInterfaces(ctx) ([]*armnetwork.Interface, error)、ParseInterfacesIntoInstanceMap(...)等以armnetwork类型为返回值的抽象方法其InstancesManager维护的实例、子网与 IP 池状态正是建立在 SDK 类型之上的。1.3 从 CHANGELOG 中我们能得到什么CHANGELOG 的价值在于它把「SDK 内部 API 形态」与「Azure 网络服务的产品演进」同步呈现。对 Cilium 这类深度使用方而言破坏性变更条目如客户端方法签名调整、枚举值删除、结构体字段移除直接影响编译与运行时行为而 Features Added 中的新枚举、新结构体、新客户端则预示了 Azure 网络平台可被编程的新能力例如多云 ExpressRoute、安全边界 NSP、虚拟网络网关迁移等。二、SDK 版本演进总览根据 CHANGELOG该模块的发布历史可划分为三个阶段下表汇总了各版本的关键信息版本发布时间版本性质核心主题1.0.02022-05-16里程碑切换到 Azure SDK 下一代设计原则含破坏性变更提供官方迁移指南与快速上手文档1.1.0 ~ 2.2.12022-08 ~ 2023-04功能扩展引入 Network Manager 系列客户端、Route Maps、VIP Swap、DDoS 保护状态查询、WAF 动态清单等3.0.0 ~ 5.2.02023-05 ~ 2024-06重大重构期虚拟网络设备NVA连接、Firewall Policy 草稿机制、包捕获增强、基础 SKU 类型扩展6.0.0 ~ 6.2.02024-07 ~ 2024-12能力密集期IPAM 池IpamPools、可达性分析Reachability Analysis、故障转移测试、Verifier Workspaces、路由规则与安全用户规则7.0.0 ~ 8.0.02025-05 ~ 2025-12安全与迁移网络安全边界NSP完整客户端族、网关迁移Prepare/Execute/Commit/Abort、DDoS 检测规则、Entra JWT 校验9.0.0 ~ 11.0.02026-02 ~ 2026-08收敛与多云Service Gateway、虚拟网络设备迁移、ExpressRoute LAG链路聚合组、连接分析器、地址前缀集从时间节奏看该 SDK 保持约 24 个月一个版本的发布频率且每年至少有一次大版本主版本号递增发布伴随破坏性变更——这正是依赖方必须持续跟进 CHANGELOG 的原因。三、破坏性变更解读升级时必须处理的点破坏性变更Breaking Changes是 CHANGELOG 中最需要优先阅读的内容它们直接决定升级成本。以下按主题分类解读。3.1 操作形态变化LRO 与非 LRO 的切换11.0.0 中Service Gateway 的两个操作由「长期运行操作LRO」改为普通同步调用*ServiceGatewaysClient.BeginUpdateAddressLocations→ 改用UpdateAddressLocations*ServiceGatewaysClient.BeginUpdateServices→ 改用UpdateServices对调用方而言这意味着不再需要创建runtime.Poller并轮询PollUntilDone而是直接拿到最终响应代码复杂度显著下降。类似的变化在 10.0.0 中也体现在参数形态上IpamPoolsClient.Update、StaticCidrsClient.Create、VerifierWorkspacesClient.Update的签名从「选项里带 Body」改为「显式传入 Body 参数」这属于源码层面必须同步修改的签名变更。3.2 类型与枚举的收缩多个版本删除了枚举值、类型别名与结构体若代码中引用了它们将直接编译失败。典型示例9.0.0FirewallPolicyIntrusionDetectionProfileTypeAdvanced/Basic/Standard被移除取而代之的是Core、Emerging、Off三个新值——入侵检测配置模型的语义发生了根本调整。8.0.0ApplicationGatewayWafRuleSensitivityTypesNone与SensitivityTypeNone被移除。4.0.0ApplicationGatewayCustomErrorStatusCodeHTTPStatus499被移除。3.0.0LoadBalancerBackendAddressAdminStateDrain被移除EffectiveRouteMapRoute.Prefix从[]*string变为*string并删除了PeerRouteList结构体。2.0.0DDoS 自定义策略相关的一大批常量与类型别名如DdosCustomPolicyProtocolSyn、DdosSettingsProtectionCoverageBasic等被移除DdosSettings改用ProtectionMode表达保护模式。7.0.0ConnectionMonitorsClient.BeginQuery与BeginStart被移除LoadBalancerHealthPerRulePerBackendAddress.NetworkInterfaceIPConfigurationID类型从*InterfaceIPConfiguration变为*string由引用对象改为资源 ID 字符串降低序列化与查询开销。3.3 类型宽化与体系调整10.0.0 出现了一批「宽化」性质的变更通常是 SDK 对 REST 响应模型收敛的结果OperationStatusResult.PercentComplete从*float32变为*float64VirtualNetworkAppliancePropertiesFormat.BandwidthInGbps从*string变为*float64EffectiveNetworkSecurityGroup.TagMap从*string变为map[string][]*string各类 NSP 资源的SystemData统一从*SecurityPerimeterSystemData收敛为*SystemData。同时10.0.0 删除了ConnectionMonitorSourceStatus、ConnectionState、EvaluationState、HubVirtualNetworkConnectionStatus、NetworkOperationStatus、TunnelConnectionStatus六个枚举以及Error、ErrorResponse、Resource、TrackedResource、ProxyResource、CommonResource等一长串基础结构体并移除了PolicySettings.CaptchaCookieExpirationInMins字段9.0.0 才引入10.0.0 即改名/移除说明该字段处于快速迭代期依赖方不宜依赖它。从源码可以印证这类收敛的可靠性在 constants.go 中CHANGELOG 宣称新增的枚举值均有真实定义例如ExpressRouteCircuitSKUTierMultiCloud跨云连接的多云层级与LoadBalancerSKUNameService服务型负载均衡 SKU都对应着完整的常量定义及PossibleXxxValues收集函数。四、新枚举与新结构体SDK 能力的增长轨迹4.1 枚举类型的演进枚举enum type是 SDK 对 Azure 网络服务状态机与配置选项的建模。CHANGELOG 记录了数十个新枚举类型按功能域可归纳为网络安全边界NSP域7.0.0 集中引入NspLinkProvisioningState、NspLinkStatus、NspProvisioningState、AssociationAccessModeAudit/Enforced/Learning、AccessRuleDirectionInbound/Outbound等对应 Cilium 若要在 VNet 内实施南北向访问控制时可编程的状态集合。连接诊断与迁移域11.0.0/7.0.0ConnectionAnalyzerEndpointTypeApplicationGateway/BastionHost/ExternalAddress/VM/VMSS、ConnectionAnalyzerStatus、DiagnosticOperationConnectivityCheck/ExpressRouteDiagnostic/NSG/NextHop/PortScan、MigrationTypeMigrateToNewILBArchitecture/MigrateToNewOSVersion、VirtualNetworkGatewayMigrationPhase与MigrationState的完整生命周期枚举。ExpressRoute 域9.0.0 ~ 11.0.0ExpressRouteLagBillingType、ExpressRouteLagEncapsulationDot1Q/QinQ、ExpressRouteLagLacpTimerFast/Slow、ExpressRouteFailoverBgpStatusAddressFamily、ExpressRouteFailoverLinkType等服务于链路聚合组与故障转移测试。负载均衡与 NAT 域LoadBalancerModeAdvanced、LoadBalancerDetailLevelReduced、Nat64StateDisabled/Enabled/None、LoadBalancerScopePrivate/Public7.2.0、AccessModeDefault/Restricted7.2.0。WAF 与防火墙域6.1.0 等SensitivityType、ExceptionEntryMatchVariable、ExceptionEntrySelectorMatchOperator、RoutingRuleNextHopTypeInternet/NoNextHop/VirtualAppliance/VirtualNetworkGateway/VnetLocal等。值得注意的语义变化9.0.0 中FirewallPolicyIntrusionDetectionProfileType的三个旧值被替换为Core/Emerging/Off这要求使用旧 profile 配置的用户在升级后重新评估防火墙策略。类似地8.0.0 新增的ApplicationGatewayClientAuthVerificationModesPassthrough/Strict与ApplicationGatewayUnAuthorizedRequestActionAllow/Deny表明 Azure 应用网关的客户端证书校验已从「透传」演进为「可配置放行/拒绝」。4.2 新结构体的功能簇新结构体往往成簇出现与新的客户端方法配套。以 11.0.0 为例AddressPrefixSet及其PropertiesFormat、ListResult配套新的AddressPrefixSetsClientExpressRouteLag、ExpressRouteLagLink、ExpressRouteLagMember三件套配套ExpressRouteLagsClientConnectionAnalyzer及Endpoint、Properties、QueryStatusResult配套WatchersClient下的连接分析器方法FirstPartyServiceTag配套FirstPartyServiceTagsClient。KubeLabelSelector、LabelSelectorExpression、FirewallPolicyKubeSelectorGroup三个结构体尤其值得 Cilium 用户关注——它们把 Kubernetes 的标签选择器语义引入 Azure 防火墙策略使防火墙规则可以直接按 K8s 资源标签匹配LabelSelectorOperator枚举支持In/NotIn/Exists/DoesNotExist从 SDK 层面印证了 Azure 网络服务对 Kubernetes 工作负载的深度适配。这与 Cilium 自身「Kubernetes 原生网络」的定位天然契合。4.3 既有结构体的字段扩展CHANGELOG 的 New field 条目反映了既有资源类型的能力增强例如11.0.0ExpressRouteCircuitPropertiesFormat新增ActivationKey、PartnerAccountID、ResiliencyLevelStandard/High/MaximumFrontendIPConfigurationPropertiesFormat新增EnableConnectionTrackingPublicIPAddress/PrefixPropertiesFormat新增UpgradedToV2。10.0.0NatGatewayPropertiesFormat新增Nat64RoutePropertiesFormat新增NextHop配合RouteNextHopEcmp结构体与NextHopTypeVirtualApplianceEcmp值支持虚拟设备 ECMP 多路径PolicySettings将CaptchaCookieExpirationInMins改名为CaptchaExpirationInMins。7.0.0LoadBalancingRulePropertiesFormat新增EnableConnectionTrackingVirtualNetworkGatewayConnectionPropertiesFormat新增TunnelPropertiesNatGatewayPropertiesFormat新增PublicIPAddressesV6、PublicIPPrefixesV6、SourceVirtualNetwork。6.0.0BastionHostPropertiesFormat新增EnableSessionRecordingPacketCaptureStorageLocation新增LocalPath本地抓包存储ProbePropertiesFormat新增NoHealthyBackendsBehavior。五、新客户端与服务能力从 API 到业务场景CHANGELOG 中新增的客户端函数NewXxxClient是观察 SDK 覆盖范围最直接的窗口。以下按业务场景归纳5.1 Kubernetes 与多云11.0.0AddressPrefixSetsClient管理应用安全组ASG下的地址前缀集支持BeginCreateOrUpdateLRO、BeginDelete、Get、NewListPager。ExpressRouteLagsClientExpressRoute 链路聚合组除常规增删改查外还提供GenerateLoa生成授权书、LinksGet/NewLinksListPager、MembersGet/NewMembersListPager、Update标签/身份更新。FirewallPolicyKubeSelectorGroupsClient防火墙策略的 K8s 选择器组。FirstPartyServiceTagsClient第一方服务标签的增删改查与标签更新。VirtualAppliancesClient新增BeginAbortMigration/BeginCommitMigration/BeginExecuteMigration/BeginPrepareMigration四阶段迁移方法。VirtualNetworksClient.BeginMoveIPConfigurations虚拟网络内迁移 IP 配置。WatchersClient新增连接分析器全套方法BeginConnectionAnalyzersCreate/Delete/Query、ConnectionAnalyzersGet、NewConnectionAnalyzersListPager、ConnectionAnalyzersUpdateTags。5.2 网络安全边界与网关迁移7.0.07.0.0 是 NSPNetwork Security Perimeter能力的爆发版本ClientFactory一次性新增 8 个 NSP 相关客户端SecurityPerimetersClient、SecurityPerimeterAccessRulesClient、SecurityPerimeterAssociationsClient、SecurityPerimeterLinksClient、SecurityPerimeterLinkReferencesClient、SecurityPerimeterProfilesClient、SecurityPerimeterLoggingConfigurationsClient、SecurityPerimeterOperationStatusesClient。其中Reconcile方法AccessRules 与 Associations 均有用于将资源状态与声明式配置对齐体现了 NSP 的编排式设计。同版本还新增了VirtualNetworkGatewaysClient的迁移系列BeginInvokePrepareMigration、BeginInvokeExecuteMigration、BeginInvokeCommitMigration、BeginInvokeAbortMigration配合VirtualNetworkGatewayMigrationPhasePrepare→Execute→Commit→Abort 及各成功状态与VirtualNetworkGatewayMigrationTypeUpgradeDeploymentToStandardIP构成完整的网关迁移状态机。5.3 IPAM 与可达性分析6.1.0 ~ 6.2.0IpamPoolsClient6.2.0网络管理器下 IPAM 池的创建/删除/查询/用量统计GetPoolUsage/关联资源列举支持IpamPoolPrefixAllocation前缀分配模型AddressSpace与SubnetPropertiesFormat均新增IpamPoolPrefixAllocations字段。ReachabilityAnalysisIntentsClient与ReachabilityAnalysisRunsClient6.2.0配合IPTraffic、IntentContent、ResourceBasics等结构体实现对特定流量意图的可达性分析。VerifierWorkspacesClient6.2.0验证工作区用于承载网络验证任务。StaticCidrsClient6.2.0静态 CIDR 管理。5.4 网络管理器1.1.0 起持续扩展1.1.0 首次引入ManagersClient、GroupsClient、AdminRulesClient、AdminRuleCollectionsClient、StaticMembersClient、ScopeConnectionsClient、ConnectivityConfigurationsClient、SecurityAdminConfigurationsClient、ManagerCommitsClient、ManagerDeploymentStatusClient等全套网络管理器客户端配合ActiveSecurityAdminRule/EffectiveSecurityAdminRule抽象与ManagementClient.ListActiveConnectivityConfigurations/ListActiveSecurityAdminRules查询。6.1.0 又补充ManagerRoutingConfigurationsClient、RoutingRulesClient、SecurityUserRulesClient等将路由规则与安全用户规则纳入管理平面。5.5 防火墙策略演进5.2.0 起5.2.0 引入草稿Draft机制FirewallPolicyDraftsClient与FirewallPolicyRuleCollectionGroupDraftsClient允许先改草稿再通过FirewallPolicyDeploymentsClient.BeginDeploy发布实现「编辑-审批-部署」分离。这对生产环境的防火墙策略变更管理具有直接价值。六、其他变更与维护实践6.1 Bug 修复与依赖维护2.2.1修复any类型空值序列化 bug。5.1.1升级 azcore 版本认证与 HTTP 层基础库。2.0.1更新 live test 依赖。4.3.0 / 4.3.0-beta.1支持测试 Fakes内存假服务器用于单元测试覆盖成功/失败路径与 OpenTelemetry trace spans。前者与 SDK 官方文档中「无需连接真实服务即可编写测试」的能力一致对 Cilium 这类需要高测试覆盖率的项目尤为重要——Cilium 在 pkg/azure/api/mock/mock.go 中即维护了基于接口的 mock 实现与 SDK 的 Fake 思路互补。6.2 命名约定的信号CHANGELOG 中大量PossibleXxxValues() []Xxx函数的出现如 2.0.0 的PossibleSlotTypeValues、PossibleGeoValues、PossibleActionTypeValues说明 SDK 采用「枚举类型 值收集函数」的强类型模式便于遍历所有合法值runtime.Poller与runtime.Pager的广泛使用则表明长时操作与分页列举是 Azure 网络 API 的常态调用方应习惯 LRO 轮询与More()分页模式。七、升级实践与对照检查清单基于 CHANGELOG 与 Cilium 源码整理出以下升级与使用建议1. 升级前扫描破坏性变更主版本号递增如 10→11必含破坏性变更。优先处理三类被删除的枚举值/结构体/字段参考 3.2、3.3 节清单、签名变化的函数参考 3.1 节、类型宽化float32→float64、[]*string→map等。2. 关注与 Cilium 直接相关的类型Cilium 的 Azure IPAM 直接消费armnetwork.Interface、Subnet、PublicIPAddress、PublicIPPrefix、ApplicationSecurityGroup、InterfaceIPConfiguration等类型见 pkg/azure/api/api.go 的parseInterface、getVMPublicIP、deletePublicIPAddressConfigurationVM等函数。升级时优先核对这些类型的字段是否有删改例如VirtualNetworkAppliancePropertiesFormat在 10.0.0 中将BandwidthInGbps类型改为*float64。3. 善用 ClientFactory2.2.0 引入的ClientFactory是创建任意客户端的统一入口官方 README 示例armnetwork.NewClientFactory(subscriptionID, cred, options)相比逐个NewXxxClient更利于管理依赖。Cilium 的 pkg/azure/api/api.go 目前采用逐个创建的模式二者可并存。4. 结合测试基础设施验证SDK 的 Fakes 能力4.3.0与 Cilium 自身的 mockpkg/azure/api/mock/mock.go可以组合使用在单元测试中模拟armnetwork各类客户端的成功/失败响应再通过 pkg/azure/api/api_test.go 验证解析与映射逻辑如parseInterface将armnetwork.Interface转换为 Cilium 内部types.AzureInterface的过程从而在不连接真实 Azure 的情况下完成升级回归。5. 追踪新能力的业务价值每次大版本新增的客户端都对应可落地的网络能力NSP 客户端族7.0.0可用于构建 VNet 内外的访问控制自动化ExpressRoute LAG11.0.0适用于高带宽混合云专线场景FirewallPolicyKubeSelectorGroups11.0.0则让防火墙策略与 K8s 标签直接联动。建议在评估新版本时将 CHANGELOG 的 Features Added 与自身业务场景一一对照优先采纳与 Kubernetes 编排、IPAM、安全策略相关的增强。结语这份 CHANGELOG 从 2022 年 5 月的 1.0.0 一路记录到 2026 年 8 月的 11.0.0映射了 Azure 网络平台从基础 VNet 编排走向多云互联、安全边界、策略驱动的完整演进。对于 Cilium 而言它既是升级时不可跳过的「迁移手册」也是发现 Azure 网络新能力、评估是否纳入 eBPF 数据平面编排范围的「能力清单」。结合 pkg/azure 源码与 go.mod 的版本锁定开发者可以准确判断每次升级的影响面并借助 Fakes 与 mock 将回归成本降到最低。【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门