具有應用程式路由附加元件的受控 NGINX 輸入
將超文字傳輸通訊協定 (HTTP) 和安全 (HTTPS) 流量路由至在 Azure Kubernetes Service (AKS) 叢集上執行中應用程式的方法之一,就是使用 Kubernetes 輸入物件。 利用應用程式路由附加元件 NGINX 輸入類別建立輸入物件時,附加元件會在 AKS 叢集內建立、設定並管理一或多個輸入控制器。
本文說明如何在 AKS 叢集中部署和設定基本輸入控制器。
具有 NGINX 功能的應用程式路由附加元件
具有 NGINX 功能的應用程式路由附加元件可實現:
- 根據 Kubernetes NGINX 輸入控制器,輕鬆設定受控 NGINX 輸入控制器。
- 與 Azure DNS 整合,以進行公用和私人區域管理
- 使用儲存於 Azure Key Vault 中的憑證進行 SSL 終止。
如需其他組態,請參閱:
- DNS 和 SSL 設定
- 應用程式路由附加元件設定
- 設定 Azure 私人 DNS 區域的內部 NGIX 輸入控制器。
使用搭配 OSM 的應用程式路由附加元件,不建議使用 Cloud Native Computing Foundation(OSM)淘汰 Open Service Mesh (OSM)。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶。
- 已安裝及設定的 Azure CLI 2.54.0 版或更新版本。 執行
az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。 aks-preview
已安裝 0.5.171 版或更新版本的 Azure CLI 延伸模組
限制
- 應用程式路由附加元件最多可支援五個 Azure DNS 區域。
- 與附加元件整合的所有全域 Azure DNS 區域,都必須位於相同的資源群組中。
- 與附加元件整合的所有私人 Azure DNS 區域,都必須位於相同的資源群組中。
- 不支援編輯命名空間中的
app-routing-system
輸入 nginxConfigMap
。 - 下列代碼段批注會遭到封鎖,而且會防止設定輸入:、、、、
serviceaccount
。lua_package
load_module
_by_lua
location
root
proxy_pass
}
{
'
使用 Azure CLI 啟用應用程式路由
在新叢集上啟用
若要在新的叢集上啟用應用程式路由,請使用 az aks create
命令,指定 --enable-app-routing
旗標。
az aks create -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing
在現有的叢集上啟用
若要在現有的叢集上啟用應用程式路由,請使用 az aks approuting enable
命令。
az aks approuting enable -g <ResourceGroupName> -n <ClusterName>
連線至您的 AKS 叢集
若要從本機電腦連線至 Kubernetes 叢集,您應使用 kubectl (Kubernetes 命令列用戶端)。 您可以使用 az aks install-cli
命令在本機安裝。 如果您使用 Azure Cloud Shell,則 kubectl
已安裝。
使用 az aks get-credentials 命令,設定 kubectl
連線到 Kubernetes 叢集。
az aks get-credentials -g <ResourceGroupName> -n <ClusterName>
部署應用程式
應用程式路由附加元件會使用 Kubernetes 輸入物件上的註釋來建立適當的資源。
建立名為
hello-web-app-routing
的應用程式命名空間,以使用kubectl create namespace
命令執行範例 Pod。kubectl create namespace hello-web-app-routing
透過將下列 YAML 資訊清單複製到名為 deployment.yaml 的新檔案中來建立部署,並儲存於本機電腦。
apiVersion: apps/v1 kind: Deployment metadata: name: aks-helloworld namespace: hello-web-app-routing spec: replicas: 1 selector: matchLabels: app: aks-helloworld template: metadata: labels: app: aks-helloworld spec: containers: - name: aks-helloworld image: mcr.microsoft.com/azuredocs/aks-helloworld:v1 ports: - containerPort: 80 env: - name: TITLE value: "Welcome to Azure Kubernetes Service (AKS)"
透過將下列 YAML 資訊清單複製到名為 service.yaml 的新檔案中來建立服務,並儲存於本機電腦。
apiVersion: v1 kind: Service metadata: name: aks-helloworld namespace: hello-web-app-routing spec: type: ClusterIP ports: - port: 80 selector: app: aks-helloworld
建立輸入物件
應用程式路由附加元件會在名為 webapprouting.kubernetes.azure.com 的叢集上建立輸入類別。 使用此類別建立輸入物件時,會啟動附加元件。
將下列 YAML 資訊清單複製到名為 ingress.yaml 的新檔案中,並儲存於本機電腦。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - host: <Hostname> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix
使用
kubectl apply
命令建立叢集資源。kubectl apply -f deployment.yaml -n hello-web-app-routing
下列範例輸出顯示已建立的資源:
deployment.apps/aks-helloworld created
kubectl apply -f service.yaml -n hello-web-app-routing
下列範例輸出顯示已建立的資源:
service/aks-helloworld created
kubectl apply -f ingress.yaml -n hello-web-app-routing
下列範例輸出顯示已建立的資源:
ingress.networking.k8s.io/aks-helloworld created
確認已建立受控輸入
您可以使用 kubectl get ingress
來確認已建立受控輸入。
kubectl get ingress -n hello-web-app-routing
下列範例輸出顯示已建立的受控輸入:
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
移除應用程式路由附加元件
若要移除相關聯的命名空間,請使用 kubectl delete namespace
命令。
kubectl delete namespace hello-web-app-routing
若要從叢集移除應用程式路由附加元件,請使用 az aks approuting disable
命令。
az aks approuting disable --name myAKSCluster --resource-group myResourceGroup
停用應用程式路由附加元件時,某些 Kubernetes 資源可能會保留在叢集中。 這些資源包括 configMaps 和 secrets,而且會建立於 app-routing-system 命名空間中。 如有需要,您可以移除這些資源。
下一步
設定自訂輸入組態示範如何建立進階輸入組態,並使用 Azure DNS 設定自訂網域來管理 DNS 區域, 以及設定安全輸入。
若要與 Azure 內部負載平衡器整合,並設定私人 Azure DNS 區域以啟用私人端點的 DNS 解析,以解析特定網域,請參閱 設定 Azure 私人 DNS 區域的內部 NGINX 輸入控制器。
了解如何使用 Grafana 中的 Prometheus (預覽) 監視應用程式路由附加元件中的 Ingress-nginx 控制器計量,協助分析應用程式的效能和使用。