培训
模块
指导项目 - 将应用程序部署到 Azure Kubernetes 服务 - Training
欢迎使用此交互式技能验证体验。 完成本模块有助于通过 Azure Kubernetes 服务评估为部署和管理容器做好准备。
认证
Microsoft Certified: Azure Administrator Associate - Certifications
演示在 Microsoft Azure 中配置、管理、保护和管理关键专业功能的关键技能。
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Helm 是一种开放源打包工具,有助于安装和管理 Kubernetes 应用程序的生命周期。 与 Linux 包管理器(如 APT 和 Yum)类似,Helm 管理 Kubernetes chart,这些 chart 是预配置的 Kubernetes 资源的包 。
在本快速入门中,你将使用 Helm 在 AKS 上打包并运行应用程序。 有关使用 Helm 安装现有应用程序的详细信息,请参阅在 AKS 中通过 Helm 安装现有应用程序。
你需要将容器映像存储在 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 容器注册表。 以下示例使用 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.io",
"name": "myhelmacr",
"networkRuleSet": null,
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"sku": {
"name": "Basic",
"tier": "Basic"
},
"status": null,
"storageAccount": null,
"tags": {},
"type": "Microsoft.ContainerRegistry/registries"
}
新 AKS 群集需要访问 ACR 来拉取并运行容器映像。
使用带有 --attach-acr
参数的 az aks create 命令创建 AKS 群集,以授予群集对 ACR 的访问权限。 以下示例创建名为 myAKSCluster 的 AKS 群集,并授予它访问 myhelmacr ACR 的权限。 确保将 myhelmacr
替换为 ACR 的名称。
az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
若要在本地连接 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl。 如果使用的是 Azure Cloud Shell,则 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/
使用 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 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。
<loginServer>/azure-vote-front
。v1
。例如:
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 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 文档。
培训
模块
指导项目 - 将应用程序部署到 Azure Kubernetes 服务 - Training
欢迎使用此交互式技能验证体验。 完成本模块有助于通过 Azure Kubernetes 服务评估为部署和管理容器做好准备。
认证
Microsoft Certified: Azure Administrator Associate - Certifications
演示在 Microsoft Azure 中配置、管理、保护和管理关键专业功能的关键技能。