Microsoft Entra ポッドマネージド ID (プレビュー) 認証を使用して Prometheus データを Azure Monitor に送信する

この記事では、Microsoft Entra ポッドマネージド ID (プレビュー) 認証を使って Azure Monitor の Prometheus 用マネージド サービスに対するリモート書き込みを設定する方法について説明します。

Note

この記事で説明するリモート書き込みサイドカー コンテナーは、次の手順を使用してのみ設定する必要があり、かつ、Azure Kubernetes Service (AKS) クラスターで既に Microsoft Entra ポッドが有効になっている場合のみです。 Microsoft Entra ポッドマネージド ID は、非推奨となり、Microsoft Entra ワークロード ID に置き換えられました。 Microsoft Entra ワークロード ID 認証を使用することをお勧めします。

前提条件

サポートされているバージョン

マネージド ID 認証には、v2.45 より大きい Prometheus バージョンが必要です。

Azure Monitor ワークスペース

この記事では、Prometheus メトリックを Azure Monitor ワークスペースに送信する方法について説明します。 Azure Monitor ワークスペースを作成するには、Azure Monitor ワークスペースの管理に関するページを参照してください。

アクセス許可

この記事の手順を完了するには、クラスターまたはリソースの管理者アクセス許可が必要です。

Microsoft Entra ポッドマネージド ID 用にアプリケーションを設定する

Microsoft Entra ポッドマネージド ID 認証を使用してアプリケーションの Prometheus リモート書き込みを設定するプロセスでは、次のタスクを完了する必要があります。

  1. Microsoft Entra ID を使用してユーザー割り当てマネージド ID を登録する
  2. マネージド ID オペレーターと仮想マシン共同作成者の各ロールをマネージド ID に割り当てます。
  3. 監視メトリック パブリッシャー ロールをユーザー割り当てマネージド ID に割り当てます。
  4. Azure AD バインディングを作成します。
  5. aadpodidbinding ラベルを Prometheus ポッドに追加します。
  6. サイドカー コンテナーをデプロイしてリモート書き込みを設定します。

次の各セクションで、これらのタスクについて説明します。

Microsoft Entra ID を使用してマネージド ID を登録する

ユーザー割り当てマネージド ID を作成するか、既存のユーザー割り当てマネージド ID を登録します。

マネージド ID 作成の詳細については、「マネージド ID 認証を使用して Prometheus 用の Azure Monitor マネージド サービスのリモート書き込みを設定する」を参照してください。

マネージド ID オペレーターと仮想マシン共同作成者の各ロールをマネージド ID に割り当てる

az role assignment create --role "Managed Identity Operator" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 
          
az role assignment create --role "Virtual Machine Contributor" --assignee <managed identity clientID> --scope <Node ResourceGroup Id> 

AKS クラスターのノード リソース グループには、このプロセスの他の手順で使用するリソースが含まれています。 このリソース グループには、MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION> という形式の名前が付きます。 リソース グループ名は、Azure portal の [リソース グループ] メニューを使用して確認できます。

監視メトリック パブリッシャー ロールをマネージド ID に割り当てる

az role assignment create --role "Monitoring Metrics Publisher" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 

Azure AD バインディングを作成する

ユーザー割り当てマネージド ID には、その ID をポッドマネージド ID として使用するための ID バインディングが必要です。

次の YAML を aadpodidentitybinding.yaml ファイルにコピーします。


apiVersion: "aadpodidentity.k8s.io/v1" 

kind: AzureIdentityBinding 
metadata: 
name: demo1-azure-identity-binding 
spec: 
AzureIdentity: “<AzureIdentityName>” 
Selector: “<AzureIdentityBindingSelector>” 

次のコマンドを実行します。

kubectl create -f aadpodidentitybinding.yaml 

aadpodidbinding ラベルを Prometheus ポッドに追加する

ポッド ID を有効にするために、aadpodidbinding ラベルを Prometheus ポッドに追加する必要があります。 次のセクションで説明するように、deployment.yaml ファイルを更新するか、サイドカー コンテナーをデプロイするときにラベルを挿入することで、ラベルを追加できます。

サイドカー コンテナーをデプロイしてリモート書き込みを設定する

  1. 次の YAML をコピーし、ファイルに保存します。 この YAML では、リッスン ポートとしてポート 8081 が使用されます。 別のポートを使用する場合は、YAML でその値を変更してください。

    prometheus: 
      prometheusSpec: 
        podMetadata: 
          labels: 
            aadpodidbinding: <AzureIdentityBindingSelector> 
        externalLabels: 
          cluster: <AKS-CLUSTER-NAME> 
        remoteWrite: 
        - url: 'http://localhost:8081/api/v1/write' 
        containers: 
        - name: prom-remotewrite 
          image: <CONTAINER-IMAGE-VERSION> 
          imagePullPolicy: Always 
          ports: 
            - name: rw-port 
          containerPort: 8081 
          livenessProbe: 
            httpGet: 
              path: /health
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
          readinessProbe: 
             httpGet: 
              path: /ready
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
        env: 
          - name: INGESTION_URL 
            value: <INGESTION_URL> 
          - name: LISTENING_PORT 
            value: '8081' 
          - name: IDENTITY_TYPE 
            value: userAssigned 
          - name: AZURE_CLIENT_ID 
            value: <MANAGED-IDENTITY-CLIENT-ID> 
          # Optional parameter 
          - name: CLUSTER 
            value: <CLUSTER-NAME>         
    
  2. Helm を使って YAML ファイルを適用し、Prometheus 構成を更新します。

    # set the context to your cluster 
    az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name>
    
    # use Helm to update your remote write config 
    helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus pod resides>
    

確認とトラブルシューティング

検証とトラブルシューティングの情報については、「リモート書き込みのトラブルシューティング」と「Azure Monitor の Prometheus 用マネージド サービスのリモート書き込み」を参照してください。

次のステップ