ARM テンプレートを使って Kubernetes Event-driven Autoscaling (KEDA) アドオンをインストールする

この記事では、ARM テンプレートを使って Kubernetes Event-driven Autoscaling (KEDA) アドオンを Azure Kubernetes Service (AKS) にデプロイする方法について説明します。

重要

クラスター Kubernetes バージョンによって、AKS クラスターにインストールされる KEDA のバージョンが決まります。 各 AKS バージョンに対応する KEDA バージョンを確認するには、Kubernetes コンポーネント バージョン テーブルAKS マネージド アドオン列を参照してください。

GA Kubernetes バージョンの場合は、AKS はテーブル内の対応する KEDA マイナー バージョンを完全にサポートします。 Kubernetes プレビュー バージョンと最新の KEDA パッチは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

開始する前に

Note

Microsoft Entra ワークロード ID を使用していて、ワークロード ID の前に KEDA を有効にする場合は、以下の手順に従って、適切な環境変数を挿入できるように KEDA オペレーター ポッドを再起動する必要があります。

  1. kubectl rollout restart deployment keda-operator -n kube-system を実行してポッドを再起動します。

  2. kubectl get pod -n kube-system を使用して、keda-operator で始まるポッドを見つけて、KEDA オペレーター ポッドを取得します。

  3. kubectl describe pod <keda-operator-pod> -n kube-system を実行して、環境変数が正常に挿入されたことを確認します。 Environment の下に、AZURE_TENANT_IDAZURE_FEDERATED_TOKEN_FILEAZURE_AUTHORITY_HOST の値が表示されます。

SSH キー ペアを作成する

  1. Azure Cloud Shell に移動します。

  2. az sshkey create コマンドを使用して、SSH キーの組を作成します。

    az sshkey create --name <sshkey-name> --resource-group <resource-group-name>
    

ARM テンプレートで KEDA アドオンを有効にする

  1. AKS クラスター用 ARM テンプレートをデプロイします。

  2. [テンプレートの編集] を選択します。

  3. 次の例に示すように、ARM テンプレートで workloadAutoScalerProfile フィールドを指定して KEDA アドオンを有効にします。

        "workloadAutoScalerProfile": {
            "keda": {
                "enabled": true
            }
        }
    
  4. [保存] を選択します。

  5. ARM テンプレートの必要な値を更新します。

    • サブスクリプション: デプロイに使う Azure サブスクリプションを選びます。
    • リソース グループ: デプロイに使うリソース グループを選びます。
    • リージョン: デプロイに使うリージョンを選びます。
    • DNS プレフィックス: クラスターに使う一意の DNS 名を入力します。
    • Linux Admin Username (Linux 管理者ユーザー名): クラスターのユーザー名を入力します。
    • SSH public key source (SSH 公開キーのソース): [Azure に格納されている既存のキーを使用する] を選びます。
    • Store Keys (ストア キー): この記事で先ほど作成したキー ペアを選びます。
  6. [確認と作成]>[作成] の順に選択します。

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

お使いのローカル デバイスから Kubernetes クラスターに接続するには、kubectl (Kubernetes コマンドライン クライアント) を使います。

Azure Cloud Shell を使用している場合、kubectl は既にインストールされています。 az aks install-cli コマンドを使用してローカルにインストールすることもできます。

  • az aks get-credentials コマンドを使用して、Kubernetes クラスターに接続するように kubectl を構成します。 次の例では、MyResourceGroupMyAKSCluster という名前の AKS クラスターの資格情報を取得します。
az aks get-credentials --resource-group MyResourceGroup --name MyAKSCluster

デプロイ例

次のスニペットは、3 つの DS2_v5 ノードで構成される 1 つのノード プールで KEDA が有効になっているクラスターを作成するサンプル デプロイです。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "apiVersion": "2023-03-01",
            "dependsOn": [],
            "type": "Microsoft.ContainerService/managedClusters",
            "location": "westcentralus",
            "name": "myAKSCluster",
            "properties": {
                "kubernetesVersion": "1.27",
                "enableRBAC": true,
                "dnsPrefix": "myAKSCluster",
                "agentPoolProfiles": [
                    {
                        "name": "agentpool",
                        "osDiskSizeGB": 200,
                        "count": 3,
                        "enableAutoScaling": false,
                        "vmSize": "Standard_D2S_v5",
                        "osType": "Linux",
                        "type": "VirtualMachineScaleSets",
                        "mode": "System",
                        "maxPods": 110,
                        "availabilityZones": [],
                        "nodeTaints": [],
                        "enableNodePublicIP": false
                    }
                ],
                "networkProfile": {
                    "loadBalancerSku": "standard",
                    "networkPlugin": "kubenet"
                },
                "workloadAutoScalerProfile": {
                    "keda": {
                        "enabled": true
                    }
                }
            },
            "identity": {
                "type": "SystemAssigned"
            }
        }
    ]
}

KEDA を使用してアプリのスケーリングを開始する

カスタム リソース定義 (CRD) を使い、KEDA を使ってアプリを自動スケーリングできます。 詳細については、KEDA のドキュメントを参照してください。

リソースの削除

  • az group delete コマンドを使って、リソース グループと関連するリソースをすべて削除します。

    az group delete --name <resource-group-name>
    

次のステップ

この記事では、KEDA アドオンを AKS クラスターにインストールし、インストールされたことと実行されていることを確認する方法について説明しました。 クラスターに KEDA アドオンがインストールされている場合は、 サンプル アプリケーションをデプロイ してアプリのスケーリングを開始できます。

KEDA のトラブルシューティングについては、Kubernetes Event-driven Autoscaling (KEDA) アドオンのトラブルシューティングに関する記事を参照してください。

詳細については、アップストリーム KEDA のドキュメントを参照してください。