アプリケーション ルーティング アドオンでのマネージド NGINX イングレス

注意事項

Kubernetes SIG Network とセキュリティ対応委員会は、イングレス NGINX プロジェクト今後の廃止を発表し、メンテナンスは 2026 年 3 月に終了します。 現在、 NGINX でアプリケーション ルーティング アドオンを使用する AKS クラスターには、すぐに必要なアクションはありません。 Microsoft は、 2026 年 11 月まで、アプリケーション ルーティング アドオン NGINX イングレス リソースの重要なセキュリティ パッチの公式サポートを提供します。

AKS は、イングレスと L7 トラフィック管理の長期的な標準としてゲートウェイ API に移行することで、アップストリームの Kubernetes と連携しています。 現在のセットアップに基づいて、移行パスの計画を開始することをお勧めします。

ハイパーテキスト転送プロトコル (HTTP) とセキュリティで保護された (HTTPS) トラフィックを、Azure Kubernetes Service (AKS) クラスターで実行されているアプリケーションにルーティングする 1 つの方法は、Kubernetes イングレス オブジェクトを使うことです。 NGINX でアプリケーション ルーティング アドオンを有効にすると、AKS クラスター内のイングレス コントローラーが作成、構成、および管理されます。

この記事では、マネージド NGINX イングレス コントローラーを有効にし、AKS クラスター内のアプリケーションにトラフィックをルーティングするようにイングレス オブジェクトを構成する方法について説明します。

NGINX を使用するアプリケーション ルーティング アドオンの機能

NGINX を使用するアプリケーション ルーティング アドオンでは、次の機能が提供されます。

  • Kubernetes NGINX イングレス コントローラーに基づくマネージド NGINX イングレス コントローラーの簡単な構成。
  • パブリック ゾーンとプライベート ゾーン管理のための Azure DNS との統合。
  • Azure Key Vault に格納されている証明書での SSL 終端。

その他の構成については、次を参照してください。

重要

2027 年 9 月 30 日から、Azure Kubernetes Service (AKS) は Open Service Mesh (OSM) アドオンをサポートしなくなりました。 アップストリームの Open Service Mesh プロジェクト は廃止されました。

クラスターで OSM アドオンを使用している場合は、サポート終了日より前に Istio アドオンに移行します。 この提供終了に関する通知は、マネージド OSM アドオンにのみ適用され、オープン ソースまたはセルフ マネージド サービス メッシュのインストールには対応していません。 移行手順については、 OSM アドオンから Istio アドオンへの移行ガイダンスを参照してください。 AKS のお知らせと更新プログラムに関する最新情報を入手するには、 AKS リリース ノートに従ってください。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料のアカウントを作成できます。
  • インストールおよび構成済みの Azure CLI バージョン 2.54.0 以降。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

制限事項

  • アプリケーション ルーティング アドオンでは、最大で 5 つの Azure DNS ゾーンがサポートされます。

  • アプリケーション ルーティング アドオンを有効にできるのは、マネージド ID を持つ AKS クラスターにおいてだけです。

  • アドオンと統合されるすべてのグローバル Azure DNS ゾーンは、同じリソース グループ内にある必要があります。

  • アドオンと統合されるすべてのプライベート Azure DNS ゾーンは、同じリソース グループ内にある必要があります。

  • ConfigMap 名前空間での ingress-nginx app-routing-system の編集はサポートされていません。

  • スニペット注釈の値が次のブロック値のいずれかに一致する場合、イングレスは構成されません。

    ブロックされた値 Effect
    load_module イングレスが構成されていません。
    lua_package イングレスが構成されていません。
    _by_lua イングレスが構成されていません。
    location イングレスが構成されていません。
    root イングレスが構成されていません。
    proxy_pass イングレスが構成されていません。
    serviceaccount イングレスが構成されていません。
    { イングレスが構成されていません。
    } イングレスが構成されていません。
    ' イングレスが構成されていません。
  • アドオンは、管理するイングレス nginx プロキシ ポッドへの、Microsoft管理されていないサイドカー (カスタム テレメトリ、ログ記録、セキュリティ エージェントなど) の挿入を公式にサポートしていません。 マネージド プロキシ ポッドに独自のサイドカーを挿入する場合、Microsoft は、発生した問題に対してベスト エフォート ベースのサポートのみを提供します。

Azure CLIを使用してアプリケーション ルーティング アドオンを有効にする

新しいクラスターで有効にする

新しいクラスターでアプリケーション ルーティングを有効にするには、az aks create フラグを指定して --enable-app-routing コマンドを使用します。

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

既存のクラスターでの有効化

既存のクラスターでアプリケーション ルーティングを有効にするには、az aks approuting enable コマンドを使用します。

az aks approuting enable --resource-group <resource-group-name> --name <cluster-name>

ご利用の AKS クラスターに接続する

お使いのローカル コンピューターから Kubernetes クラスターに接続するには、kubectl (Kubernetes コマンドライン クライアント) を使用します。 az aks install-cli コマンドを使用してローカルにインストールできます。 Azure Cloud Shell を使用している場合、kubectl は既にインストールされています。

kubectl コマンドを使用して、Kubernetes クラスターに接続するように az aks get-credentials を構成します。

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

アプリケーションをデプロイする

Kubernetes イングレス オブジェクトは、イングレス コントローラーのルーティング規則を定義します。 アプリケーション ルーティング アドオンのマネージド イングレス クラスとサポートされている注釈を使用して、コントローラーがトラフィックを処理する方法を構成します。

  1. aks-store コマンドを使って、ポッドの例を実行するための kubectl create namespace という名前のアプリケーション名前空間を作成します。

    kubectl create namespace aks-store
    
  2. 次の YAML マニフェスト ファイルを使用して、AKS ストア アプリケーションをデプロイします。

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

このマニフェストは、 rabbitmqorder-serviceproduct-service、および store-front 配置と対応するサービスを作成します。 store-front サービスはポート 80 を公開します。ポート 80 は、イングレスが次のセクションでルーティングします。

イングレス オブジェクトを作成する

アプリケーション ルーティング アドオンを有効にすると、webapprouting.kubernetes.azure.com という名前のイングレス クラスが作成 されます。 アドオンのマネージド NGINX イングレス コントローラーを使用するには、イングレス オブジェクトでこのクラスを指定します。

  1. 次の YAML マニフェストを ingress.yaml という名前の新しいファイルにコピーし、ファイルをローカル コンピューターに保存します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. kubectl apply コマンドを使用してイングレス リソースを作成します。

    kubectl apply -f ingress.yaml -n aks-store
    

    次の出力例は、作成されたリソースを示しています。

    ingress.networking.k8s.io/store-front created
    

マネージドイングレス リソースを確認する

マネージド イングレスが作成されたことは、kubectl get ingress コマンドを使って確認できます。

kubectl get ingress -n aks-store

次の出力例は、マネージド イングレスが作成されたことを示しています。

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

AKS ストアが機能することを確認するには、ブラウザーでイングレス コントローラーのパブリック IP アドレスをポイントします。 次のコマンドは、app-routing-system名前空間のマネージド NGINX イングレス コントローラーの nginx Service にロード バランサーによって割り当てられた外部 IP アドレスを取得します。

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

アプリケーションのルーティング アドオンを削除する

関連付けられている名前空間を削除するには、kubectl delete namespace コマンドを使います。

kubectl delete namespace aks-store

クラスターからアプリケーション ルーティング アドオンを削除するには、az aks approuting disable コマンドを使います。

az aks approuting disable --name <cluster-name> --resource-group <resource-group-name>

Note

アプリケーション ルーティング アドオンを無効にしたときにクラスターへのトラフィックが中断される可能性を回避するために、 configMapsシークレット、コントローラーを実行する デプロイ など、一部の Kubernetes リソースはクラスター上に残ります。 これらのリソースは、app-routing-system 名前空間にあります。 これらのリソースが不要になった場合は、kubectl delete ns app-routing-system を使用してこの名前空間を削除すると削除できます。