kubernetes - 如何在alertmanager配置文件中插入 secret

标签 kubernetes kubernetes-helm prometheus-alertmanager

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

smtp_auth_username: 'apikey'
smtp_auth_password: $API_KEY

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

最佳答案

解决方案

如果您使用包含此警报管理器的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 挂载该 secret

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 ]

关于kubernetes - 如何在alertmanager配置文件中插入 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74254241/

相关文章:

docker - JFrog Docker注册表未在Kubernetes中提取图像

go - 将两个 if 条件合二为一

kubernetes - Kubernetes helm 图表是否可以动态添加到它使用的子图表中?

prometheus-alertmanager - Alertmanager 按标签过滤(时间刻度后端)

Prometheus Alertmanager 使用curl 删除所有沉默。休息API

kubernetes - Prometheus kube_pod_container_status_waiting_reason 没有捕获到 pod CrashLoopBackOff 原因

kubernetes - 我的 kubernetes 集群没有缩小

kubernetes - 未考虑重新分配的Istio等级限制

jboss - JBOSS/Wildfly集群和Kubernetes-

c# - 扩展 IdentityServer4 服务