快速入門:完成在 Nexus Azure Kubernetes Service 上部署 Azure 操作員 5G 核心預覽版的必要條件
本文描述如何透過建立以下來配置 Nexus Azure Kubernetes Service(NAKS)叢集:
- 網路網狀架構 (連線能力) 資源
- 網路雲端 (計算) 資源
注意
本文中的範例組態會使用 Azure CLI。 您也可以使用 bicep 腳本、terraform 腳本、ARM 範本或直接呼叫相關 API 的自定義程式來建立這些資源。
本文中使用的命令會參考下列資源群組:
- 基礎結構 (受控) 資源群組:
- 網狀架構 - 平台網路資源
- Undercloud - 平台計算資源
- ** 用來宿主 Azure-ARC Kubernetes 資源的受控資源群組
- 租戶資源群組:
- 網路架構 - 租戶網路資源(例如網路)
- 計算 - 租使用者計算資源(例如 VM 和 Nexus Azure Kubernetes Services (AKS) 叢集)
先決條件
佈建 NAKS 叢集之前:
- 設定 Customer Edge (CE) 與 Provider Edge (PE) (或 Telco Edge) 裝置之間的外部網路,以允許與提供者邊緣連線。 設定對防火牆和在 Azure 上裝載的服務等外部服務的存取(指租戶而非平台)不在本文的範圍之內。
- 設定 jumpbox 以連線路由網域。 設定 Jumpbox 不在本文的範圍之外。
- 在 Nexus Network Fabric 未控制的 PEs/Telco Edge 上設定網路元素,例如租使用者工作負載連線至 Azure 的 Express Route Circuits 組態(適用於混合式設定的選擇性),或透過操作員的核心網路進行連線。
- 檢閱 Nexus Kubernetes 發行行事曆,以識別可用的版本和支援方案。
- 檢閱 Nexus Kubernetes 叢集概觀。
- 檢閱 網路網狀架構概觀。
- 檢閱 Azure 隔離網域 How-To 指南。
- 請檢閱 記憶體概觀。
設定內部網路和通訊協定
完成這些工作以設定您的內部網路。
建立隔離網域 (L3ISD)
使用下列 Azure CLI 命令來建立隔離網域 (ISD):
export subscriptionId="<SUBSCRIPTION-ID>"
export rgManagedFabric="<RG-MANAGED-FABRIC>"
export nnfId="<NETWORK-FABRIC-ID>"
export rgFabric="<RG-FABRIC>"
export l3Isd="<ISD-NAME>"
export region="<REGION>"
az networkfabric l3domain create –resource-name $l3Isd \
--resource-group $rgFabric \
--location $region \
--nf-id "/subscriptions/$subscriptionId/resourceGroups/$rgManagedFabric/providers/Microsoft.ManagedNetworkFabric/networkFabrics/$nnfId" \
--redistribute-connected-subnets "True" \
--redistribute-static-routes "True" \
--subscription "$subscriptionId"
若要檢視新的 L3ISD 隔離網域,請輸入下列命令:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgFabric="<RG-FABRIC>"
export l3Isd="<ISD-NAME>"
az networkfabric l3domain show --resource-name $l3Isd -g $rgFabric --subscription $subscriptionId
建立內部網路
建立或修改內部網路之前,您必須停用ISD。 在進行變更之後重新啟用ISD。
停用隔離網域
使用下列命令來停用ISD:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgFabric="<RG-FABRIC>"
export l3Isd="<ISD-NAME>"
# Disable ISD to create internal networks, wait for 5 minutes and check the status is Disabled
az networkfabric l3domain update-admin-state –resource-name "$l3Isd" \
--resource-group "$rgFabric" \
--subscription "$subscriptionId" \
--state Disable
# Check the status of the ISD
az networkfabric l3domain show –resource-name "$l3Isd" \
--resource-group "$rgFabric" \
--subscription "$subscriptionId"
停用 ISD 後,您可以新增、修改或移除內部網路。 當您完成變更時,請重新啟用ISD,如 啟用隔離網域中所述。
建立預設的 Azure Container 網路介面內部網路
使用下列命令來建立預設的 Azure 容器網路介面 (CNI) 內部網路:
export subscriptionId="<SUBSCRIPTION-ID>"
export intnwDefCni="<DEFAULT-CNI-NAME>"
export l3Isd="<ISD-NAME>"
export rgFabric="<RG-FABRIC>"
export vlan=<VLAN-ID>
export peerAsn=<PEER-ASN>
export ipv4ListenRangePrefix="<DEFAULT-CNI-IPV4-PREFIX>/<PREFIX-LEN>"
export mtu=9000
az networkfabric internalnetwork create –resource-name "$intnwDefCni" \
--resource-group "$rgFabric" \
--subscription "$subscriptionId" \
--l3domain "$l3Isd" \
--vlan-id $vlan \
--mtu $mtu \
--connected-ipv4-subnets "[{prefix:$ipv4ListenRangePrefix}]" \
--bgp-configuration
{peerASN:$peerAsn,allowAS:0,defaultRouteOriginate:True,ipv4ListenRangePrefixes:['$ipv4ListenRangePrefix']}"
建立使用者平面功能(N3、N6)和接取及行動管理功能(N2)介面的內部網路
當您建立使用者平面函式 (UPF) 內部網路時,支援雙堆棧 IPv4/IPv6。 您不需要設定邊界閘道通訊協定 (BGP) 網狀架構端自發系統號碼 (ASN),因為 ASN 包含在網路網狀架構資源建立中。 使用下列命令來建立這些內部網路。
注意
建立內部網路數目,如 必要條件 一節所述。
export subscriptionId="<SUBSCRIPTION-ID>"
export intnwName="<INTNW-NAME>"
export l3Isd="<ISD-NAME>" // N2, N3, N6
export rgFabric="<RG-FABRIC>"
export vlan=<VLAN-ID>
export peerAsn=<PEER-ASN>
export ipv4ListenRangePrefix="<IPV4-PREFIX>/<PREFIX-LEN>"
export ipv6ListenRangePrefix="<IPV6-PREFIX>/<PREFIX-LEN>"
export mtu=9000
az networkfabric internalnetwork create –resource-name "$intnwName" \
--resource-group "$rgFabric" \
--subscription "$subscriptionId" \
--l3domain "$l3Isd" \
--vlan-id $vlan \
--mtu $mtu \
--connected-ipv4-subnets "[{prefix:$ipv4ListenRangePrefix}]" \
--connected-ipv6-subnets "[{prefix:'$ipv6ListenRangePrefix'}]" \ //optional
--bgp-configuration
"{peerASN:$peerAsn,allowAS:0,defaultRouteOriginate:True,ipv4ListenRangePrefixes:[$ipv4ListenRangePrefix],ipv6ListenRangePrefixes:['$ipv6ListenRangePrefix']}"
若要檢視已建立的內部網路清單,請輸入下列命令:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgFabric="<RG-FABRIC>"
export l3Isd="<ISD-NAME>"
az networkfabric internalnetwork list -o table --subscription $subscriptionId -g $rgFabric --l3domain $l3Isd
若要檢視特定內部網路的詳細資料,請輸入下列命令:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgFabric="<RG-FABRIC>"
export l3Isd="<ISD-NAME>"
export intnwName="<INTNW-NAME>"
az networkfabric internalnetwork show --resource-name $intnwName -g $rgFabric --l3domain $l3Isd
啟用隔離網域
使用下列命令來啟用 ISD:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgFabric="<RG-FABRIC>"
export l3Isd="<ISD-NAME>"
# Enable ISD, wait for 5 minutes and check the status is Enabled
az networkfabric l3domain update-admin-state –resource-name "$l3Isd" \
--resource-group "$rgFabric" \
--subscription "$subscriptionId" \
--state Enable
# Check the status of the ISD
az networkfabric l3domain show –resource-name "$l3Isd" \
--resource-group "$rgFabric" \
--subscription "$subscriptionId"
建議的路由設定
若要設定內部網路的 BGP 和雙向轉送偵測 (BFD) 路由,請使用預設設定。 如需參數描述,請參閱 Nexus 檔。
建立 L3 網路
部署 NAKS 叢集之前,您必須建立對應至網路網狀架構 (NF) 資源的網路雲端 (NC) L3 網路資源。 您必須為預設 CNI 介面建立 L3 網路 NC 資源,包括對應內部網路的 ISD/VLAN/IP 前置詞。 將這些資源直接連結至 VM,以在網路適配器 (NIC) 虛擬函式 (VF) 層級執行 VLAN 標記,而不是應用層級 (從應用程式觀點存取埠) 和/或 IP 位址是由 Nexus 配置 (使用 IP 位址管理 (ipam) 功能)。
L3 網路用於預設 CNI 介面。 需要每個單一介面擁有多個 VLAN 的其他介面必須是主幹介面。
使用下列命令來建立 L3 網路:
Export subscriptionId="<SUBSCRIPTION-ID>"
export rgManagedUndercloudCluster="<RG-MANAGED-UNDERCLOUD-CLUSTER>"
export undercloudCustLocationName="<UNDERCLOUD-CUST-LOCATION-NAME>"
export rgFabric="<RG-FABRIC>"
export rgCompute="<RG-COMPUTE>"
export l3Name="<L3-NET-NAME>"
export l3Isd="<ISD-NAME>"
export region="<REGION>"
export vlan=<VLAN-ID>
export ipAllocationType="IPV4" // DualStack, IPV4, IPV6
export ipv4ConnectedPrefix="<DEFAULT-CNI-IPV4-PREFIX>/<PREFIX-LEN>" // if IPV4 or DualStack
export ipv6ConnectedPrefix="<DEFAULT-CNI-IPV6-PREFIX>/<PREFIX-LEN>" // if IPV6 or DualStack
az networkcloud l3network create –l3-network-name $l3Name \
--l3-isolation-domain-id
"/subscriptions/$subscriptionId/resourceGroups/$rgFabric/providers/Microsoft.ManagedNetworkFabric/l3IsolationDomains/$l3Isd" \
--vlan $vlan \
--ip-allocation-type $ipAllocationType \
--ipv4-connected-prefix $ipv4ConnectedPrefix \
--extended-location name="/subscriptions/$subscriptionId/resourceGroups/$rgManagedUndercloudCluster/providers/Microsoft.ExtendedLocation/customLocations/$undercloudCustLocationName" type="CustomLocation" \
--resource-group $rgCompute \
--location $region \
--subscription $subscriptionId \
--interface-name "vlan-$vlan"
若要檢視建立的 L3 網路,請輸入下列命令:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgCompute="<RG-COMPUTE>"
export l3Name="<L3-NET-NAME>"
az networkcloud l3network show -n $l3Name -g $rgCompute --subscription $subscriptionId
集群網路
如果連接到虛擬機器的單一端口/介面需要承載多個虛擬區域網路(VLAN),則必須使用 trunkednetwork
網路雲資源。 標記是在應用層執行,而不是在網路介面卡(NIC)。 主幹介面可以傳送屬於不同 ISD 的 VLAN。
您必須為 Access and Management Mobility Function (AMF) (N2) 和 UPF (N3, N6) 建立主幹網路。
使用下列命令來建立主幹網路:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgManagedUndercloudCluster="<RG-MANAGED-UNDERCLOUD-CLUSTER>"
export undercloudCustLocationName="<UNDERCLOUD-CUST-LOCATION-NAME>"
export rgFabric="<RG-FABRIC>"
export rgCompute="<RG-COMPUTE>"
export trunkName="<TRUNK-NAME>"
export l3IsdUlb="<ISD-ULB-NAME>"
export vlanUlb=<VLAN-ULB-ID>
export region="<REGION>"
az networkcloud trunkednetwork create --name $trunkName \
--isolation-domain-ids
"/subscriptions/$subscriptionId/resourceGroups/$rgFabric/providers/Microsoft.ManagedNetworkFabric/l3IsolationDomains/$l3IsdUlb" \
--vlans $vlanUlb \
--extended-location name="/subscriptions/$subscriptionId/resourceGroups/$rgManagedUndercloudCluster/providers/Microsoft.ExtendedLocation/customLocations/$undercloudCustLocationName" type="CustomLocation" \
--resource-group $rgCompute \
--location $region \
--interface-name "trunk-ulb" \
--subscription $subscriptionId
若要檢視所建立的主幹網路資源,請輸入下列命令:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgCompute="<RG-COMPUTE>"
export trunkName="<TRUNK-NAME>"
az networkcloud trunkednetwork show -n $trunkName -g $rgCompute --subscription $subscriptionId
設定雲端服務網路代理伺服器和允許的網域
雲端服務網路代理伺服器(CSN 代理伺服器)可用來存取 Azure 和網際網路目的地。 您必須在 NAKS 叢集的 CSN 設定中明確將這些網域新增至允許清單,才能存取 Azure 服務和 Arc 整合。
以網路功能管理員為基礎的雲端服務網絡的端點
為基於網路功能管理器(NFM)的部署支援新增下列出口點(HybridNetwork Resource Provider(RP)、CustomLocation RP 觸達能力、ACR、Arc):
- .azurecr.io / 連接埠 80
- .azurecr.io / 端口 443
- .mecdevice.azure.com / 連接埠 443
- eastus-prod.mecdevice.azure.com / 端口 443
- .microsoftmetrics.com / 連接埠 443
- crprivatemobilenetwork.azurecr.io / 埠 443
- .guestconfiguration.azure.com 的埠 443
- .kubernetesconfiguration.azure.com / port 443
- eastus.obo.arc.azure.com / 埠 8084
- .windows.net / 連接埠 80
- .windows.net / 連接埠 443
- .k8connecthelm.azureedge.net / 連接埠 80
- .k8connecthelm.azureedge.net / 連接埠 443
- .k8sconnectcsp.azureedge.net / 連接埠 80
- .k8sconnectcsp.azureedge.net / 連接埠 443
- .arc.azure.net / 連接埠 80
- .arc.azure.net / 連接埠 443
Python 雲端服務網路端點
針對 Python 套件安裝(適用於 NAKS 的 fed-kube_addons pod-node_config 命令列表的一部分),請新增下列端點:
- pypi.org / 埠 443
- files.pythonhosted.org / 端口 443
注意
如果需要將數據插入 ADX,可能需要將其他 Azure Detat Explorer (ADX) 端點包含在允許清單中。
選用雲端服務網路端點
使用下列目的地來執行其端點儲存在公用容器登錄中的容器,或為輔助虛擬機安裝更多套件:
- .ghcr.io / 連接埠 80
- .ghcr.io / 端口 443
- .k8s.gcr.io / 連接埠 80
- .k8s.gcr.io / 連接埠 443
- .k8s.io / 埠 80
- .k8s.io / 連接埠 443
- .docker.io / 連接埠 80
- .docker.io / 埠 443
- .docker.com / 連接埠 80
- .docker.com / 連接埠 443
- .pkg.dev / 連接埠 80
- .pkg.dev / 連接埠 443
- .ubuntu.com / 連接埠 80
- .ubuntu.com / 連接埠 443
建立雲端服務網路
當您在 Nexus 平臺上部署 Azure 操作員 5G 核心預覽版時,您必須為每個 NAKS 叢集建立個別的 CSN 實例。
注意
根據上一節中提供的描述和清單,調整 additional-egress-endpoints
清單。
export subscriptionId="<SUBSCRIPTION-ID>"
export rgManagedUndercloudCluster="<RG-MANAGED-UNDERCLOUD-CLUSTER>"
export undercloudCustLocationName="<UNDERCLOUD-CUST-LOCATION-NAME>"
export rgCompute="<RG-COMPUTE>"
export csnName="<CSN-NAME>"
export region="<REGION>"
az networkcloud cloudservicesnetwork create --cloud-services-network-name $csnName \
--extended-location name="/subscriptions/$subscriptionId/resourceGroups/$rgManagedUndercloudCluster/providers/Microsoft.ExtendedLocation/customLocations/$undercloudCustLocationName" type="CustomLocation" \06- \
--resource-group $rgCompute \
--location $region \
--enable-default-egress-endpoints True \
--subscription $subscriptionId \
--additional-egress-endpoints '[
{
"category": "common",
"endpoints": [
{
"domainName": ".io",
"port": 80
}
]
},
{
"category": "common",
"endpoints": [
{
"domainName": ".io",
"port": 443
}
]
}
]' 07-
建立 CSN 之後,請使用命令行上的下列命令來確認 egress-endpoints
:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgCompute="<RG-COMPUTE>"
export csnName="<CSN-NAME>"
az networkcloud cloudservicesnetwork show -n $csnName -g $rgCompute --subscription $subscriptionId
建立 Nexus Azure Kubernetes Services 叢集
Nexus 相關資源提供者必須部署自我管理的資源群組,以用來部署客戶所建立的必要資源。 布建 Nexus AKS 叢集時,必須啟用 Arc。 網路雲端資源提供者會建立自己的受控資源群組,並將其部署在 Azure Arc Kubernetes 叢集資源中。 在此部署之後,此叢集資源會連結至 NAKS 叢集資源。
注意
部署 NAKS 叢集並建立受控資源群組之後,您可能需要將許可權授與受控資源群組的所有使用者/entra 群組/服務主體存取權。 此動作取決於訂用帳戶層級身分識別存取管理 (IAM) 設定。
使用下列 Azure CLI 命令來建立 NAKS 叢集:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgManagedUndercloudCluster="<RG-MANAGED-UNDERCLOUD-CLUSTER>"
export undercloudCustLocationName="<UNDERCLOUD-CUST-LOCATION-NAME>"
export rgCompute="<RG-COMPUTE>"
export rgNcManaged="<RG-NETWORK-CLOUD-MANAGED>"
export csnName="<CSN-NAME>"
export defCniL3Net="<L3-NET-FOR-DEF-CNI>"
export trunkName="<TRUNK-NAME>"
export naksName="<NAKS-NAME>"
export k8sVer="<K8S-VER>"
export region="<REGION>"
export regionRgNcManaged="<REGION-RG-NETWORK-CLOUD-MANAGED>"
export sshPubKeys="<SSH-PUB-KEYS>"
export adminUser="<ADMIN-USER>" // e.g. "azureuser"
export controlVmSku="<CONTROL-NODE-SKU>"
export controlVmCount="<CONTROL-NODE-COUNT>"
export workerVmSku="<WORKER-NODE-SKU>"
export workerVmCount="<WORKER-NODE-COUNT>"
export nodePoolName="<NODE-POOL-NAME>"
export lbIpv4Pool="<LOADBALANCER-IPV4-POOL>"
export hugePages2MCount=<HUGEPAGES-2M-COUNT>
export aadAdminGroupObjectId="<AAD-GROUP-TO-ACCESS-NAKS>"
export maxSurge=1 // number of nodes added to the cluster during upgrade e.g. 1 or percentage "10%"
az networkcloud kubernetescluster create --name $naksName \
--resource-group $rgCompute \
--location $region \
--kubernetes-version $k8sVer \
--extended-location name="/subscriptions/$subscriptionId/resourceGroups/$rgManagedUndercloudCluster/providers/Microsoft.ExtendedLocation/customLocations/$undercloudCustLocationName" type="CustomLocation" \
--admin-username $adminUser \
--ssh-key-values "$sshPubKeys" \
--initial-agent-pool-configurations "[{count:$workerVmCount,mode:'System',name:'$nodePoolName',vmSkuName:'$workerVmSku',agentOptions:{hugepagesCount:$hugePages2MCount,hugepagesSize:2M},upgradeSettings:{maxSurge:$maxSurge},adminUsername:'$adminUser',ssh-key-values:['$sshPubKeys']}]" \
--control-plane-node-configuration count=$workerVmCount vmSkuName=$controlVmSku adminUsername=$adminUser ssh-key-values=['$sshPubKeys'] \
--network-configuration cloud-services-network-id="/subscriptions/$subscriptionId/resourceGroups/$rgCompute/providers/Microsoft.NetworkCloud/cloudServicesNetworks/$csnName" cni-network-id="/subscriptions/$subscriptionId/resourceGroups/$rgCompute/providers/Microsoft.NetworkCloud/l3Networks/$defCniL3Net" pod-cidrs=["10.244.0.0/16"] service-cidrs=["10.96.0.0/16"] dns-service-ip="10.96.0.10" attached-network-configuration.trunked-networks="[{networkId:'/subscriptions/$subscriptionId/resourceGroups/$rgCompute/providers/Microsoft.NetworkCloud/trunkedNetworks/$trunkName',pluginType:'SRIOV'}]" bgp-service-load-balancer-configuration.fabric-peering-enabled="True" bgp-service-load-balancer-configuration.ip-address-pools="[{addresses:['$lbIpv4Pool'],autoAssign:'True',name:'pool1',onlyUseHostIps:'True'}]" \
--managed-resource-group-configuration "{location:$regionRgNcManaged,name:$rgNcManaged}" \
--aad-configuration admin-group-object-ids=[$aadAdminGroupObjectId] \
--subscription $subscriptionId
若要確認已建立的 Nexus 叢集清單,請輸入下列命令:
export subscriptionId="<SUBSCRIPTION-ID>"
az networkcloud kubernetescluster list -o table --subscription $subscriptionId
若要確認已建立叢集的詳細數據,請輸入下列命令:
export subscriptionId="<SUBSCRIPTION-ID>"
export rgCompute="<RG-COMPUTE>"
export naksName="<NAKS-NAME>"
az networkcloud kubernetescluster show -n $naksName -g $rgCompute --subscription $subscriptionId
建立叢集之後,您可以啟用 NFM 擴充功能並設定自定義位置,以便透過 AOSM 或 NFM 部署叢集。
存取 Nexus Azure Kubernetes Services 叢集
有幾種方式可以存取租戶 NAKS 叢集的 API 伺服器:
直接從 IP 位址/連接埠(從能夠連接到租戶 NAKS API 伺服器的跳板機)
使用 Azure CLI 和 connectedk8s proxy 選項,藉由該方法即可直接存取叢集。 在 NAKS 叢集布建期間,必須提供服務主體或使用者的 EntraID/AAD 群組(搭配 Azure CLI 使用)。 此外,您必須將自訂角色指派給由網路雲端 RP 所建立的受管理資源群組。 必須在此角色中啟用下列其中一個動作:
- Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action
- 作為受控資源群組參與者的用戶或服務提供者
Azure Edge 服務
Azure 操作員 5G 核心是電信工作負載,可讓您為消費者和企業終端使用者提供服務。 Azure 運營商的 5G 核心作業負載在網路功能虛擬化基礎設施 (NFVI) 層上運行,並可能依賴其他 NFVI 服務。
Edge NFVI 功能(在 Azure 營運商 Nexus 上執行)
注意
Edge NFVI 相關服務可能會偶爾更新。 如需更多關於這些服務的詳細資訊,請參閱各特定服務的文件。
Azure 操作員 Nexus - Azure 操作員 Nexus 是電信運營商的電信業者級新一代混合式雲端平臺。 Azure 操作員 Nexus 專為操作員的網路密集型工作負載和任務關鍵性應用程式所建置。
Azure 營運中心 Nexus 可能需要依賴於其他任何硬體和服務。
Azure Arc - 為 Azure 操作員 5G 核心應用程式和服務提供跨 Azure 和內部部署環境的整合管理和治理平臺。
Azure 監視器 - 提供完整的解決方案,以監視 Azure 操作員 5G 核心應用程式和服務在 Azure 和內部部署環境中的效能和健康情況。
EntraID - 提供 Azure 運營商 5G 核心使用者和系統管理員在 Azure 和內部部署環境中的身分識別和存取管理。
Azure Key Vault - 提供安全且集中化的存放區,用於在 Azure 和本地部署環境中管理 Azure 營運者 5G 核心版的加密密鑰和機密。
相關內容
- 瞭解 部署順序。
- 部署 Azure 5G 核心預覽版。
- 部署網路函式。