如何在alertmanager配置文件中插入秘密

问题描述 投票:0回答:2

我使用 Helm(和 ArgoCD)配置了 Alertmanager。 我需要插入 smtp_auth_password 值,但不是纯文本。

smtp_auth_username: 'apikey'
smtp_auth_password: $API_KEY

我怎样才能实现它?我听说过“外部秘密”,但这应该是最简单的方法?

kubernetes kubernetes-helm prometheus-alertmanager
2个回答
3
投票

解决方案

如果您使用

prometheus-community/prometheus
,其中包含此警报管理器 chart 作为依赖项,那么您可以执行以下操作:

在运行alertmanager pod的同一命名空间中创建secret

k create secret generic alertmanager-secrets \
  --from-literal="opsgenie-api-key=YOUR-OPSGENIE-API-KEY" \
  --from-literal="slack-api-url=https://hooks.slack.com/services/X03R2856W/A14T19TKEGM/...."

通过使用 extraSecretMounts 安装该秘密

alertmanager:
  enabled: true
  service:
    annotations:
      prometheus.io/scrape: "true"  
  # contains secret values for opsgenie and slack receivers
  extraSecretMounts:
    - name: secret-files
      mountPath: /etc/secrets
      subPath: ""
      secretName: alertmanager-secrets
      readOnly: true

在您的接收器中使用它们

receivers:
  - name: slack-channel
    slack_configs:
      - channel: '#client-ccf-ccl-alarms'
        api_url_file: /etc/secrets/slack-api-url <-------------------THIS
        title: '{{ template "default.title" . }}'
        text: '{{ template "default.description" . }}'
        pretext: '{{ template "slack.pretext" . }}'
        color: '{{ template "slack.color" . }}'
        footer: '{{ template "slack.footer" . }}'
        send_resolved: true
        actions:
          - type: button
            text: "Query :mag:"
            url: '{{ template "alert_query_url" . }}'
          - type: button
            text: "Silence :no_bell:"
            url: '{{ template "alert_silencer_url" . }}'
          - type: button
            text: "Karma UI :mag:"
            url: '{{ template "alert_karma_url" . }}'
          - type: button
            text: "Runbook :green_book:"
            url: '{{ template "alert_runbook_url" . }}'
          - type: button
            text: "Grafana :chart_with_upwards_trend:"
            url: '{{ template "alert_grafana_url" . }}'
          - type: button
            text: "KB :mag:"
            url: '{{ template "alert_kb_url" . }}'

  - name: opsgenie
    opsgenie_configs:
      - send_resolved: true
        api_key_file: /etc/secrets/opsgenie-api-key <-------------------THIS
        message: '{{ template "default.title" . }}'
        description: '{{ template "default.description" . }}'
        source: '{{ template "opsgenie.default.source" . }}'
        priority: '{{ template "opsgenie.default.priority" . }}'
        tags: '{{ template "opsgenie.default.tags" . }}'

如果您想使用email_config的电子邮件功能 然后只需使用相同的方法:

[ auth_password_file: <string> | default = global.smtp_auth_password_file ]

0
投票

如果在不支持

kube_prometheus_stack
的地方使用
extraSecretMounts
,您可以使用
alertmanager.alertmanagerSpec.secrets
来代替;

alertmanager:
  alertmanagerSpec:
    secrets:
      - alertmanager-secrets

然后在接收器中将其与不同的路径值一起使用:

    receivers:
    - name: 'slack.backend'
      slack_configs:
      - api_url_file: /etc/alertmanager/secrets/alertmanager-secrets/slack-api-url
© www.soinside.com 2019 - 2024. All rights reserved.