事件
具有應用程式路由附加元件的受控 NGINX 輸入
將超文字傳輸通訊協定 (HTTP) 和安全 (HTTPS) 流量路由至在 Azure Kubernetes Service (AKS) 叢集上執行中應用程式的方法之一,就是使用 Kubernetes 輸入物件。 利用應用程式路由附加元件 NGINX 輸入類別建立輸入物件時,附加元件會在 AKS 叢集內建立、設定並管理一或多個輸入控制器。
本文說明如何在 AKS 叢集中部署和設定基本輸入控制器。
具有 NGINX 功能的應用程式路由附加元件可實現:
- 根據 Kubernetes NGINX 輸入控制器,輕鬆設定受控 NGINX 輸入控制器。
- 與 Azure DNS 整合,以進行公用和私人區域管理
- 使用儲存於 Azure Key Vault 中的憑證進行 SSL 終止。
如需其他組態,請參閱:
隨著 Cloud Native Computing Foundation (CNCF) 淘汰 Open Service Mesh (OSM),不建議將應用程式路由附加元件與 OSM 搭配使用。
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶。
- 已安裝及設定的 Azure CLI 2.54.0 版或更新版本。 執行
az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
- 應用程式路由附加元件最多可支援五個 Azure DNS 區域。
- 應用程式路由附加元件只能在具有受控識別的 AKS 叢集上啟用。
- 與附加元件整合的所有全域 Azure DNS 區域,都必須位於相同的資源群組中。
- 與附加元件整合的所有私人 Azure DNS 區域,都必須位於相同的資源群組中。
- 不支援在
app-routing-system
命名空間中編輯 ingress-nginxConfigMap
。 - 以下程式碼片段註釋遭到封鎖,將阻止設定輸入:
load_module
、lua_package
、_by_lua
、location
、root
、proxy_pass
、serviceaccount
、{
、}
、'
。
若要在新的叢集上啟用應用程式路由,請使用 az aks create
命令,指定 --enable-app-routing
旗標。
az aks create \
--resource-group <ResourceGroupName> \
--name <ClusterName> \
--location <Location> \
--enable-app-routing \
--generate-ssh-keys
若要在現有的叢集上啟用應用程式路由,請使用 az aks approuting enable
命令。
az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>
若要從本機電腦連線至 Kubernetes 叢集,您應使用 kubectl (Kubernetes 命令列用戶端)。 您可以使用 az aks install-cli
命令在本機安裝。 如果您使用 Azure Cloud Shell,則 kubectl
已安裝。
使用 az aks get-credentials 命令,設定 kubectl
連線到 Kubernetes 叢集。
az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>
應用程式路由附加元件會使用 Kubernetes 輸入物件上的註釋來建立適當的資源。
建立名為
aks-store
的應用程式命名空間,以使用kubectl create namespace
命令執行範例 Pod。Bashkubectl create namespace aks-store
使用下列 YAML 指令清單檔部署 AKS 存放區應用程式:
YAMLkubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
此指令清單會為 AKS 存放區應用程式建立必要的部署和服務。
應用程式路由附加元件會在名為 webapprouting.kubernetes.azure.com 的叢集上建立輸入類別。 使用此類別建立輸入物件時,會啟動附加元件。
將下列 YAML 資訊清單複製到名為 ingress.yaml 的新檔案中,並儲存於本機電腦。
YAMLapiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: store-front namespace: aks-store spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - backend: service: name: store-front port: number: 80 path: / pathType: Prefix
使用
kubectl apply
命令建立輸入資源。Bashkubectl apply -f ingress.yaml -n aks-store
下列範例輸出顯示已建立的資源:
輸出ingress.networking.k8s.io/store-front created
您可以使用 kubectl get ingress
來確認已建立受控輸入。
kubectl get ingress -n aks-store
下列範例輸出顯示已建立的受控輸入:
NAME CLASS HOSTS ADDRESS PORTS AGE
store-front webapprouting.kubernetes.azure.com * 51.8.10.109 80 110s
您可以確認 AKS 存放區的運作方式,將瀏覽器指向輸入控制器的公用 IP 位址。 使用 kubectl 尋找 IP 位址:
kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
若要移除相關聯的命名空間,請使用 kubectl delete namespace
命令。
kubectl delete namespace aks-store
若要從叢集移除應用程式路由附加元件,請使用 az aks approuting disable
命令。
az aks approuting disable --name <ClusterName> --resource-group <ResourceGroupName>
備註
為了避免在應用程式路由附加元件停用時,對叢集流量的潛在中斷,某些 Kubernetes 資源,包括 configMaps、秘密,以及執行控制器的部署,都會保留在叢集上。 這些資源位於 應用程式路由系統 命名空間中。 如果不再需要這些資源,請使用 刪除命名空間 kubectl delete ns app-routing-system
來移除這些資源。
設定自訂輸入組態示範如何建立進階輸入組態,並使用 Azure DNS 設定自訂網域來管理 DNS 區域, 以及設定安全輸入。
若要與 Azure 內部負載平衡器整合並設定私人 Azure DNS 區域以啟用私人端點的 DNS 解析,以解析特定的網域,請參閱為 Azure 私人 DNS 區域設定內部 NGINX 輸入控制器。
了解如何使用 Grafana 中的 Prometheus (預覽) 監視應用程式路由附加元件中的 Ingress-nginx 控制器計量,協助分析應用程式的效能和使用。
更多資源
訓練
學習路徑
Azure Kubernetes Service (AKS) cluster architecture and operations - Training
Azure Kubernetes Service (AKS) cluster architecture and operations
認證
Microsoft Certified: Azure Network Engineer Associate - Certifications
Demonstrate the design, implementation, and maintenance of Azure networking infrastructure, load balancing traffic, network routing, and more.