你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:操作员和容器化网络功能 (CNF) 的先决条件
本快速入门包含操作员和容器化网络功能 (CNF) 的先决条件任务。 尽管可以在 NSD(网络服务定义)中自动执行这些任务,但在本快速入门中,将手动执行这些操作。
注意
本文中介绍的任务可能需要一些时间才能完成。
权限
需要一个包含某个现有资源组的 Azure 订阅,并且你对该订阅具有“参与者”角色和“用户访问管理员”角色。
或者,AOSM CLI 扩展可为你创建资源组,在这种情况下,你需要对此订阅具有“参与者”角色。 如果使用此功能,则需要为用户添加“用户访问管理员”角色,并将该角色的范围限定为新建资源组。
还需要网络功能定义发布服务器资源组的“用户访问管理员”角色。 快速入门:将 Nginx 容器发布为容器化网络功能 (CNF) 中使用了网络功能定义发布服务器资源组。 检查 input-cnf-nfd.jsonc 文件中的资源组名称。
设置环境变量。
根据特定环境的需要调整环境变量设置和引用。 例如,在 Windows PowerShell 中,将按如下方式设置环境变量:
$env:ARC_RG="<my rg>"
若要使用环境变量,请将其引用为 $env:ARC_RG
。
export resourceGroup=operator-rg
export location=<region>
export clusterName=<replace with clustername>
export customlocationId=${clusterName}-custom-location
export extensionId=${clusterName}-extension
创建资源组
创建用于托管 Azure Kubernetes 服务 (AKS) 群集的资源组。 在后面的指南中,操作员资源也将在这里创建。
az account set --subscription <subscription>
az group create -n ${resourceGroup} -l ${location}
预配 Azure Kubernetes 服务 (AKS) 群集
az aks create -g ${resourceGroup} -n ${clusterName} --node-count 3 --generate-ssh-keys
启用 Azure Arc
为 Azure Kubernetes 服务 (AKS) 群集启用 Azure Arc。 运行以下命令应该就可以了。 若要了解详细信息,请参阅在已启用 Azure Arc 的 Kubernetes 上创建和管理自定义位置。
检索 AKS 群集的配置文件
az aks get-credentials --resource-group ${resourceGroup} --name ${clusterName}
创建已连接的群集
创建群集:
az connectedk8s connect --name ${clusterName} --resource-group ${resourceGroup}
注册订阅
将订阅注册到 Microsoft.ExtendedLocation 资源提供程序:
az provider register --namespace Microsoft.ExtendedLocation
启用自定义位置
在群集上启用自定义位置:
az connectedk8s enable-features -n ${clusterName} -g ${resourceGroup} --features cluster-connect custom-locations
连接群集
连接到群集:
az connectedk8s connect --name ${clusterName} -g ${resourceGroup} --location $location
创建扩展
创建扩展:
az k8s-extension create -g ${resourceGroup} --cluster-name ${clusterName} --cluster-type connectedClusters --name ${extensionId} --extension-type microsoft.azure.hybridnetwork --release-train preview --scope cluster
创建自定义位置
创建自定义位置:
export ConnectedClusterResourceId=$(az connectedk8s show --resource-group ${resourceGroup} --name ${clusterName} --query id -o tsv)
export ClusterExtensionResourceId=$(az k8s-extension show -c $clusterName -n $extensionId -t connectedClusters -g ${resourceGroup} --query id -o tsv)
az customlocation create -g ${resourceGroup} -n ${customlocationId} --namespace "azurehybridnetwork" --host-resource-id $ConnectedClusterResourceId --cluster-extension-ids $ClusterExtensionResourceId
检索自定义位置值
检索自定义位置值。 需要此信息才能填写站点网络服务 (SNS) 的配置组值。
在 Azure 门户中搜索自定义位置 (customLocationId) 的名称,然后选择“属性”。 在 Essentials 信息区域下找到完整的资源 ID,并查找字段名称 ID。 下图提供了资源 ID 信息所在位置的示例。
提示
完整资源 ID 的格式为:/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.extendedlocation/customlocation/{customLocationName}
为站点网络服务创建用户分配的托管标识
将以下 Bicep 脚本在本地保存为 prerequisites.bicep。
param location string = resourceGroup().location param identityName string = 'identity-for-nginx-sns' resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = { name: identityName location: location } output managedIdentityId string = managedIdentity.id
通过发出以下命令,开始部署用户分配的托管标识。
az deployment group create --name prerequisites --resource-group ${resourceGroup} --template-file prerequisites.bicep
此脚本创建托管标识。
检索托管标识的资源 ID
运行以下命令,查找所创建的托管标识的资源 ID。
az deployment group list -g ${resourceGroup} | jq -r --arg Deployment prerequisites '.[] | select(.name == $Deployment).properties.outputs.managedIdentityId.value'
复制并保存输出,即资源标识。 创建站点网络服务时将需要此输出。
更新站点网络服务 (SNS) 权限
若要执行这些任务,需要操作员和网络功能定义发布服务器资源组中的“所有者”或“用户访问管理员”角色。 你在前面的任务中创建了操作员资源组。 网络功能定义发布服务器资源组是在快速入门:将 Nginx 容器发布为容器化网络功能 (CNF) 中创建的,并在 input.json 文件中命名为 nginx-publisher-rg。
在前面的步骤中,你在引用资源组内创建了一个标记为“identity-for-nginx-sns”的托管标识。 此标识在部署站点网络服务 (SNS) 方面发挥了重要作用。 按照后续部分中的步骤,向标识授予发布服务器资源组的“参与者”角色以及自身的托管标识操作员角色。 通过此标识,站点网络服务 (SNS) 将获得所需的权限。
向托管标识授予发布服务器资源组的参与者角色
访问 Azure 门户,打开发布网络功能定义时创建的发布服务器资源组。
在资源组的边栏菜单中,选择“访问控制(IAM)”。
选择“添加角色分配”。
在“特权管理员角色”类别下选择“参与者”,然后继续“下一步”。
选择“托管标识” 。
选择“+ 选择成员”,然后查找并选择用户分配的托管标识“identity-for-nginx-sns”。
通过自定义位置向托管标识授予参与者角色
访问 Azure 门户并打开操作员资源组 operator-rg。
在资源组的边栏菜单中,选择“访问控制(IAM)”。
选择“添加角色分配”。
在“特权管理员角色”类别下选择“参与者”,然后继续“下一步”。
选择“托管标识” 。
选择“+ 选择成员”,然后查找并选择用户分配的托管标识“identity-for-nginx-sns”。
向托管标识授予对它自己的“操作员”角色
转到 Azure 门户,搜索“托管标识”。
从“托管标识”列表中选择“identity-for-nginx-sns”。
在边栏菜单中,选择“访问控制(IAM)”。
选择“添加角色分配”。
选择“托管标识操作员”角色,然后继续“下一步”。
选择“托管标识” 。
选择“+ 选择成员”,导航到名为“identity-for-nginx-sns”的用户分配的托管标识,然后继续分配。
选择“查看并分配”。
完成这些文章中概述的所有任务可确保站点网络服务 (SNS) 具有在指定 Azure 环境中有效运行的必要权限。