Есть ли способ контролировать сертификаты tls в кубернетах с помощью prometheus? - PullRequest
1 голос
/ 01 августа 2020

Я хочу контролировать свои tls-сертификаты в Kubernetes с помощью Prometheus и получить панель мониторинга в графане. Я хочу следить за их истечением и хочу получать уведомление, когда срок действия сертификатов истечет через 30 дней. Я провел много исследований и наконец нашел https://github.com/enix/x509-exporter. Как мне его использовать? Есть ли другой эффективный способ контролировать истечение срока действия сертификатов?

Ответы [ 2 ]

2 голосов
/ 01 августа 2020

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не пробовал этот x509-exporter . Просто предлагаю в соответствии с моим пониманием.

Файл README кажется отключенным. Первое, что вам нужно сделать, это создать проблему с github, не беспокойтесь, я поднял ее здесь .

Я перечисляю шаги вниз в соответствии с моим пониманием и ссылаюсь на раздел использования .

  • Используйте их официальный docker образ и разверните его как развертывание на k8s.
  • Проверьте образцы yaml-файлов k8s для создания развертывания. Также обратите внимание, что yaml развертывания должен смонтировать каталог хоста, в котором хранятся все сертификаты k8s.
  • Согласно документации , обычно сертификаты расположены в /etc/kubernetes/pki.
  • Yaml развертывания должен содержать команду , в которой вы указываете экспортеру каталог, в котором расположены сертификаты с другими необходимыми параметрами. Вот так
command: ["x509-exporter"]
args: ["-d", "/etc/kubernetes/pki", "-p", "8091", "--debug"]

Примечание: Здесь я запускаю экспортер в режиме отладки на порт 8091, не забудьте открыть этот порт.

  • В конфигурации prometheus добавьте конечную точку x509-exporter в качестве цели, чтобы очистить метрики и построить их, создав графики на панели управления Grafana.
1 голос
/ 02 августа 2020

Другой способ - установить x509-exporter с помощью управляющей диаграммы: https://hub.helm.sh/charts/enix/x509-exporter

См. Документацию здесь https://github.com/enix/helm-charts/tree/master/charts/x509-exporter.

Вам также могут быть полезны следующие правила предупреждений Prometheus (на основе показателей x509-exporter):

check-kubernetes-certificate.rules.yml:

groups:
- name: check-kubernetes-certificate-expiration.rules
  rules:
  - alert: KubernetesCertificateExpiration
    expr: floor((x509_cert_not_after - time()) / 86400) < 90
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: 'Certificate expiration on `{{ $labels.nb_cluster }}`'
      description: 'Certificate `{{ $labels.subject_CN }}` will expire in {{ $value }} days on `{{ $labels.nb_cluster }}`'

  - alert: KubernetesCertificateExpirationCritical
    expr: floor((x509_cert_not_after - time()) / 86400) < 10
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: 'Certificate expiration on `{{ $labels.nb_cluster }}`'
      description: 'Certificate `{{ $labels.subject_CN }}` will expire in {{ $value }} days on `{{ $labels.nb_cluster }}`'

  - alert: KubeletCertificateEmbedded
    expr: x509_cert_not_after{filename="kubelet.conf", embedded_kind="user"}
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: '{{ $labels.instance }}: Embedded certificate in {{ $labels.filename }}'
      description: '{{ $labels.nb_cluster }} has kubelet {{ $labels.subject_CN }} running with an embedded certificate in {{ $labels.filepath }}'
...