Отправка данных Prometheus в Azure Monitor с помощью проверки подлинности Идентификация рабочей нагрузки Microsoft Entra
В этой статье описывается настройка удаленной записи для отправки данных из управляемого кластера Prometheus Azure Monitor с помощью проверки подлинности Идентификация рабочей нагрузки Microsoft Entra.
Необходимые компоненты
- Версии Prometheus, превышающие версию 2.48, необходимы для проверки подлинности приложения Идентификатора Microsoft Entra.
- Prometheus, работающий в кластере. В этой статье предполагается, что кластер Prometheus настроен с помощью стека kube-prometheus, но вы можете настроить Prometheus с помощью других методов.
Настройка удаленной записи с помощью Идентификация рабочей нагрузки Microsoft Entra
Процесс настройки удаленной записи Prometheus с помощью проверки подлинности Идентификация рабочей нагрузки Microsoft Entra включает выполнение следующих задач:
- Включите OpenID Connect и запишите URL-адрес издателя.
- Настройте изменение веб-перехватчика приема.
- Настройте удостоверение рабочей нагрузки.
- Создайте приложение Microsoft Entra или управляемое удостоверение, назначаемое пользователем, и предоставьте разрешения.
- Назначьте роль издателя метрик мониторинга в правиле сбора данных рабочей области приложению.
- Создайте или обновите модуль pod учетной записи службы Kubernetes Prometheus.
- Установите учетные данные федеративного удостоверения между удостоверением и издателем учетной записи службы и субъектом.
- Разверните контейнер бокового контейнера для настройки удаленной записи.
Задачи описаны в следующих разделах.
Включение OpenID Connect и запрос издателя
Чтобы включить OpenID Connect (OIDC) в кластере AKS, следуйте инструкциям в статье "Создание поставщика OpenID Connect в AKS".
После включения запишите SERVICE_ACCOUNT_ISSUER, который по сути является URL-адресом издателя OIDC. Чтобы получить URL-адрес издателя OIDC, выполните команду az aks show . Замените значения по умолчанию для имени кластера и имени группы ресурсов.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
По умолчанию издатель использует базовый URL-адрес https://{region}.oic.prod-aks.azure.com
, где значение для {region}
совпадений с расположением кластера AKS развертывается.
Сведения о других управляемых кластерах (Amazon Elastic Kubernetes Service и Google Kubernetes Engine) см. в разделе "Управляемые кластеры" — Идентификация рабочей нагрузки Microsoft Entra. Сведения о самоуправляемых кластерах см. в разделе "Самоуправляемые кластеры" Идентификация рабочей нагрузки Microsoft Entra.
Настройка мутации веб-перехватчика приема
Настройте изменение веб-перехватчика допуска, чтобы сохранить федеративные учетные данные в актуальном состоянии. Чтобы настроить веб-перехватчик, см. раздел "Изменение допуска". Идентификация рабочей нагрузки Microsoft Entra.
Настройка удостоверения рабочей нагрузки
Чтобы настроить удостоверение рабочей нагрузки, экспортируйте следующие переменные среды:
# [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>"
Для SERVICE_ACCOUNT_NAME
этого проверьте, связана ли учетная запись службы (отдельная от учетной записи службы по умолчанию ) с модулем Prometheus. Найдите значение serviceaccountName
или serviceAccount
(не рекомендуется) в spec
модуле pod Prometheus. Используйте это значение, если оно существует. Чтобы найти учетную запись службы, связанную с pod Prometheus, выполните следующую команду kubectl:
kubectl get pods/<Promethuespodname> -o yaml
Если serviceaccountName
и serviceAccount
не существует, введите имя учетной записи службы, которую вы хотите связать с модулем Prometheus pod.
Создание приложения Microsoft Entra или управляемого удостоверения, назначаемого пользователем, и предоставление разрешений
Создайте приложение Microsoft Entra или управляемое удостоверение, назначаемое пользователем, и предоставьте разрешение на публикацию метрик в рабочей области 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}"
Назначение роли издателя метрик мониторинга в правиле сбора данных рабочей области приложению или управляемому удостоверению
Сведения о назначении роли см. в статье "Назначение роли издателя метрик мониторинга" в правиле сбора данных рабочей области управляемому удостоверению.
Создание или обновление учетной записи службы Kubernetes Pod Prometheus
Часто создается учетная запись службы Kubernetes и связана с модулем pod под управлением контейнера Prometheus. Если вы используете стек kube-prometheus, код автоматически создает учетную запись службы prometheus-kube-prometheus-prometheus-prometheus.
Если учетная запись службы Kubernetes, кроме учетной записи службы по умолчанию, связана с Prometheus, создайте новую учетную запись службы специально для модуля pod под управлением Prometheus.
Чтобы создать учетную запись службы, выполните следующую команду 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
Если учетная запись службы Kubernetes, отличной от учетной записи службы по умолчанию, связана с модулем pod, добавьте следующую заметку в учетную запись службы:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/client-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_CLIENT_ID}" –overwrite
Если ваше приложение Microsoft Entra или управляемое удостоверение, назначаемое пользователем, не входит в тот же клиент, что и кластер, добавьте следующую заметку в учетную запись службы:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/tenant-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_TENANT_ID}" –overwrite
Установка учетных данных федеративного удостоверения между удостоверением и издателем учетной записи службы и субъектом
Создайте федеративные учетные данные с помощью Azure CLI.
Управляемое удостоверение, назначаемое пользователем
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}"
Приложение 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
Развертывание контейнера на стороне для настройки удаленной записи
Внимание
Модуль Pod Prometheus должен иметь следующую метку: azure.workload.identity/use: "true"
Для контейнера бокового контейнера удаленной записи требуются следующие значения среды:
INGESTION_URL
: конечная точка приема метрик, показанная на странице обзора рабочей области Azure MonitorLISTENING_PORT
:8081
(поддерживается любой порт)IDENTITY_TYPE
:workloadIdentity
Скопируйте следующий YAML и сохраните его в файл. YAML использует порт 8081 в качестве порта прослушивания. При использовании другого порта измените это значение в 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
Замените следующие значения в YAML:
значение Описание <CLUSTER-NAME>
Имя кластера AKS. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
Версия образа контейнера удаленной записи.<INGESTION-URL>
Значение конечной точки приема метрик на странице обзора рабочей области Azure Monitor. Используйте Helm, чтобы применить YAML-файл и обновить конфигурацию 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>
Проверка и устранение неполадок
Сведения о проверке и устранении неполадок см. в статье "Устранение неполадок удаленной записи и управляемой службы Azure Monitor для удаленной записи Prometheus".
Следующие шаги
- Сбор метрик Prometheus из кластера AKS
- Дополнительные сведения об управляемой службе Azure Monitor для Prometheus
- Удаленная запись в управляемой службе Azure Monitor для Prometheus
- Отправка данных Prometheus в Azure Monitor с помощью проверки подлинности Microsoft Entra
- Отправка данных Prometheus в Azure Monitor с помощью проверки подлинности управляемого удостоверения
- Отправка данных Prometheus в Azure Monitor с помощью проверки подлинности microsoft Entra pod(предварительная версия)