prometheus-operator при настройке конфигурации alertmanager для PagerDuty

Возникла следующая проблема: при попытке настроить конфигурацию alertmanager через CRD возникла неправильная конфигурация модуля. Проблема выглядит так:

      - routing_key: |
      *****

Параметр маршрутизации_ключа после того, как все компакт-диски используют тип многострочной строки, и это приводит к сбою конфигурации - alertmanager не понимает это как конфигурацию pagerduty и не использует шаблон по умолчанию для пользовательской конфигурации. Не удалось создать ожидаемый json для PD и PD отправить обратно код состояния 400. Ожидаемая конфигурация выглядит так:

      - routing_key: ****

Но это только, если я использую CRD. Если я настроил его без CRD (в глобальных значениях), все работало нормально.

Больше информации:

конфиг.yaml:

      route:
  groupBy: ['alertname', 'namespace']
  groupWait: 10s
  groupInterval: 30s
  repeatInterval: 30m
  receiver: 'pagerDuty'
  continue: true
receivers:
- name: 'pagerDuty'
  pagerdutyConfigs:
  - url: 'https://events.eu.pagerduty.com/v2/enqueue'
    routingKey: { name: name_of_secret, key: ke_of_secret }

Шаблон диаграммы управления для сборки ее в CRD:

      {{- $files := .Files.Glob "alerting/**/config.yaml" }}
{{- if $files }}
{{- range $path, $fileContents := $files }}
---
{{- $namespace := regexReplaceAll "^.*/(.*?)/.*" $path "${1}"}}
apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: {{ printf "%s-%s" $namespace "alertmanager-config" }}
  namespace: {{ $namespace }}
spec: {{ $.Files.Get $path | nindent 2}}
{{- end }}
{{- end }}

После этого перейдите на ArgoCD и выполните синхронизацию с неправильным типом маршрутизации_ключа.

Попробуйте с API v1 (использует service_key), та же проблема.

У кого-нибудь есть такая же проблема? Как это исправить? Пробуйте многое, но подумайте — это баг.

1 ответ

У меня была такая же проблема с emailConfig.

Это произошло из-за моего пароля в формате Base64, закодированного в секрете с помощью\nв конце.

Вам следует попытаться сгенерировать секретную строку base64, используя следующую команду:-n:

      echo -n "secretstring" | base64

Я надеюсь, что это поможет.

Другие вопросы по тегам