你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本教程介绍如何使用服务连接器,通过工作负载身份将 Azure 存储 帐户连接到 Azure Kubernetes 服务 (AKS) 群集中的 Pod。 你将完成以下任务:
- 创建 AKS 群集和Azure 存储帐户。
- 使用服务连接器在 AKS 群集与 Azure 存储 帐户之间创建连接。
- 克隆从 AKS 群集连接到 Azure 存储 帐户的示例应用程序。
- 将应用程序部署到 AKS 群集中的 Pod 并测试连接。
- 清理资源。
先决条件
- 基本了解容器、 工作负荷标识和 AKS。 有关详细信息,请参阅
Tutorial:为 Azure Kubernetes 服务 (AKS)0 准备应用程序。 - 在其中您拥有 Azure 资源写入权限的 Azure 订阅,位于支持服务连接器的 Azure 区域中,并且有足够的 AKS 支持和计算配额来运行本教程。 免费创建帐户。
- 在 Azure 订阅中注册的
Microsoft.ServiceLinker、Microsoft.ContainerService、Microsoft.ContainerRegistry和Microsoft.ManagedIdentity资源提供程序。 可以运行az provider register -n Microsoft.[service]来注册提供程序。 - Git 访问和克隆示例存储库。
- 已安装 Docker 和 kubectl 来管理容器映像和 Kubernetes 资源。 在本地安装
kubectl,通过运行az aks install-cli。 - Azure CLI已安装。
创建 Azure 资源
通过运行 az login 并按照提示登录Azure。
创建用于本教程的 Azure 资源组,将
<region>占位符替换为有效值。location必须是一个Azure区域,其中订阅有足够的计算配额用于Azure资源,并且对任何服务没有限制。az group create \ --name MyResourceGroup \ --location <region>运行以下命令,创建 AKS 群集以包含服务连接、Pod 定义和示例应用程序。 有关详细信息,请参阅
Quickstart:使用 Azure CLI 。az aks create \ --resource-group MyResourceGroup \ --name MyAKSCluster \ --enable-managed-identity \ --node-count 1运行以下命令连接到群集。
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster创建一个Azure 存储帐户,作为 AKS 群集连接到的目标服务,以及示例应用程序与之交互。 有关详细信息,请参阅 创建 Azure 存储帐户。 运行下列命令,将
<storageaccountname>替换为 3-24 个小写或数字字符的名称,并在 Azure 中是唯一的。az storage account create \ --resource-group MyResourceGroup \ --name <storageaccountname> \ --sku Standard_LRS创建一个 Azure 容器注册表,以托管 AKS pod 定义中所使用的应用程序容器镜像。 有关详细信息,请参阅 Quickstart:使用 Azure 门户创建Azure容器注册表。 运行以下命令,将
<registryname>替换为包括 5 到 50 个小写字母或数字字符的唯一名称,并且在 Azure 中必须是唯一的。az acr create \ --resource-group MyResourceGroup \ --name <registryname> \ --sku Standard启用匿名拉取,以便 AKS 群集可以拉取注册表镜像。 将
<registryname>占位符替换为注册表名称。az acr update \ --resource-group MyResourceGroup \ --name <registryname> \ --anonymous-pull-enabled运行以下命令以创建用户分配的托管身份,该身份可用于服务连接以启用 AKS 工作负载的工作负荷身份。 有关详细信息,请参阅使用 Azure 门户管理用户分配的托管标识。
az identity create \ --resource-group MyResourceGroup \ --name MyIdentity
使用服务连接器创建服务连接
使用 Azure CLI 或 Azure 门户在 AKS 群集与 Azure 存储 帐户之间创建服务连接。
运行以下Azure CLI命令,创建与Azure存储帐户的服务连接。 将 <storageaccountname> 替换为您的存储帐户名称,<user-identity-resource-id> 替换为您用户分配的托管标识资源 ID。
可以从上述 az identity create 命令的输出中获取用户分配的托管标识资源 ID,或使用 /subscriptions/<subscription-id>/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyIdentity 格式。
az aks connection create storage-blob \
--resource-group MyResourceGroup \
--name MyAKSCluster \
--target-resource-group MyResourceGroup \
--account <storageaccountname> \
--workload-identity <user-identity-resource-id>
创建连接后,Azure门户服务连接器页会显示有关新连接的信息。 在本教程的后面部分编辑 pod.yaml 文件时,可以使用此信息。
创建示例应用程序
克隆示例存储库,然后更改为包含示例应用的目录。 从此文件夹中运行剩余的命令。
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git cd serviceconnector-aks-samples/azure-storage-workload-identity使用
az acr build命令生成映像并将其推送到容器注册表。 将<registryname>占位符替换为注册表名称。az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./使用
az acr repository list命令查看容器注册表中的映像。 将<registryname>占位符替换为注册表名称。az acr repository list --name <registryname> --output table
运行应用程序并测试连接
替换本地应用文件夹中 pod.yaml 文件中的以下占位符:
-
<YourContainerImage>:替换为容器注册表中的映像名称,例如<registryname>.azurecr.io/sc-demo-storage-identity:latest。 -
<ServiceAccountCreatedByServiceConnector>:替换为在创建连接后创建的服务帐户服务连接器。 可以在 Azure 门户中的 AKS 群集服务连接器页上检查服务帐户名称。 -
<SecretCreatedByServiceConnector>:替换为在创建连接后创建的机密服务连接器。 可以在 Azure 门户中的 AKS 群集服务连接器页上检查服务帐户名称。
-
使用
kubectl apply.. 将 Pod 部署到群集。 该命令在 AKS 群集的默认命名空间中创建名为sc-demo-storage-identity的 Pod。kubectl apply -f pod.yaml使用
kubectl查看 Pod 来检查部署是否成功。kubectl get pod/sc-demo-storage-identity使用
kubectl查看日志来检查是否已建立连接。kubectl logs pod/sc-demo-storage-identity
清理资源
如果不再需要为本教程创建的Azure资源,可以通过删除 MyResourceGroup 资源组来删除它们。
az group delete \
--resource-group MyResourceGroup
