Share via


具有應用程式路由附加元件的受控 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 --resource-group <ResourceGroupName> --name <ClusterName> --location <Location> --enable-app-routing

在現有的叢集上啟用

若要在現有的叢集上啟用應用程式路由,請使用 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 輸入物件上的註釋來建立適當的資源。

  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 命名空間中。 如有需要,您可以移除這些資源。

下一步