Microsoft Entra Pod 관리 ID(미리 보기) 인증을 사용하여 Prometheus 데이터를 Azure Monitor로 보내기

이 문서에서는 Microsoft Entra Pod 관리 ID(미리 보기) 인증을 사용하여 Prometheus용 Azure Monitor 관리 서비스에 대한 원격 쓰기를 설정하는 방법을 설명합니다.

참고 항목

이 문서에 설명된 원격 쓰기 사이드카 컨테이너는 다음 단계를 사용해서 설정해야 하며 AKS(Azure Kubernetes Service) 클러스터에 이미 Microsoft Entra Pod가 사용하도록 설정되어 있어야 합니다. Microsoft Entra Pod 관리 ID는 더 이상 사용되지 않으며 Microsoft Entra 워크로드 ID로 대체되었습니다. Microsoft Entra 워크로드 ID 인증을 사용하는 것이 좋습니다.

필수 조건

지원되는 버전

관리 ID 인증에는 v2.45보다 큰 Prometheus 버전이 필요합니다.

Azure Monitor 작업 영역

이 문서에서는 Prometheus 메트릭을 Azure Monitor 작업 영역으로 보내는 방법을 다룹니다. Azure Monitor 작업 영역을 만들려면 Azure Monitor 작업 영역 관리를 참조하세요.

사용 권한

이 문서의 단계를 완료하려면 클러스터 또는 리소스에 대한 관리자 권한이 필요합니다.

Microsoft Entra Pod 관리 ID에 대한 애플리케이션 설정

Microsoft Entra Pod 관리 ID 인증을 사용하여 애플리케이션에 대한 Prometheus 원격 쓰기를 설정하는 프로세스에서는 다음 작업을 완료해야 합니다.

  1. Microsoft Entra ID에 사용자 할당 관리 ID를 등록합니다.
  2. 관리 ID 운영자 및 Virtual Machine 기여자 역할을 관리 ID에 할당합니다.
  3. 모니터링 메트릭 게시자 역할을 사용자 할당 관리 ID에 할당합니다.
  4. Azure ID 바인딩을 만듭니다.
  5. aadpodidbinding 레이블을 Prometheus Pod에 추가합니다.
  6. 사이드카 컨테이너를 배포하여 원격 쓰기를 설정합니다.

해당 작업은 다음 섹션에서 설명합니다.

Microsoft Entra ID에 관리 ID 등록

사용자 할당 관리 ID를 만들거나 기존 사용자 할당 관리 ID를 등록합니다.

관리 ID를 만드는 방법에 대한 내용은 관리 ID 인증을 사용하여 Prometheus용 Azure Monitor 관리형 서비스에 대한 원격 쓰기 설정을 참조하세요.

관리 ID 운영자 및 Virtual Machine 기여자 역할을 관리 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 ID 바인딩 만들기

사용자 할당 관리 ID를 사용하려면 ID에 대한 ID 바인딩을 Pod 관리 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 Pod에 추가

Pod 관리 ID가 적용되려면 aadpodidbinding 레이블을 Prometheus Pod에 추가해야 합니다. 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용 관리 서비스 원격 쓰기를 참조하세요.

다음 단계