チュートリアル: 新しいアプリケーション ゲートウェイ インスタンスを使用して新しい AKS クラスターのイングレス コントローラー アドオンを有効にする

Azure CLI を使用して、新しい Azure Kubernetes Services (AKS) クラスターのアプリケーション ゲートウェイ イングレス コントローラー (AGIC) アドオンを有効にすることができます。

このチュートリアルでは、AGIC アドオンが有効になっている AKS クラスターを作成します。 クラスターを作成すると、使用する Azure Application Gateway インスタンスが自動的に作成されます。 その後、アドオンを使用して、アプリケーション ゲートウェイを介してアプリケーションを公開するサンプル アプリケーションをデプロイします。

このアドオンでは、Helm を使用する以前の方法よりもはるかに高速な方法で AKS クラスターに AGIC をデプロイできます。 また、フル マネージド エクスペリエンスが提供されます。

このチュートリアルでは、以下の内容を学習します。

  • リソース グループを作成する。
  • AGIC アドオンが有効になっている新しい AKS クラスターを作成する。
  • AKS クラスターで AGIC をイングレスに使用してサンプル アプリケーションをデプロイする。
  • アプリケーションがアプリケーション ゲートウェイを介して到達可能であることを確認する。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

リソース グループを作成する

Azure で、関連するリソースをリソース グループに割り当てます。 az group create を使用してリソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを "米国東部" の場所 (リージョン) に作成します。

az group create --name myResourceGroup --location eastus

アドオンが有効になっている AKS クラスターをデプロイする

ここで、AGIC アドオンが有効になっている新しい AKS クラスターをデプロイします。 このプロセスで使用する既存の アプリケーション ゲートウェイ インスタンスが指定されていない場合は、AKS クラスターへのトラフィックを処理する新しいアプリケーション ゲートウェイ インスタンスを自動的に作成して設定します。

注意

アプリケーション ゲートウェイ イングレス コントローラー アドオンでは、アプリケーション ゲートウェイ v2 SKU (Standard および WAF) "のみ" がサポートされ、アプリケーション ゲートウェイ v1 SKU はサポート "されません"。 AGIC アドオンを使用して新しいアプリケーション ゲートウェイ インスタンスをデプロイする場合は、アプリケーション ゲートウェイ Standard_v2 SKU のみをデプロイできます。 アプリケーション ゲートウェイ WAF_v2 SKU でアドオンを有効にする場合は、これらの方法のいずれかを使用します。

次の例では、Azure CNIマネージド ID を使用して、myCluster という名前の新しい AKS クラスターをデプロイします。 作成したリソース グループ (myResourceGroup) で AGIC アドオンが有効になります。

既存のアプリケーション ゲートウェイ インスタンスを指定せずに AGIC アドオンを有効にした新しい AKS クラスターをデプロイすると、Standard_v2 SKU アプリケーション ゲートウェイ インスタンスが自動的に作成されます。 新しいアプリケーション ゲートウェイ インスタンスの名前とサブネット アドレス空間を指定する必要があります。 アドレス空間は、AKS 仮想ネットワークで使用される 10.224.0.0/12 プレフィックスからのものである必要があり、AKS サブネットで使用される 10.224.0.0/16 プレフィックスと重複しないようにする必要があります。 このチュートリアルでは、アプリケーション ゲートウェイ名として myApplicationGateway を使用し、そのサブネット アドレス空間として 10.225.0.0/16 を使用します。

az aks create -n myCluster -g myResourceGroup --network-plugin azure --enable-managed-identity -a ingress-appgw --appgw-name myApplicationGateway --appgw-subnet-cidr "10.225.0.0/16" --generate-ssh-keys

[注意!] AGIC によって使用される ID に、Application Gateway のデプロイ先サブネットに委任された Microsoft.Network/virtualNetworks/subnets/join/action アクセス許可があることを確認してください。 カスタム ロールがこのアクセス許可で定義されていない場合は、Microsoft.Network/virtualNetworks/subnets/join/action アクセス許可が含まれた組み込みの "ネットワーク共同作成者" ロールを使用できます。

# Get application gateway id from AKS addon profile
appGatewayId=$(az aks show -n myCluster -g myResourceGroup -o tsv --query "addonProfiles.ingressApplicationGateway.config.effectiveApplicationGatewayId")

# Get Application Gateway subnet id
appGatewaySubnetId=$(az network application-gateway show --ids $appGatewayId -o tsv --query "gatewayIpConfigurations[0].subnet.id")

# Get AGIC addon identity
agicAddonIdentity=$(az aks show -n myCluster -g myResourceGroup -o tsv --query "addonProfiles.ingressApplicationGateway.identity.clientId")

# Assign network contributor role to AGIC addon identity to subnet that contains the Application Gateway
az role assignment create --assignee $agicAddonIdentity --scope $appGatewaySubnetId --role "Network Contributor"

上記のコマンドのその他のパラメーターを構成するには、「az aks create」を参照してください。

Note

作成した AKS クラスターは、作成したリソース グループ (myResourceGroup) に表示されます。 しかし、自動的に作成されたアプリケーション ゲートウェイ インスタンスは、エージェント プールがある、ノード リソース グループに配置されます。 ノード リソース グループの名前は、既定では MC_resource-group-name_cluster-name_location になりますが、変更することはできます。

AGIC を使用してサンプル アプリケーションをデプロイする

ここで、作成した AKS クラスターにサンプル アプリケーションをデプロイします。 アプリケーションによって、イングレスに AGIC アドオンが使用され、アプリケーション ゲートウェイ インスタンスが AKS クラスターに接続されます。

まず、az aks get-credentials コマンドを実行して、AKS クラスターの資格情報を取得します。

az aks get-credentials -n myCluster -g myResourceGroup

これで資格情報を取得したので、次のコマンドを実行して、クラスターへのイングレスに AGIC を使用するサンプル アプリケーションを設定します。 AGIC によって、前に設定したアプリケーション ゲートウェイ インスタンスが、対応するルーティング規則で、デプロイしているサンプル アプリケーションに更新されます。

kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml 

アプリケーションに到達可能であることを確認する

これで、アプリケーション ゲートウェイ インスタンスが AKS クラスターへのトラフィックを処理するように設定されたので、アプリケーションに到達可能であることを確認してみましょう。 最初に、イングレスの IP アドレスを取得します。

kubectl get ingress

作成したサンプル アプリケーションが、次のいずれかの方法で実行されていることを確認します。

  • 上記のコマンドを実行して取得した、アプリケーション ゲートウェイ インスタンスの IP アドレスにアクセスする。
  • curl を使用する。

アプリケーション ゲートウェイ で更新プログラムを取得するのに 1 分ほどかかることがあります。 ポータルのアプリケーション ゲートウェイの状態が [更新中] のままになっている場合は、IP アドレスへの到達を試みる前に完了するようにしてください。

リソースをクリーンアップする

不要になったら、myResourceGroupMC_myResourceGroup_myCluster_eastus リソース グループを削除して、このチュートリアルで作成したすべてのリソースを削除します。

az group delete --name myResourceGroup
az group delete --name MC_myResourceGroup_myCluster_eastus

次の手順

このチュートリアルでは、次の作業を行いました。

  • AGIC アドオンが有効になっている新しい AKS クラスターを作成する。
  • AKS クラスターで AGIC をイングレスに使用してサンプル アプリケーションをデプロイする。

AGIC について詳しくは、「Application Gateway イングレス コントローラーとは」と「AKS クラスターに対する AGIC アドオンを無効にしてから再度有効にする」をご覧ください。

既存のアプリケーション ゲートウェイを使用して既存の AKS クラスターでアプリケーション ゲートウェイ イングレス コントローラー アドオンを有効にする方法については、次のチュートリアルに進んでください。