您可以使用 Azure CLI 來啟用新的 Azure Kubernetes Services (AKS) 叢集的 應用程式閘道輸入控制器 (AGIC) 附加元件。
在本教學課程中,您將建立已啟用 AGIC 附加元件的 AKS 叢集。 建立叢集將會自動建立要使用的 Azure 應用程式閘道執行個體。 接著,您將會部署範例應用程式,以使用附加元件透過應用程式閘道公開應用程式。
相較於之前透過 Helm,附加元件可讓您更快速地部署 AKS 叢集的 AGIC, 同時也提供完全受控的體驗。
在本教學課程中,您會了解如何:
- 建立資源群組。
- 建立啟用 AGIC 附加元件的新 AKS 叢集。
- 使用 AGIC 在 AKS 叢集上輸入,以部署範例應用程式。
- 檢查是否可透過應用程式閘道連線到應用程式。
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
建立資源群組
在 Azure 中,您可以將相關資源配置到資源群組。 使用 az group create 建立資源群組。 下列範例會在 [美國東部] 位置建立名為 myResourceGroup 的資源群組 (區域):
az group create --name myResourceGroup --location eastus
部署已啟用附加元件的 AKS 叢集
您現在可以部署啟用 AGIC 附加元件的新 AKS 叢集。 如果您未提供要在此程序中使用的現有應用程式閘道執行個體,您會自動建立並設定新的應用程式閘道執行個體,以提供 AKS 叢集的流量。
注意
應用程式閘道輸入控制器附加元件「僅支援」應用程式閘道 v2 SKU (標準和 WAF),而「不支援」應用程式閘道 v1 SKU。 當您透過 AGIC 附加元件部署新的應用程式閘道執行個體時,只能部署應用程式閘道 Standard_v2 SKU。 如果要啟用應用程式閘道 WAF_v2 SKU 的附加元件,請使用下列其中一種方法:
- 透過入口網站在應用程式閘道中啟用 WAF。
- 先建立 WAF_v2 應用程式閘道執行個體,然後遵循如何使用現有的 AKS 叢集和現有的應用程式閘道執行個體啟用 AGIC 附加元件的指示。
在下列範例中,您將使用 Azure CNI 和受控識別,部署名為 myCluster 的新 AKS 叢集。 AGIC 附加元件將會在您建立的資源群組 myResourceGroup 中啟用。
在未指定現有應用程式閘道執行個體的情況下,若要部署已啟用 AGIC 附加元件的新 AKS 叢集,系統會自動建立 Standard_v2 SKU 應用程式閘道執行個體。 您會需要指定新的應用程式閘道執行個體的名稱和子網路位址空間。 位址空間必須來自 AKS 虛擬網路所使用的 10.224.0.0/12 前置詞,而不會與 AKS 子網路所使用的 10.224.0.0/16 前置詞重疊。 在本教學課程中,針對應用程式應用程式閘道名稱使用 myApplicationGateway,並針對其子網路位址空間使用 10.225.0.0/16。
az aks create -n myCluster -g myResourceGroup --network-plugin azure --enable-managed-identity -a ingress-appgw --appgw-name myApplicationGateway --appgw-subnet-cidr "10.225.0.0/16" --generate-ssh-keys
注意
請確定 AGIC 所使用的身分識別具有適當的許可權。 您可以在這裡找到身分識別所需的許可權清單: 設定基礎結構 - 許可權。 如果未使用必要的許可權定義自定義角色,您可以使用 網路參與者 角色。
# Get application gateway id from AKS addon profile
appGatewayId=$(az aks show -n myCluster -g myResourceGroup -o tsv --query "addonProfiles.ingressApplicationGateway.config.effectiveApplicationGatewayId")
# Get Application Gateway subnet id
appGatewaySubnetId=$(az network application-gateway show --ids $appGatewayId -o tsv --query "gatewayIPConfigurations[0].subnet.id")
# Get AGIC addon identity
agicAddonIdentity=$(az aks show -n myCluster -g myResourceGroup -o tsv --query "addonProfiles.ingressApplicationGateway.identity.clientId")
# Assign network contributor role to AGIC addon identity to subnet that contains the Application Gateway
az role assignment create --assignee $agicAddonIdentity --scope $appGatewaySubnetId --role "Network Contributor"
若要為上述命令設定更多參數,請參閱 az aks 建立。
注意
您所建立的 AKS 叢集會出現在您所建立的 myResourceGroup 資源群組中。 不過,自動建立的應用程式閘道執行個體將會位於代理程式集區所在的節點資源群組中。 根據預設,節點資源群組會命名為 MC_resource-group-name_cluster-name_location,但可加以修改。
使用 AGIC 部署範例應用程式
您現在會將範例應用程式部署至您建立的 AKS 叢集。 應用程式會使用 AGIC 附加元件進行輸入,並將應用程式閘道執行個體連線到 AKS 叢集。
首先,藉由執行 az aks get-credentials 命令,取得 AKS 叢集的認證:
az aks get-credentials -n myCluster -g myResourceGroup
現在您已有認證,請執行下列命令來設定使用 AGIC 來輸入叢集的範例應用程式。 AGIC 會將您先前設定的應用程式閘道執行個體,更新為您正在部署之範例應用程式的對應路由規則。
kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml
檢查是否可連線到應用程式
既然應用程式閘道執行個體已設定為可提供 AKS 叢集的流量,讓我們來驗證您的應用程式是否可連線。 首先取得輸入的 IP 位址:
kubectl get ingress
請使用下列其中一種方法,檢查您所建立的範例應用程式是否正在執行:
- 造訪執行上述命令所獲得之應用程式閘道執行個體的 IP 位址。
- 使用
curl。
應用程式閘道可能需要一分鐘來取得更新。 如果應用程式閘道在入口網站上仍為更新狀態,請先讓其完成,再嘗試連線 IP 位址。
清除資源
當您不再需要這些資源時,可以刪除 myResourceGroup 和 MC_myResourceGroup_myCluster_eastus 資源群組,來刪除本教學課程中建立的所有資源:
az group delete --name myResourceGroup
az group delete --name MC_myResourceGroup_myCluster_eastus
下一步
在本教學課程中,您已:
- 建立啟用 AGIC 附加元件的新 AKS 叢集
- 使用 AGIC 在 AKS 叢集上輸入,部署範例應用程式
若要深入了解 AGIC,請參閱什麼是應用程式閘道輸入控制器和停用並重新啟用 AKS 叢集的 AGIC 附加元件。
若要了解如何使用現有的應用程式閘道,請啟用現有 AKS 叢集的應用程式閘道輸入控制器附加元件,並進入下個教學課程。