Odeslání dat Prometheus do služby Azure Monitor pomocí ověřování ID úloh Microsoft Entra
Tento článek popisuje, jak nastavit vzdálené zápisy pro odesílání dat ze spravovaného clusteru Azure Monitoru pomocí ověřování ID úloh Microsoft Entra.
Požadavky
- Pro ověřování aplikace Microsoft Entra ID se vyžadují verze Prometheus větší než verze 2.48.
- Prometheus spuštěný v clusteru. Tento článek předpokládá, že cluster Prometheus je nastavený pomocí zásobníku kube-prometheus, ale prometheus můžete nastavit pomocí jiných metod.
Nastavení vzdáleného zápisu pomocí ID úloh Microsoft Entra
Proces nastavení vzdáleného zápisu Prometheus pomocí ověřování ID úloh Microsoft Entra zahrnuje dokončení následujících úloh:
- Povolte OpenID Connect a poznamenejte si adresu URL vystavitele.
- Nastavte webhook pro ztlumení přístupu.
- Nastavte identitu úlohy.
- Vytvořte aplikaci Microsoft Entra nebo spravovanou identitu přiřazenou uživatelem a udělte oprávnění.
- Přiřaďte aplikaci roli Vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru.
- Vytvořte nebo aktualizujte svůj účet služby Kubernetes Prometheus.
- Vytvořte přihlašovací údaje federované identity mezi identitou a vystavitelem účtu služby a předmětem.
- Nasaďte kontejner sajdkáru pro nastavení vzdáleného zápisu.
Úkoly jsou popsány v následujících částech.
Povolení OpenID Connect a dotazování vystavitele
Pokud chcete povolit OpenID Connect (OIDC) v clusteru AKS, postupujte podle pokynů v tématu Vytvoření zprostředkovatele OpenID Connect v AKS.
Po povolení si poznamenejte SERVICE_ACCOUNT_ISSUER, což je v podstatě adresa URL vystavitele OIDC. Pokud chcete získat adresu URL vystavitele OIDC, spusťte příkaz az aks show . Nahraďte výchozí hodnoty pro název clusteru a název skupiny prostředků.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
Ve výchozím nastavení je vystavitel nastavený tak, aby používal základní adresu URL https://{region}.oic.prod-aks.azure.com
, kde hodnota odpovídá {region}
umístění, ve kterém je cluster AKS nasazený.
Další spravované clustery (Amazon Elastic Kubernetes Service a Google Kubernetes Engine) najdete v tématu Spravované clustery – ID úloh Microsoft Entra. Informace o samoobslužných clusterech najdete v tématu Samoobslužné clustery – ID úloh Microsoft Entra.
Nastavení webhooku pro ztlumení přístupu
Nastavte webhook pro ztlumení přístupu, aby byly federované přihlašovací údaje aktuální. Viz Mutating Access Webhook – ID úloh Microsoft Entra k nastavení.
Nastavení identity úlohy
Pokud chcete nastavit identitu úlohy, exportujte následující proměnné prostředí:
# [OPTIONAL] Set this if you're using a Microsoft Entra application
export APPLICATION_NAME="<your application name>"
# [OPTIONAL] Set this only if you're using a user-assigned managed identity
export USER_ASSIGNED_IDENTITY_NAME="<your user-assigned managed identity name>"
# Environment variables for the Kubernetes service account and federated identity credential
export SERVICE_ACCOUNT_NAMESPACE="<namespace where Prometheus pod is running>"
export SERVICE_ACCOUNT_NAME="<name of service account associated with Prometheus pod. See below for more details>"
export SERVICE_ACCOUNT_ISSUER="<your service account (or OIDC) issuer URL>"
Pokud SERVICE_ACCOUNT_NAME
chcete zjistit, jestli je účet služby (oddělený od výchozího účtu služby) již přidružený k podu Prometheus. V podu Prometheus vyhledejte hodnotu serviceaccountName
nebo serviceAccount
(zastaralá spec
). Tuto hodnotu použijte, pokud existuje. Pokud chcete najít účet služby přidružený k podu Prometheus, spusťte následující příkaz kubectl:
kubectl get pods/<Promethuespodname> -o yaml
Pokud serviceaccountName
a serviceAccount
neexistuje, zadejte název účtu služby, který chcete přidružit k podu Prometheus.
Vytvoření aplikace Microsoft Entra nebo spravované identity přiřazené uživatelem a udělení oprávnění
Vytvořte aplikaci Microsoft Entra nebo spravovanou identitu přiřazenou uživatelem a udělte oprávnění k publikování metrik do pracovního prostoru služby Azure Monitor:
# create a Microsoft Entra application
az ad sp create-for-rbac --name "${APPLICATION_NAME}"
# create a user-assigned managed identity if you use a user-assigned managed identity for this article
az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}"
Přiřazení role Vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru k aplikaci nebo spravované identitě
Informace o přiřazování role najdete v tématu Přiřazení role vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru spravované identitě.
Vytvoření nebo aktualizace účtu služby Kubernetes Prometheus
Účet služby Kubernetes se často vytvoří a přidružuje k podu, na kterém běží kontejner Prometheus. Pokud používáte zásobník kube-prometheus, kód automaticky vytvoří účet služby prometheus-kube-prometheus-prometheus-prometheus.
Pokud k Prometheus není přidružený žádný účet služby Kubernetes s výjimkou výchozího účtu služby, vytvořte nový účet služby speciálně pro pod, na kterém běží Prometheus.
Pokud chcete vytvořit účet služby, spusťte následující příkaz kubectl:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: service account
metadata:
annotations:
azure.workload.identity/client-id: ${APPLICATION_CLIENT_ID:-$USER_ASSIGNED_IDENTITY_CLIENT_ID}
name: ${SERVICE_ACCOUNT_NAME}
namespace: ${SERVICE_ACCOUNT_NAMESPACE}
EOF
Pokud je k vašemu podu přidružený jiný účet služby Kubernetes, než je výchozí účet služby, přidejte do svého účtu služby následující poznámku:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/client-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_CLIENT_ID}" –overwrite
Pokud vaše aplikace Microsoft Entra nebo spravovaná identita přiřazená uživatelem není ve stejném tenantovi jako váš cluster, přidejte do svého účtu služby následující poznámku:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/tenant-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_TENANT_ID}" –overwrite
Vytvoření přihlašovacích údajů federované identity mezi identitou a vystavitelem účtu služby a předmětem
Vytvoření federovaných přihlašovacích údajů pomocí Azure CLI
Spravovaná identita přiřazená uživatelem
az identity federated-credential create \
--name "kubernetes-federated-credential" \
--identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--issuer "${SERVICE_ACCOUNT_ISSUER}" \
--subject "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}"
Aplikace Microsoft Entra
# Get the ObjectID of the Microsoft Entra app.
export APPLICATION_OBJECT_ID="$(az ad app show --id ${APPLICATION_CLIENT_ID} --query id -otsv)"
# Add a federated identity credential.
cat <<EOF > params.json
{
"name": "kubernetes-federated-credential",
"issuer": "${SERVICE_ACCOUNT_ISSUER}",
"subject": "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
EOF
az ad app federated-credential create --id ${APPLICATION_OBJECT_ID} --parameters @params.json
Nasazení kontejneru sajdkáru pro nastavení vzdáleného zápisu
Důležité
Pod Prometheus musí mít následující popisek: azure.workload.identity/use: "true"
Kontejner vzdáleného zápisu sajdkáře vyžaduje následující hodnoty prostředí:
INGESTION_URL
: Koncový bod příjmu metrik zobrazený na stránce Přehled pracovního prostoru služby Azure MonitorLISTENING_PORT
:8081
(podporuje se jakýkoli port)IDENTITY_TYPE
:workloadIdentity
Zkopírujte následující YAML a uložte ho do souboru. YAML používá jako naslouchající port port 8081. Pokud používáte jiný port, upravte tuto hodnotu v YAML.
prometheus: prometheusSpec: externalLabels: cluster: <AKS-CLUSTER-NAME> podMetadata: labels: azure.workload.identity/use: "true" ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write remoteWrite: - url: 'http://localhost:8081/api/v1/write' containers: - name: prom-remotewrite image: <CONTAINER-IMAGE-VERSION> imagePullPolicy: Always ports: - name: rw-port containerPort: 8081 env: - name: INGESTION_URL value: <INGESTION_URL> - name: LISTENING_PORT value: '8081' - name: IDENTITY_TYPE value: workloadIdentity
Nahraďte v YAML následující hodnoty:
Hodnota Popis <CLUSTER-NAME>
Název clusteru AKS <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
Verze image vzdáleného zápisu kontejneru pro zápis<INGESTION-URL>
Hodnota koncového bodu příjmu metrik ze stránky Přehled pracovního prostoru služby Azure Monitor. Použijte Helm k instalaci souboru YAML a aktualizaci konfigurace Prometheus:
# set a 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>
Ověření a řešení potíží
Informace o ověřování a řešení potíží najdete v tématu Řešení potíží se vzdáleným zápisem a spravovanou službou Azure Monitor pro vzdálený zápis pro Prometheus.
Další kroky
- Shromažďování metrik Promethea z clusteru AKS
- Další informace o spravované službě Azure Monitor pro Prometheus
- Vzdálený zápis ve spravované službě Azure Monitor pro Prometheus
- Odeslání dat Prometheus do služby Azure Monitor pomocí ověřování Microsoft Entra
- Odesílání dat Prometheus do služby Azure Monitor pomocí ověřování spravované identity
- Odeslání dat Prometheus do služby Azure Monitor pomocí ověřování spravované podem Microsoft Entra (Preview)