你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Helm 是一个开源打包工具,有助于安装和管理 Kubernetes 应用程序的生命周期。 与 Linux 包管理器(如 APT 和 Yum)类似,Helm 管理 Kubernetes 图表,这些图表是预配置的 Kubernetes 资源包。
在本快速入门中,你将使用 Helm 在 AKS 上打包并运行应用程序。 有关使用 Helm 安装现有应用程序的详细信息,请参阅在 AKS 中通过 Helm 安装现有应用程序。
先决条件
- Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户。
- 已安装 Azure CLI 或 Azure PowerShell。
- 已安装 Helm v3。
创建 Azure 容器注册表
你需要将容器映像存储在 Azure 容器注册表 (ACR),才能使用 Helm 在 AKS 群集中运行应用程序。 注册表名称在 Azure 中必须唯一,并且包含 5-50 个字母数字字符。 仅允许小写字符。 “基本”SKU 是一个针对成本优化的入口点,适用于可以对存储和吞吐量进行均衡考虑的开发目的。
使用 az group create 命令创建 Azure 资源组。 以下示例在“eastus”位置创建名为“myResourceGroup”的资源组。
az group create --name myResourceGroup --location eastus调用 az acr create 命令创建拥有唯一命名的 Azure 容器注册表。 以下示例使用“基本”SKU 创建名为 myhelmacr 的 ACR。
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic输出应类似于以下示例: 请记下 ACR 的 loginServer 值,因为稍后的步骤会用到它。
{ "adminUserEnabled": false, "creationDate": "2023-12-26T22:36:23.998425+00:00", "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr", "location": "eastus", "loginServer": "myhelmacr.azurecr.io", "name": "myhelmacr", "networkRuleSet": null, "provisioningState": "Succeeded", "resourceGroup": "myResourceGroup", "sku": { "name": "Basic", "tier": "Basic" }, "status": null, "storageAccount": null, "tags": {}, "type": "Microsoft.ContainerRegistry/registries" }
创建 AKS 群集
新 AKS 群集需要访问 ACR 来拉取并运行容器映像。
连接到 AKS 群集
若要在本地连接 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl。
如果使用的是 Azure Cloud Shell,则 kubectl 已安装。
下载示例应用程序
本快速入门使用 Azure Vote 应用程序。
使用
git clone命令从 GitHub 克隆该应用程序。git clone https://github.com/Azure-Samples/azure-voting-app-redis.git使用
azure-vote命令导航到cd目录。cd azure-voting-app-redis/azure-vote/
生成并将示例应用程序推送到 ACR
使用 az acr build 命令生成映像并将其推送到 ACR。 以下示例生成名为 azure-vote-front:v1 的映像,并将其推送到 myhelmacr ACR。 确保将
myhelmacr替换为 ACR 的名称。az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
注意
还可以将 Helm 图表导入 ACR。 有关详细信息,请参阅将 Helm 图表推送和拉取到 Azure 容器注册表。
创建 Helm 图表
使用
helm create命令生成 Helm 图表。helm create azure-vote-front更新 azure-vote-front/Chart.yaml,为 图表存储库中的 redis
https://charts.bitnami.com/bitnami图表添加依赖项,并将appVersion更新为v1,具体如下所示:注意
本指南中显示的容器映像版本经测试可用于此示例,但可能不是最新可用版本。
apiVersion: v2 name: azure-vote-front description: A Helm chart for Kubernetes dependencies: - name: redis version: 17.3.17 repository: https://charts.bitnami.com/bitnami ... # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. appVersion: v1使用
helm dependency update命令更新 helm 图表依赖项。helm dependency update azure-vote-front使用以下更改更新 azure-vote-front/values.yaml。
- 要设置映像详细信息、容器端口和部署名称,请添加 redis 部分。
- 添加 backendName 以将前端部分连接到 redis 部署。
- 将 image.repository 更改为
<loginServer>/azure-vote-front。 - 将 image.tag 更改为
v1。 - 将 service.type 更改为 LoadBalancer。
例如:
replicaCount: 1 backendName: azure-vote-backend-master redis: image: registry: mcr.microsoft.com repository: oss/bitnami/redis tag: 6.0.8 fullnameOverride: azure-vote-backend auth: enabled: false image: repository: myhelmacr.azurecr.io/azure-vote-front pullPolicy: IfNotPresent tag: "v1" ... service: type: LoadBalancer port: 80 ...将
env部分添加到 azure-vote-front/templates/deployment.yaml,以便传递 redis 部署的名称。... containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: REDIS value: {{ .Values.backendName }} ...
运行 Helm 图表
通过
helm install命令使用 Helm chart 来安装应用程序。helm install azure-vote-front azure-vote-front/服务可能需要几分钟才能返回公共 IP 地址。 使用带有
kubectl get service参数的--watch命令来监视进度。kubectl get service azure-vote-front --watch服务准备就绪后,
EXTERNAL-IP值将从<pending>更改为 IP 地址。 按CTRL+C停止kubectl监视过程。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE azure-vote-front LoadBalancer 10.0.18.228 <pending> 80:32021/TCP 6s ... azure-vote-front LoadBalancer 10.0.18.228 52.188.140.81 80:32021/TCP 2m6s使用
<EXTERNAL-IP>在浏览器中导航到应用程序的负载均衡器,以查看示例应用程序。
删除群集
使用 az group delete 命令删除资源组、AKS 群集、Azure 容器注册表、存储在 ACR 中的容器映像以及所有相关资源,其中
--yes参数用于确认删除,--no-wait参数用于返回到命令提示符,而无需等待操作完成。az group delete --name myResourceGroup --yes --no-wait
注意
如果使用系统分配的托管标识(本快速入门中的默认标识选项)创建了 AKS 群集,则相应标识将由平台管理,不需要将其删除。
如果使用服务主体创建了 AKS 群集,则删除群集时不会删除该服务主体。 要删除服务主体,请参阅 AKS 服务主体的注意事项和删除。
后续步骤
有关使用 Helm 的详细信息,请参阅 Helm 文档。