快速入門:使用 Helm 開發 Azure Kubernetes Service (AKS)
Helm 是開放原始碼的封裝工具,可協助您安裝和管理 Kubernetes 應用程式的生命週期。 Helm 類似於 APT 和 Yum 等 Linux 套件管理員,可用於管理 Kubernetes 圖表,即預先設定的 Kubernetes 資源套件。
在本快速入門中,您將使用 Helm 在 AKS 上封裝和執行應用程式。 如需使用 Helm 安裝現有應用程式的詳細資訊,請參閱在 AKS 中使用 Helm 安裝現有的應用程式。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶。
- 已安裝 Azure CLI 或 Azure PowerShell。
- 已安裝 Helm v3。
建立 Azure Container Registry
您必須將容器映像儲存在Azure Container Registry(ACR) 中,才能使用 Helm 在 AKS 叢集中執行您的應用程式。 登錄名稱在 Azure 內必須是唯一的,且包含 5-50 個英數字元。 只允許小寫字元。 基本 SKU 對開發用途而言是最符合成本效益的進入點,可在儲存體和輸送量之間取得平衡。
使用 az group create 命令建立 Azure 資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。
az group create --name myResourceGroup --location eastus
藉由呼叫 az acr create 命令,建立具有唯一名稱的 Azure Container Registry。 下列範例會使用基本 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,以提取容器映像並加以執行。
使用 az aks create 命令搭配
--attach-acr
參數建立 AKS 叢集,以便將 ACR 的存取權授與叢集。 下列範例會建立名為 myAKSCluster 的 AKS 叢集,並授與 myhelmacr ACR 的存取權。 確定將myhelmacr
取代為 ACR 的名稱。az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
連線至您的 AKS 叢集
若要在本機連線 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 投票應用程式。
使用
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,以從圖表存放庫新增 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 圖表安裝您的應用程式。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 命令搭配
--yes
參數確認刪除,移除您的資源群組、AKS 叢集、Azure 容器登錄、儲存在 ACR 中的容器映像,並將--no-wait
參數傳回命令提示字元,而不需要等待作業完成。az group delete --name myResourceGroup --yes --no-wait
注意
如果您使用系統指派的受控識別建立 AKS 叢集 (本快速入門使用的預設身分識別選項),則身分識別是由平台管理,而且不需要移除。
如果您使用服務主體建立 AKS 叢集,則刪除叢集時不會移除服務主體。 若要移除服務主體的步驟,請參閱 AKS 服務主體的考量和刪除。
下一步
如需使用 Helm 的詳細資訊,請參閱 Helm 文件。