Share via


HTTP アプリケーション ルーティングからアプリケーション ルーティング アドオンに移行する

この記事では、Azure Kubernetes Service (AKS) クラスターを HTTP アプリケーション ルーティング機能からアプリケーション ルーティング アドオンに移行する方法について学習します。 HTTP アプリケーション ルーティング アドオンは廃止され、現在サポートされているクラスター Kubernetes バージョンでは機能しません。 サポートされている構成を維持するには、できるだけ早く移行することをお勧めします。

前提条件

  • Azure CLI バージョン 2.54.0 以降がインストールされ構成されていること。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
  • aks-preview Azure CLI 拡張機能のバージョン 0.5.171 以降がインストールされていること

Note

これらの手順では、サポートされていない構成からの移行について詳しく説明しています。 そのため、AKS は移行プロセス中に発生する問題のサポートを提供できません。

クラスターのアドオン、イングレス、IP の使用状況を更新する

  1. アプリケーション ルーティング アドオンを有効にします。

    az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>
    
  2. ingressClassNamewebapprouting.kubernetes.azure.com に設定して、イングレスを更新します。 注釈の kubernetes.io/ingress.class を削除します。 また、アプリケーション ルーティング アドオンにはマネージド クラスター DNS ゾーンがないため、ホストを自分が所有するホストに更新する必要もあります。 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 (DNS レコードなど) を新しい IP アドレスで更新します。 kubectl get を使用して、新しい IP を見つけることができます。 次に例を示します。

    kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  4. HTTP アプリケーションのルーティング アドオンを無効にする

    az aks disable-addons --resource-group <ResourceGroupName> --name <ClusterName> --addons http_application_routing
    

すべての HTTP アプリケーション ルーティング リソースを削除する

  1. HTTP アプリケーションのルーティング アドオンを無効にすると、一部の関連する Kubernetes リソースがクラスターに残ることがあります。 これらのリソースには configmapssecrets が含まれ、kube-system 名前空間で作成されます。 クリーンなクラスターを維持するために、これらのリソースを削除することができます。 次の 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 の 1 つを削除します。

    kubectl delete configmaps addon-http-application-routing-nginx-configuration --namespace kube-system
    
  3. クラスターに残っているすべての addon-http-application-routing リソースに対して、前の kubectl delete の手順を繰り返します。

次のステップ

アプリケーション ルーティング アドオンに移行した後、Prometheus と Grafana を使用してイングレス コントローラー メトリックを監視する方法について学習します。