有下一个问题:尝试通过 CRD 设置警报管理器配置时,pod 上的配置错误。问题如下:
- routing_key: |
*****
毕竟 CD 使用的是多行字符串类型,它会导致配置崩溃 - alertmanager 无法将其理解为 pagerduty 配置,并且不使用默认模板进行自定义配置。它没有为 PD 生成预期的 json,并且 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 的 Helm 图表模板:
{{- $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 并与错误类型的 routing_key 同步。
尝试使用 v1 API(使用 service_key),同样的问题。
有人有同样的问题吗?怎么解决?试了很多次,但想想——这是一个错误。
答案1
我对 emailConfig 也遇到了同样的问题。
这是因为我的密码在\n
最后的秘密中进行了 base64 编码。
您应该尝试使用以下命令生成秘密的 base64 字符串-n
:
echo -n "secretstring" | base64
我希望这会有所帮助。