從 HTTP 應用程式路由移轉至應用程式路由附加元件

在本文中,您將了解如何將 Azure Kubernetes Service (AKS) 叢集從 HTTP 應用程式路由功能移轉至應用程式路由附加元件。 HTTP 應用程式路由附加元件已淘汰,且不適用於目前支援的任何叢集 Kubernetes 版本。 建議您儘快移轉以維護支援的組態。

必要條件

  • 已安裝及設定的 Azure CLI 2.54.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI
  • 已安裝 0.5.171 版或更新版本的 aks-preview Azure CLI 延伸模組

注意

這些步驟詳細說明如何從不支援的組態移轉。 因此,AKS 無法支援移轉程序期間所發生的問題。

更新叢集的附加元件、輸入及 IP 使用方式

  1. 啟用應用程式路由附加元件。

    az aks approuting enable -g <ResourceGroupName> -n <ClusterName>
    
  2. 更新輸入,將 ingressClassName 設定為 webapprouting.kubernetes.azure.com。 移除 kubernetes.io/ingress.class 註釋。 您也需要將主機更新為自己擁有的主機,因為應用程式路由附加元件沒有受控叢集 DNS 區域。 如果沒有 DNS 區域,請依照下列指示建立設定一個。

    一開始,輸入組態會如下所示:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
      annotations:
        kubernetes.io/ingress.class: addon-http-application-routing  # Remove the ingress class annotation
    spec:
      rules:
      - host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE>
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
    

    正確更新之後,相同的組態將如下所示:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com # Set the ingress class property to refer to the application routing add-on ingress class
      rules:
      - http:
        host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE> # Replace with your own hostname
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
    
  3. 使用新的 IP 位址更新輸入控制器的IP (例如在 DNS 記錄中)。 您可以使用 kubectl get 來尋找新的 IP。 例如:

    kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  4. 啟用 HTTP 應用程式路由附加元件。

    az aks disable-addons -g <ResourceGroupName> -n <ClusterName> --addons http_application_routing
    

移除並刪除所有 HTTP 應用程式路由資源

  1. 停用 HTTP 應用程式路由附加元件之後,某些相關 Kubernetes 資源可能會保留在叢集中。 這些資源包括在 kube-system 命名空間中建立的 configmapssecrets。 為了讓叢集保持乾淨,建議您移除這些資源。 使用下列 kubectl get 命令尋找 addon-http-application-routing 資源:

    kubectl get deployments --namespace kube-system
    kubectl get services --namespace kube-system
    kubectl get configmaps --namespace kube-system
    kubectl get secrets --namespace kube-system
    

    下列範例輸出會顯示應該刪除的 configmaps

    NAMESPACE     NAME                                                       DATA   AGE
    kube-system   addon-http-application-routing-nginx-configuration         0      9m7s
    kube-system   addon-http-application-routing-tcp-services                0      9m7s
    kube-system   addon-http-application-routing-udp-services                0      9m7s
    
  2. 使用 kubectl delete 命令刪除剩餘的資源。 請務必指定資源類型、資源名稱和命名空間。 下列範例會刪除先前的其中一個 configmaps:

    kubectl delete configmaps addon-http-application-routing-nginx-configuration --namespace kube-system
    
  3. 針對叢集中保留的所有 addon-http-application-routing 資源重複先前的 kubectl delete 步驟。

下一步

移轉至應用程式路由附加元件之後,了解如何使用 Prometheus 和 Grafana 監視輸入控制器計量