快速入門:使用 Terraform 部署 Azure Kubernetes Service (AKS) 叢集
Azure Kubernetes Service (AKS) 是受控 Kubernetes 服務,可讓您快速部署及管理叢集。 在本快速入門中,您將:
- 使用 Terraform 部署 AKS 叢集。
- 使用一組微服務和 Web 前端模擬零售情節,執行範例多容器應用程式。
注意
若要開始快速佈建 AKS 叢集,本文包含僅針對評估目的部署具有預設設定值之叢集的步驟。 在部署生產就緒叢集之前,建議您先熟悉我們的基準參考架構,考慮其如何符合您的業務需求。
開始之前
- 本快速入門假設您已有 Kubernetes 概念的基本知識。 如需詳細資訊,請參閱 Azure Kubernetes Services (AKS) 的 Kubernetes 核心概念。
- 您需要具有有效訂用帳戶的 Azure 帳戶。 如果您沒有帳戶,可免費建立帳戶。
- 請根據您的命令列介面遵循指示。
- 若要深入了解如何建立 Windows Server 節點集區,請參閱建立支援 Windows Server 容器的 AKS 叢集。
注意
Azure Linux 節點集區現已正式發行 (GA)。 若要了解優點和部署步驟,請參閱適用於 AKS 的 Azure Linux 容器主機簡介 (部分機器翻譯)。
- 安裝及設定 Terraform。
- 下載 kubectl。
- 使用 random_pet 為 Azure 資源群組名稱建立隨機值。
- 使用 azurerm_resource_group 建立 Azure 資源群組。
- 存取 AzureRM 提供者的設定,以使用 azurerm_client_config取得 Azure 物件識別碼。
- 使用 azurerm_kubernetes_cluster 建立 Kubernetes 叢集。
- 建立 AzAPI 資源 azapi_resource。
- 建立 AzAPI 資源,以使用 azapi_resource_action 產生 SSH 金鑰組。
登入您的 Azure 帳戶
首先,登入您的 Azure 帳戶,並使用下一節所述的其中一種方法進行驗證。
Terraform 只能支援使用 Azure CLI 向 Azure 進行驗證。 不支援使用 Azure PowerShell 進行驗證。 因此,雖然您可以在執行 Terraform 工作時使用 Azure PowerShell 模組,但您必須先向 Azure 進行驗證。
實作 Terraform 程式碼
注意
本文中的範例程式碼位於 Azure Terraform GitHub 存放庫。 您可以檢視內含目前和舊版 Terraform 測試結果的記錄檔。
建立可用來測試範例 Terraform 程式碼的目錄,並將其設為您目前的目錄。
建立名為
providers.tf
的檔案,並插入下列程式碼:terraform { required_version = ">=1.0" required_providers { azapi = { source = "azure/azapi" version = "~>1.5" } azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } time = { source = "hashicorp/time" version = "0.9.1" } } } provider "azurerm" { features {} }
建立名為
ssh.tf
的檔案,並插入下列程式碼:resource "random_pet" "ssh_key_name" { prefix = "ssh" separator = "" } resource "azapi_resource_action" "ssh_public_key_gen" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" resource_id = azapi_resource.ssh_public_key.id action = "generateKeyPair" method = "POST" response_export_values = ["publicKey", "privateKey"] } resource "azapi_resource" "ssh_public_key" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" name = random_pet.ssh_key_name.id location = azurerm_resource_group.rg.location parent_id = azurerm_resource_group.rg.id } output "key_data" { value = azapi_resource_action.ssh_public_key_gen.output.publicKey }
建立名為
main.tf
的檔案,並插入下列程式碼:# Generate random resource group name resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_pet" "azurerm_kubernetes_cluster_name" { prefix = "cluster" } resource "random_pet" "azurerm_kubernetes_cluster_dns_prefix" { prefix = "dns" } resource "azurerm_kubernetes_cluster" "k8s" { location = azurerm_resource_group.rg.location name = random_pet.azurerm_kubernetes_cluster_name.id resource_group_name = azurerm_resource_group.rg.name dns_prefix = random_pet.azurerm_kubernetes_cluster_dns_prefix.id identity { type = "SystemAssigned" } default_node_pool { name = "agentpool" vm_size = "Standard_D2_v2" node_count = var.node_count } linux_profile { admin_username = var.username ssh_key { key_data = azapi_resource_action.ssh_public_key_gen.output.publicKey } } network_profile { network_plugin = "kubenet" load_balancer_sku = "standard" } }
建立名為
variables.tf
的檔案,並插入下列程式碼:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "node_count" { type = number description = "The initial quantity of nodes for the node pool." default = 3 } variable "msi_id" { type = string description = "The Managed Service Identity ID. Set this value if you're running this example using Managed Identity as the authentication method." default = null } variable "username" { type = string description = "The admin username for the new cluster." default = "azureadmin" }
建立名為
outputs.tf
的檔案,並插入下列程式碼:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "kubernetes_cluster_name" { value = azurerm_kubernetes_cluster.k8s.name } output "client_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_certificate sensitive = true } output "client_key" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_key sensitive = true } output "cluster_ca_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].cluster_ca_certificate sensitive = true } output "cluster_password" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].password sensitive = true } output "cluster_username" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].username sensitive = true } output "host" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].host sensitive = true } output "kube_config" { value = azurerm_kubernetes_cluster.k8s.kube_config_raw sensitive = true }
初始化 Terraform
執行 terraform init 來初始化 Terraform 部署。 此命令會下載管理 Azure 資源所需的 Azure 提供者。
terraform init -upgrade
重點︰
-upgrade
參數會將必要的提供者外掛程式升級至符合設定版本條件約束的最新版本。
建立 Terraform 執行計畫
執行 terraform plan 以建立執行計畫。
terraform plan -out main.tfplan
重點︰
terraform plan
命令會建立執行計畫,但不會執行。 相反地,其會決定要在您指定的設定檔中建立設定所需的動作。 此模式可讓您在對實際資源進行任何變更之前,先確認執行方案是否符合您的預期。- 選用的
-out
參數可讓您指定計畫的輸出檔。 使用-out
參數可確保您所檢閱的方案就是所套用的方案。
套用 Terraform 執行計畫
執行 terraform apply 將執行計畫套用至您的雲端基礎結構。
terraform apply main.tfplan
重點︰
- 範例
terraform apply
命令假設您之前已執行過terraform plan -out main.tfplan
。 - 如果您為
-out
參數指定了不同的檔案名稱,請在呼叫terraform apply
時使用該檔案名稱。 - 若您未使用
-out
參數,請呼叫terraform apply
,不需要使用參數。
驗證結果
使用下列命令取得 Azure 資源資源群組名稱。
resource_group_name=$(terraform output -raw resource_group_name)
使用 az aks list 命令顯示新 Kubernetes 叢集的名稱。
az aks list \ --resource-group $resource_group_name \ --query "[].{\"K8s cluster name\":name}" \ --output table
從 Terraform 狀態取得 Kubernetes 設定,並將其儲存在
kubectl
可以使用下列命令讀取的檔案中。echo "$(terraform output kube_config)" > ./azurek8s
確認先前的命令未使用下列命令新增 ASCII EOT 字元。
cat ./azurek8s
重點︰
- 如果您在開頭看到
<< EOT
,並在結尾看到EOT
,請從檔案中移除這些字元。 否則,您可能會收到下列錯誤訊息︰error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context
- 如果您在開頭看到
設定環境變數,讓
kubectl
可以使用下列命令來挑選正確的設定。export KUBECONFIG=./azurek8s
使用
kubectl get nodes
命令驗證叢集的健康情況。kubectl get nodes
重點︰
- 建立 AKS 叢集時,已啟用監視來擷取叢集節點和 Pod 的健康情況計量。 這些健康情況計量可在 Azure 入口網站中取得。 如需容器健康情況監視的詳細資訊,請參閱監視 Azure Kubernetes Service 健康情況。
- 套用 Terraform 執行計畫時,有數個金鑰值分類為輸出。 例如,輸出主機位址、AKS 叢集使用者名稱及 AKS 叢集密碼。
部署應用程式
若要部署應用程式,您可以使用資訊清單檔來建立執行 AKS 市集應用程式所需的所有物件。 Kubernetes 資訊清單檔會定義叢集所需的狀態,例如要執行哪些容器映像。 資訊清單包含下列 Kubernetes 部署和服務:
- 市集前端:供客戶檢視產品和下單的 Web 應用程式。
- 產品服務:顯示產品資訊。
- 訂單服務:下單。
- Rabbit MQ:訂單佇列的訊息佇列。
注意
除非是針對生產環境的永續性儲存,否則不建議執行具狀態容器,例如 Rabbit MQ。 這裡使用具狀態容器是為了簡單起見,但我們建議使用受管理的服務,例如 Azure CosmosDB 或 Azure 服務匯流排。
建立名為
aks-store-quickstart.yaml
的檔案,然後將下列資訊清單複製進來:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
如需 YAML 資訊清單檔案的詳細資訊,請參閱部署和 YAML 資訊清單。
如果您在本地建立並儲存 YAML 檔案,則可以選取 [上傳/下載檔案] 按鈕,然後從本地文件系統選取檔案,將資訊清單檔上傳至 CloudShell 裡的預設目錄。
使用
kubectl apply
命令來部署應用程式,並指定 YAML 資訊清單的名稱。kubectl apply -f aks-store-quickstart.yaml
下列範例輸出會顯示部署和服務:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
測試應用程式
當應用程式執行時,Kubernetes 服務會將應用程式前端公開至網際網路。 此程序可能需要幾分鐘才能完成。
使用
kubectl get pods
命令檢視已部署 Pod 的狀態。 讓全部 Pod 都是Running
,再繼續。kubectl get pods
檢查市集前端應用程式的公用 IP 位址。 使用
kubectl get service
命令搭配--watch
引數來監視進度。kubectl get service store-front --watch
store-front
服務的 EXTERNAL-IP 輸出一開始會顯示為擱置:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
當 EXTERNAL-IP 位址從暫止變成實際的公用 IP 位址時,請使用
CTRL-C
停止kubectl
監看式流程。下列範例輸出顯示指派給服務的有效公用 IP 位址:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
若要查看 Azure 市集應用程式的實際運作情況,請開啟網頁瀏覽器並瀏覽至服務的外部 IP 位址。
清除資源
刪除 AKS 資源
當您不再需要透過 Terraform 建立的資源時,請執行下列步驟:
執行 terraform plan 並指定
destroy
旗標。terraform plan -destroy -out main.destroy.tfplan
重點︰
terraform plan
命令會建立執行計畫,但不會執行。 相反地,其會決定要在您指定的設定檔中建立設定所需的動作。 此模式可讓您在對實際資源進行任何變更之前,先確認執行方案是否符合您的預期。- 選用的
-out
參數可讓您指定計畫的輸出檔。 使用-out
參數可確保您所檢閱的方案就是所套用的方案。
執行 terraform apply 以套用執行方案。
terraform apply main.destroy.tfplan
刪除服務主體
使用下列命令取得服務主體識別碼。
sp=$(terraform output -raw sp)
使用 az ad sp delete 命令刪除服務主體。
az ad sp delete --id $sp
- 安裝 Azure Developer CLI (AZD)
- 安裝及設定 Terraform。
- 您可以檢閱 Azure-Samples/aks-store-demo 存放庫中所使用的應用程式程式碼。
複製 Azure Developer CLI 範本
Azure Developer CLI 可讓您從 Azure-Samples 存放庫快速下載範例。 在我們的快速入門中,您會下載 aks-store-demo
應用程式。 如需一般使用案例的詳細資訊,請參閱 azd
概觀。
使用
azd init
命令搭配--template
參數,從 Azure-Samples 存放庫複製 AKS 存放區示範範本。azd init --template Azure-Samples/aks-store-demo
輸入僅使用英數位元和連字號的專案環境名稱,例如 aks-terraform-1。
Enter a new environment name: aks-terraform-1
登入您的 Azure 雲端帳戶
此 azd
範本包含建立服務所需的所有程式碼,但您必須登入您的 Azure 帳戶,才能在 AKS 上裝載應用程式。
使用
azd auth login
命令登入您的帳戶。azd auth login
複製輸出中顯示的裝置程式碼,然後按 Enter 以登入。
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...
重要
如果您使用網路外虛擬機器或 GitHub Codespace,某些 Azure 安全性策略會在用來利用
azd auth login
登入時造成衝突。 如果您在這裡遇到問題,可以遵循提供的 azd auth 因應措施,這牽涉到使用對執行azd auth login
之後重新導向至 localhost URL 的curl
要求。在貴組織的登入頁面上,使用您的認證進行驗證。
確認您嘗試從 Azure CLI 進行連線。
確認「裝置程式碼驗證已完成。 登入 Azure」訊息出現在您的原始終端中。
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
azd auth 因應措施
此因應措施會要求您安裝 Azure CLI。
開啟終端機視窗,並使用
az login
命令利用 Azure CLI 登入,並將--scope
參數設定為https://graph.microsoft.com/.default
。az login --scope https://graph.microsoft.com/.default
您應該重新導向至新索引標籤中的驗證頁面,以建立瀏覽器存取權杖,如下列範例中所示:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
嘗試使用
azd auth login
登入之後,複製您所收到網頁的 localhost URL。在新終端機視窗中,使用下列
curl
要求進行登入。 請務必將<localhost>
預留位置取代為您在上一個步驟中複製的 localhost URL。curl <localhost>
成功的登入會輸出 HTML 網頁,如下列範例所示:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/"> <title>Login successfully</title> <style> body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } code { font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; display: inline-block; background-color: rgb(242, 242, 242); padding: 12px 16px; margin: 8px 0px; } </style> </head> <body> <h3>You have logged into Microsoft Azure!</h3> <p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p> <h3>Announcements</h3> <p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p> <p>You may opt-in to use WAM by running the following commands:</p> <code> az config set core.allow_broker=true<br> az account clear<br> az login </code> </body> </html>
關閉目前的終端機,並開啟原始終端機。 您應該會看到訂用帳戶的 JSON 清單。
複製您所要使用訂用帳戶的
id
欄位。使用
az account set
(部分機器翻譯) 命令來設定您的訂用帳戶。az account set --subscription <subscription_id>
建立及部署叢集的資源
若要部署應用程式,您可以使用 azd up
命令來建立執行 AKS 市集應用程式所需的全部物件。
azure.yaml
檔案會定義叢集所需的狀態,例如要擷取的容器映像,並包含下列 Kubernetes 部署和服務:
- 市集前端:供客戶檢視產品和下單的 Web 應用程式。
- 產品服務:顯示產品資訊。
- 訂單服務:下單。
- Rabbit MQ:訂單佇列的訊息佇列。
注意
除非是針對生產環境的永續性儲存,否則不建議執行具狀態容器,例如 Rabbit MQ。 這裡使用具狀態容器是為了簡單起見,但我們建議使用受管理的服務,例如 Azure Cosmos DB 或 Azure 服務匯流排。
部署應用程式資源
本快速入門的 azd
範本會建立具有 AKS 叢集和 Azure Key Vault 的新資源群組。 金鑰保存庫會儲存用戶端秘密,並在 pets
命名空間中執行服務。
使用
azd up
命令建立所有應用程式資源。azd up
azd up
會執行azd-hooks
資料夾內的所有勾點,以預先註冊、佈建及部署應用程式服務。自訂勾點,以將自訂程式碼新增至
azd
工作流程階段。 如需詳細資訊,請參閱azd
勾點參考。選取您計費使用量的 Azure 訂用帳戶。
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
選取要部署應用程式的目標區域。
Select an Azure location to use: [Use arrows to move, type to filter] 1. (South America) Brazil Southeast (brazilsoutheast) 2. (US) Central US (centralus) 3. (US) East US (eastus) > 43. (US) East US 2 (eastus2) 4. (US) East US STG (eastusstg) 5. (US) North Central US (northcentralus) 6. (US) South Central US (southcentralus)
azd
會自動執行預先佈建和後置佈建勾點,以建立應用程式的資源。 此程序可能需要幾分鐘才能完成。 完成後,您看到的輸出應該會類似下列範例:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
產生 Terraform 方案
在您的 Azure Developer 範本中,/infra/terraform
資料夾包含用來產生 Terraform 方案的所有程式碼。
Terraform 會使用 terraform apply
做為 azd
佈建步驟的一部分來部署和執行命令。 完成後,您看到的輸出應該會類似下列範例:
Plan: 5 to add, 0 to change, 0 to destroy.
...
Saved the plan to: /workspaces/aks-store-demo/.azure/aks-terraform-azd/infra/terraform/main.tfplan
測試應用程式
當應用程式執行時,Kubernetes 服務會將應用程式前端公開至網際網路。 此程序可能需要幾分鐘才能完成。
使用
kubectl set-context
命令將您的命名空間設定為示範命名空間pets
。kubectl config set-context --current --namespace=pets
使用
kubectl get pods
命令檢視已部署 Pod 的狀態。 請先確認全部 Pod 都是Running
後再繼續進行。kubectl get pods
檢查存放區前端應用程式的公用 IP 位址,並使用
kubectl get service
命令搭配--watch
引數監視進度。kubectl get service store-front --watch
store-front
服務的 EXTERNAL-IP 輸出一開始會顯示為擱置:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
當 EXTERNAL-IP 位址從暫止變成實際的公用 IP 位址時,請使用
CTRL-C
停止kubectl
監看式流程。下列輸出範例會顯示已指派給服務的有效公用 IP 位址:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
若要查看 Azure 市集應用程式的實際運作情況,請開啟網頁瀏覽器並瀏覽至服務的外部 IP 位址。
選取叢集
完成快速入門之後,請清除不必要的資源以避免 Azure 費用。
使用
azd down
命令,刪除在快速入門中建立的所有資源。azd down
輸入
y
並按Enter
,確認您決定從訂用帳戶中移除所有已使用的資源。? Total resources to delete: 14, are you sure you want to continue? (y/N)
如果適用,請鍵入
y
並按Enter
,允許清除重複使用快速入門變數。[Warning]: These resources have soft delete enabled allowing them to be recovered for a period or time after deletion. During this period, their names can't be reused. In the future, you can use the argument --purge to skip this confirmation.
對 Azure 上的 Terraform 進行疑難排解
針對在 Azure 上使用 Terraform 時的常見問題進行疑難排解。
下一步
在本快速入門中,您已部署 Kubernetes 叢集,接著將簡單多容器應用程式部署到此叢集。 這個範例應用程式僅供示範之用,並不代表 Kube 應用程式的全部最佳做法。 如需針對生產使用 AKS 建立完整解決方案的指引,請參閱 AKS 解決方案指引。
若要深入瞭解 AKS 並逐步完成程式碼至部署的範例,請繼續 Kubernetes 叢集教學課程。