具有應用程式路由附加元件的受控 NGINX 輸入

將超文字傳輸通訊協定 (HTTP) 和安全 (HTTPS) 流量路由至在 Azure Kubernetes Service (AKS) 叢集上執行中應用程式的方法之一,就是使用 Kubernetes 輸入物件。 利用應用程式路由附加元件 NGINX 輸入類別建立輸入物件時,附加元件會在 AKS 叢集內建立、設定並管理一或多個輸入控制器。

本文說明如何在 AKS 叢集中部署和設定基本輸入控制器。

具有 NGINX 功能的應用程式路由附加元件

具有 NGINX 功能的應用程式路由附加元件可實現:

  • 根據 Kubernetes NGINX 輸入控制器,輕鬆設定受控 NGINX 輸入控制器。
  • Azure DNS 整合,以進行公用和私人區域管理
  • 使用儲存於 Azure Key Vault 中的憑證進行 SSL 終止。

如需其他組態,請參閱:

使用搭配 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
  • 下列代碼段批注會遭到封鎖,而且會防止設定輸入:、、、、 serviceaccountlua_packageload_module_by_lualocationrootproxy_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 輸入物件上的註釋來建立適當的資源。

  1. 建立名為 hello-web-app-routing 的應用程式命名空間,以使用 kubectl create namespace 命令執行範例 Pod。

    kubectl create namespace hello-web-app-routing
    
  2. 透過將下列 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)"
    
  3. 透過將下列 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 的叢集上建立輸入類別。 使用此類別建立輸入物件時,會啟動附加元件。

  1. 將下列 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
    
  2. 使用 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 資源可能會保留在叢集中。 這些資源包括 configMapssecrets,而且會建立於 app-routing-system 命名空間中。 如有需要,您可以移除這些資源。

下一步