Mengirim data Prometheus ke Azure Monitor dengan menggunakan autentikasi identitas yang dikelola pod Microsoft Entra (pratinjau)

Artikel ini menjelaskan cara menyiapkan penulisan jarak jauh untuk layanan terkelola Azure Monitor untuk Prometheus dengan menggunakan autentikasi identitas yang dikelola pod Microsoft Entra (pratinjau).

Catatan

Kontainer sidecar tulis jarak jauh yang dijelaskan dalam artikel ini harus disiapkan hanya dengan menggunakan langkah-langkah berikut, dan hanya jika kluster Azure Kubernetes Service (AKS) sudah mengaktifkan pod Microsoft Entra. Identitas yang dikelola pod Microsoft Entra tidak digunakan lagi untuk digantikan oleh ID Beban Kerja Microsoft Entra. Kami menyarankan agar Anda menggunakan autentikasi ID Beban Kerja Microsoft Entra.

Prasyarat

Versi yang didukung

Versi Prometheus yang lebih besar dari v2.45 diperlukan untuk autentikasi identitas terkelola.

Ruang kerja Azure Monitor

Artikel ini membahas pengiriman metrik Prometheus ke ruang kerja Azure Monitor. Untuk membuat ruang kerja azure monitor, lihat Mengelola ruang kerja Azure Monitor.

Izin

Izin administrator untuk kluster atau sumber daya diperlukan untuk menyelesaikan langkah-langkah dalam artikel ini.

Menyiapkan aplikasi untuk identitas yang dikelola pod Microsoft Entra

Proses untuk menyiapkan penulisan jarak jauh Prometheus untuk aplikasi dengan menggunakan autentikasi identitas yang dikelola pod Microsoft Entra melibatkan penyelesaian tugas-tugas berikut:

  1. Daftarkan identitas terkelola yang ditetapkan pengguna dengan ID Microsoft Entra.
  2. Tetapkan peran Operator Identitas Terkelola dan Kontributor Komputer Virtual ke identitas terkelola.
  3. Tetapkan peran Penerbit Metrik Pemantauan ke identitas terkelola yang ditetapkan pengguna.
  4. Membuat pengikatan identitas Azure.
  5. Tambahkan label aadpodidbinding ke pod Prometheus.
  6. Sebarkan kontainer sidecar untuk menyiapkan penulisan jarak jauh.

Tugas dijelaskan di bagian berikut.

Mendaftarkan identitas terkelola dengan ID Microsoft Entra

Buat identitas terkelola yang ditetapkan pengguna atau daftarkan identitas terkelola yang ditetapkan pengguna yang sudah ada.

Untuk informasi tentang membuat identitas terkelola, lihat Menyiapkan penulisan jarak jauh untuk layanan terkelola Azure Monitor untuk Prometheus dengan menggunakan autentikasi identitas terkelola.

Tetapkan peran Operator Identitas Terkelola dan Kontributor Komputer Virtual ke identitas terkelola

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> 

Grup sumber daya simpul kluster AKS berisi sumber daya yang Anda gunakan di langkah lain dalam proses ini. Grup sumber daya ini memiliki nama MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Anda dapat menemukan nama grup sumber daya dengan menggunakan menu Grup sumber daya di portal Azure.

Menetapkan peran Penerbit Metrik Pemantauan ke identitas terkelola

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

Membuat pengikatan identitas Azure

Identitas terkelola yang ditetapkan pengguna memerlukan pengikatan identitas untuk identitas yang akan digunakan sebagai identitas yang dikelola pod.

Salin YAML berikut ke file aadpodidentitybinding.yaml :


apiVersion: "aadpodidentity.k8s.io/v1" 

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

Jalankan perintah berikut:

kubectl create -f aadpodidentitybinding.yaml 

Tambahkan label aadpodidbinding ke pod Prometheus

Label aadpodidbinding harus ditambahkan ke pod Prometheus agar identitas yang dikelola pod berlaku. Anda dapat menambahkan label dengan memperbarui file deployment.yaml atau dengan menyuntikkan label saat Anda menyebarkan kontainer sidecar seperti yang dijelaskan di bagian berikutnya.

Menyebarkan kontainer sidecar untuk menyiapkan penulisan jarak jauh

  1. Salin YAML berikut dan simpan ke file. YAML menggunakan port 8081 sebagai port mendengarkan. Jika Anda menggunakan port yang berbeda, ubah nilai tersebut di 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. Gunakan Helm untuk menerapkan file YAML dan memperbarui konfigurasi Prometheus Anda:

    # 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>
    

Verifikasi dan pemecahan masalah

Untuk informasi verifikasi dan pemecahan masalah, lihat Pemecahan masalah penulisan jarak jauh dan layanan terkelola Azure Monitor untuk penulisan jarak jauh Prometheus.

Langkah berikutnya