快速入门:使用 Helm 在 Azure Kubernetes 服务 (AKS) 上进行开发
Helm 是一种开放源打包工具,有助于安装和管理 Kubernetes 应用程序的生命周期。 与 Linux 包管理器(如 APT 和 Yum)类似,Helm 管理 Kubernetes chart,这些 chart 是预配置的 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 chinaeast2
调用 az acr create 命令创建拥有唯一命名的 Azure 容器注册表。 以下示例使用 Basic 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.cn", "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 来拉取并运行容器映像。
使用带有
--attach-acr
参数的 az aks create 命令创建 AKS 群集,以授予群集对 ACR 的访问权限。 以下示例创建名为 myAKSCluster 的 AKS 群集,并授予它访问 myhelmacr ACR 的权限。 确保将myhelmacr
替换为 ACR 的名称。az aks create --resource-group myResourceGroup --name myAKSCluster --location chinaeast2 --attach-acr myhelmacr --generate-ssh-keys
连接到 AKS 群集
若要在本地连接 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl。
在本地使用 az aks install-cli 命令安装
kubectl
。az aks install-cli
使用 az aks get-credentials 命令将
kubectl
配置为连接到你的 Kubernetes 群集。 以下示例获取 myResourceGroup 中名为 myAKSCluster 的 AKS 群集的凭据。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
下载示例应用程序
本快速入门使用了 Azure Vote 应用程序。
使用
git clone
命令从 GitHub 克隆该应用程序。git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
使用
cd
命令导航到azure-vote
目录。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,为
https://charts.bitnami.com/bitnami
图表存储库中的 redis 图表添加依赖项,并将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.azk8s.cn repository: oss/bitnami/redis tag: 6.0.8 fullnameOverride: azure-vote-backend auth: enabled: false image: repository: myhelmacr.azurecr.cn/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 地址。 使用带有
--watch
参数的kubectl get service
命令来监视进度。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 文档。