你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用工作负载标识通过服务连接器连接到 Azure Kubernetes 服务 (AKS) 中的 Azure 存储帐户
了解如何在 AKS 群集中创建 pod,该群集在服务连接器的帮助下使用工作负载标识与 Azure 存储帐户进行通信。 在本教程中,请完成以下任务:
- 创建 AKS 群集和 Azure 存储帐户。
- 使用服务连接器在 AKS 群集与 Azure 存储帐户之间创建连接。
- 克隆一个示例应用程序,该应用程序从 AKS 群集与 Azure 存储帐户通信。
- 将应用程序部署到 AKS 群集中的 Pod 并测试连接。
- 清理资源。
重要
AKS 中的服务连接目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 安装 Azure CLI,并使用 az login 命令登录 Azure CLI。
- 安装 Docker 和 kubectl,以管理容器映像和 Kubernetes 资源。
- 基本了解容器和 AKS。 从为 AKS 准备应用程序开始。
- 基本了解工作负载标识。
创建 Azure 资源
为本教程创建资源组。
az group create \ --name MyResourceGroup \ --location eastus
使用以下命令或参考教程创建 AKS 群集。 我们将创建服务连接、Pod 定义并将示例应用程序部署到此群集。
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 群集并与示例应用程序交互的目标服务。
az storage account create \ --resource-group MyResourceGroup \ --name MyStorageAccount \ --location eastus \ --sku Standard_LRS
使用以下命令或参考教程创建 Azure 容器注册表。 注册表托管示例应用程序的容器映像,该映像将由 AKS Pod 定义使用。
az acr create \ --resource-group MyResourceGroup \ --name MyRegistry \ --sku Standard
启用匿名拉取,以便 AKS 群集可以使用注册表中的映像。
az acr update \ --resource-group MyResourceGroup \ --name MyRegistry \ --anonymous-pull-enabled
使用以下命令或参考教程创建用户分配的托管标识。 用户分配的托管标识用于创建服务连接,以便为 AKS 工作负载启用工作负载标识。
az identity create \ --resource-group MyResourceGroup \ --name MyIdentity
使用服务连接器创建服务连接(预览版)
使用 Azure 门户或 Azure CLI 在 AKS 群集与 Azure 存储帐户之间创建服务连接。
在 Azure 门户中打开“Kubernetes 服务”,并从左侧菜单中选择“服务连接器”。
选择“创建”并填写设置,如下所示。 将其他设置保留为其默认值。
“基本信息”选项卡:
设置 选择 说明 Kubernetes 命名空间 default 群集中需要进行连接的命名空间。 服务类型 存储 - Blob 目标服务类型。 连接名称 storage_conn 使用服务连接器提供的连接名称或选择自己的连接名称。 订阅 <MySubscription>
Azure Blob 存储目标服务的订阅。 存储帐户 <MyStorageAccount>
要连接到的目标存储帐户。 客户端类型 Python 用于连接到目标服务的代码语言或框架。 “身份验证”选项卡:
身份验证设置 选择 说明 身份验证类型 工作负载标识 服务连接器身份验证类型。 用户分配的托管标识 <MyIdentity>
需要用户分配的托管标识才能启用工作负载标识。 创建连接后,“服务连接器”页会显示有关新连接的信息。
克隆示例应用程序
克隆示例存储库:
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
转到 Azure 存储的存储库示例文件夹:
cd serviceconnector-aks-samples/azure-storage-workload-identity
生成并推送容器映像
使用 Azure CLI
az acr build
命令生成映像并将其推送到容器注册表。az acr build --registry <MyRegistry> --image sc-demo-storage-identity:latest ./
使用
az acr repository list
命令查看容器注册表中的映像。az acr repository list --name <MyRegistry> --output table
运行应用程序并测试连接
替换
azure-storage-identity
文件夹中pod.yaml
文件中的占位符。- 将
<YourContainerImage>
替换为在上一步中生成的映像名称,例如<MyRegistry>.azurecr.io/sc-demo-storage-identity:latest
。 - 将
<ServiceAccountCreatedByServiceConnector>
替换为在创建连接后由服务连接器创建的服务帐户。 可以在服务连接器的 Azure 门户中查看服务帐户名称。 - 将
<SecretCreatedByServiceConnector>
替换为在创建连接后由服务连接器创建的机密。 可以在服务连接器的 Azure 门户中查看机密名称。
- 将
使用
kubectl apply
命令将 Pod 部署到群集。 使用 az aks install-cli 命令在本地安装kubectl
(如果尚未安装)。 该命令在 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
清理资源
如果不需要重复使用在本教程中创建的资源,请通过删除资源组来删除创建的所有资源。
az group delete \
--resource-group MyResourceGroup
后续步骤
阅读以下文章,详细了解服务连接器的概念以及它如何帮助 AKS 连接到服务。