具有應用程式路由附加元件的受控 NGINX 輸入
將超文字傳輸通訊協定 (HTTP) 和安全 (HTTPS) 流量路由至在 Azure Kubernetes Service (AKS) 叢集上執行中應用程式的方法之一,就是使用 Kubernetes 輸入物件。 利用應用程式路由附加元件 NGINX 輸入類別建立輸入物件時,附加元件會在 AKS 叢集內建立、設定並管理一或多個輸入控制器。
本文說明如何在 AKS 叢集中部署和設定基本輸入控制器。
具有 NGINX 功能的應用程式路由附加元件
具有 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
、{
、}
、'
。
使用 Azure CLI 啟用應用程式路由
在新叢集上啟用
若要在新的叢集上啟用應用程式路由,請使用 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>
連線至您的 AKS 叢集
若要從本機電腦連線至 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。kubectl create namespace aks-store
使用下列 YAML 指令清單檔部署 AKS 存放區應用程式:
kubectl 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 的新檔案中,並儲存於本機電腦。
apiVersion: 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
命令建立輸入資源。kubectl 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 控制器計量,協助分析應用程式的效能和使用。