你当前正在访问 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}

为站点网络服务创建用户分配的托管标识

  1. 将以下 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
    
  2. 通过发出以下命令,开始部署用户分配的托管标识。

    az deployment group create --name prerequisites --resource-group ${resourceGroup}  --template-file prerequisites.bicep
    
  3. 此脚本创建托管标识。

检索托管标识的资源 ID

  1. 运行以下命令,查找所创建的托管标识的资源 ID。

    az deployment group list -g ${resourceGroup} | jq -r --arg Deployment prerequisites '.[] | select(.name == $Deployment).properties.outputs.managedIdentityId.value'
    
  2. 复制并保存输出,即资源标识。 创建站点网络服务时将需要此输出。

更新站点网络服务 (SNS) 权限

若要执行这些任务,需要操作员和网络功能定义发布服务器资源组中的“所有者”或“用户访问管理员”角色。 你在前面的任务中创建了操作员资源组。 网络功能定义发布服务器资源组是在快速入门:将 Nginx 容器发布为容器化网络功能 (CNF) 中创建的,并在 input.json 文件中命名为 nginx-publisher-rg。

在前面的步骤中,你在引用资源组内创建了一个标记为“identity-for-nginx-sns”的托管标识。 此标识在部署站点网络服务 (SNS) 方面发挥了重要作用。 按照后续部分中的步骤,向标识授予发布服务器资源组的“参与者”角色以及自身的托管标识操作员角色。 通过此标识,站点网络服务 (SNS) 将获得所需的权限。

向托管标识授予发布服务器资源组的参与者角色

  1. 访问 Azure 门户,打开发布网络功能定义时创建的发布服务器资源组。

  2. 在资源组的边栏菜单中,选择“访问控制(IAM)”

  3. 选择“添加角色分配”

    显示发布者资源组添加角色分配的屏幕截图。

  4. 在“特权管理员角色”类别下选择“参与者”,然后继续“下一步”。

    显示已选择参与者的特权管理员角色的屏幕截图。

  5. 选择“托管标识” 。

  6. 选择“+ 选择成员”,然后查找并选择用户分配的托管标识“identity-for-nginx-sns”

    显示具有用户分配的托管标识的所选托管标识的屏幕截图。

通过自定义位置向托管标识授予参与者角色

  1. 访问 Azure 门户并打开操作员资源组 operator-rg

  2. 在资源组的边栏菜单中,选择“访问控制(IAM)”

  3. 选择“添加角色分配”

    显示发布者资源组将角色分配添加到自定义位置的屏幕截图。

  4. 在“特权管理员角色”类别下选择“参与者”,然后继续“下一步”。

    显示已选择参与者的特权管理员角色的屏幕截图。

  5. 选择“托管标识” 。

  6. 选择“+ 选择成员”,然后查找并选择用户分配的托管标识“identity-for-nginx-sns”

    显示具有用户分配的托管标识的所选托管标识的屏幕截图。

向托管标识授予对它自己的“操作员”角色

  1. 转到 Azure 门户,搜索“托管标识”

  2. 从“托管标识”列表中选择“identity-for-nginx-sns”

  3. 在边栏菜单中,选择“访问控制(IAM)”

  4. 选择“添加角色分配”

    显示 nginx SNS 的标识添加角色分配的屏幕截图。

  5. 选择“托管标识操作员”角色,然后继续“下一步”

    显示添加角色分配的屏幕截图,其中选择了托管标识操作员。

  6. 选择“托管标识” 。

  7. 选择“+ 选择成员”,导航到名为“identity-for-nginx-sns”的用户分配的托管标识,然后继续分配

    显示具有用户分配的托管标识的所选托管标识的屏幕截图。

  8. 选择“查看并分配”。

完成这些文章中概述的所有任务可确保站点网络服务 (SNS) 具有在指定 Azure 环境中有效运行的必要权限。

后续步骤