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 パッチは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。
開始する前に
- Azure サブスクリプションが必要です。 Azure サブスクリプションをお持ちでない場合は、無料のアカウントを作成できます。
- Azure CLI をインストールする必要があります。
- この記事では、既存の Azure リソース グループがあることを前提としています。 既存のリソース グループがない場合は、
az group create
コマンドを使って作成できます。 - Kubernetes API サーバーへのアクセスを許可するファイアウォール規則を構成しておきます。 詳細については、「Azure Kubernetes Service (AKS) クラスターのアウトバウンド ネットワークと FQDN の規則」を参照してください。
- SSH キーの組を作成します。
Note
Microsoft Entra ワークロード ID を使用していて、ワークロード ID の前に KEDA を有効にする場合は、以下の手順に従って、適切な環境変数を挿入できるように KEDA オペレーター ポッドを再起動する必要があります。
kubectl rollout restart deployment keda-operator -n kube-system
を実行してポッドを再起動します。kubectl get pod -n kube-system
を使用して、keda-operator
で始まるポッドを見つけて、KEDA オペレーター ポッドを取得します。kubectl describe pod <keda-operator-pod> -n kube-system
を実行して、環境変数が正常に挿入されたことを確認します。Environment
の下に、AZURE_TENANT_ID
、AZURE_FEDERATED_TOKEN_FILE
、AZURE_AUTHORITY_HOST
の値が表示されます。
SSH キー ペアを作成する
Azure Cloud Shell に移動します。
az sshkey create
コマンドを使用して、SSH キーの組を作成します。az sshkey create --name <sshkey-name> --resource-group <resource-group-name>
ARM テンプレートで KEDA アドオンを有効にする
AKS クラスター用 ARM テンプレートをデプロイします。
[テンプレートの編集] を選択します。
次の例に示すように、ARM テンプレートで
workloadAutoScalerProfile
フィールドを指定して KEDA アドオンを有効にします。"workloadAutoScalerProfile": { "keda": { "enabled": true } }
[保存] を選択します。
ARM テンプレートの必要な値を更新します。
- サブスクリプション: デプロイに使う Azure サブスクリプションを選びます。
- リソース グループ: デプロイに使うリソース グループを選びます。
- リージョン: デプロイに使うリージョンを選びます。
- DNS プレフィックス: クラスターに使う一意の DNS 名を入力します。
- Linux Admin Username (Linux 管理者ユーザー名): クラスターのユーザー名を入力します。
- SSH public key source (SSH 公開キーのソース): [Azure に格納されている既存のキーを使用する] を選びます。
- Store Keys (ストア キー): この記事で先ほど作成したキー ペアを選びます。
[確認と作成]>[作成] の順に選択します。
ご利用の AKS クラスターに接続する
お使いのローカル デバイスから Kubernetes クラスターに接続するには、kubectl (Kubernetes コマンドライン クライアント) を使います。
Azure Cloud Shell を使用している場合、kubectl
は既にインストールされています。 az aks install-cli
コマンドを使用してローカルにインストールすることもできます。
- az aks get-credentials コマンドを使用して、Kubernetes クラスターに接続するように
kubectl
を構成します。 次の例では、MyResourceGroup の MyAKSCluster という名前の 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 のドキュメントを参照してください。