從 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 使用方式
啟用應用程式路由附加元件。
az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>
更新輸入,將
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
使用新的 IP 位址更新輸入控制器的IP (例如在 DNS 記錄中)。 您可以使用
kubectl get
來尋找新的 IP。 例如:kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
啟用 HTTP 應用程式路由附加元件。
az aks disable-addons --resource-group <ResourceGroupName> --name <ClusterName> --addons http_application_routing
移除並刪除所有 HTTP 應用程式路由資源
停用 HTTP 應用程式路由附加元件之後,某些相關 Kubernetes 資源可能會保留在叢集中。 這些資源包括在 kube-system 命名空間中建立的 configmaps 和 secrets。 為了讓叢集保持乾淨,建議您移除這些資源。 使用下列
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
使用
kubectl delete
命令刪除剩餘的資源。 請務必指定資源類型、資源名稱和命名空間。 下列範例會刪除先前的其中一個 configmaps:kubectl delete configmaps addon-http-application-routing-nginx-configuration --namespace kube-system
針對叢集中保留的所有 addon-http-application-routing 資源重複先前的
kubectl delete
步驟。
下一步
移轉至應用程式路由附加元件之後,了解如何使用 Prometheus 和 Grafana 監視輸入控制器計量。