Как упростить мониторинг сертификатов в Kubernetes с помощью SSL Exporter

Инструмент SSL Exporter меняет правила игры в отслеживании сертификатов Kubernetes. В этой статье дадим пошаговое руководство, как его запустить и настроить.
Что такое SSL Exporter

SSL Exporter — верный помощник для мониторинга сертификатов в Kubernetes. Он может проверять самые разные вещи, такие как TCP-соединения, веб-сайты по протоколу HTTPS и даже секреты Kubernetes, где хранятся ваши сертификаты.

Задача

Рассмотрим инструмент на примере задачи. Представьте, что вам нужно следить за сертификатами различных приложений, например, для JKS-файлов Java apps, Kafka или других сервисов. Эти сертификаты спрятаны в секретах Kubernetes, и нужен способ заставить SSL Exporter взаимодействовать с ними.


Настройка

Чтобы SSL Exporter заработал как надо, придется кое-что настроить в Kubernetes. Сначала создать конфиг, который покажет SSL Exporter, где искать. Затем запустить развертывание и службу, чтобы убедиться, что все работает без сбоев.



ConfigMap


apiVersion: v1
kind: ConfigMap
metadata:
  name: ssl-exporter-config
  namespace: my-namespace
data:
  exporter.yml: |-
    default_module: kubernetes
    modules:
      kubernetes:
        prober: kubernetes
        target: my-namespace/*

Deployment


apiVersion: apps/v1
kind: Deployment
metadata:
  name: ssl-exporter
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ssl-exporter
  template:
    metadata:
      name: ssl-exporter
      labels:
        app: ssl-exporter
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9219"
        prometheus.io/path: "/probe"
        prometheus.io/scheme: "https"
    spec:
      serviceAccountName: my-serviceaccount
      initContainers:
        - name: ca
          image: alpine
          command:
            - sh
            - -c
            - |
              set -e
              apk add --update ca-certificates
              cp /var/run/secrets/kubernetes.io/serviceaccount/ca.crt /usr/local/share/ca-certificates/kube-ca.crt
              update-ca-certificates
              cp /etc/ssl/certs/* /ssl-certs
          volumeMounts:
            - name: ssl-certs
              mountPath: /ssl-certs
      containers:
        - name: ssl-exporter
          image: ribbybibby/ssl-exporter:latest
          args:
            - --log.level=debug #enabled to check errors, you can leave this flag if not needed.
          ports:
            - name: tcp
              containerPort: 9219
          resources:
            limits:
              cpu: 100m
              memory: 100Mi
            requests:
              cpu: 50m
              memory: 50Mi
          volumeMounts:
            - name: ssl-certs
              mountPath: /etc/ssl/certs
            - name: ssl-exporter-config
              mountPath: /etc/ssl-exporter
          args: ["--config.file=/etc/ssl-exporter/exporter.yml"]
      volumes:
        - name: ssl-certs
          emptyDir: {}
        - name: ssl-exporter-config
          configMap:
            name: ssl-exporter-config
Service

apiVersion: v1
kind: Service
metadata:
  labels:
    name: ssl-exporter
  name: ssl-exporter
  namespace: my-namespace
spec:
  ports:
    - name: ssl-exporter
      protocol: TCP
      port: 9219
      targetPort: 9219
  selector:
    app: ssl-exporter
Важное уточнение

Чтобы SSL Exporter смог получить доступ к секретам Kubernetes, ему потребуется специальное разрешение, то есть учетная запись службы. Как только настроите его, все встанет на свои места.


Убедитесь, что у SSL Exporter есть необходимые разрешения для доступа к секретам Kubernetes.


Запрос Prometheus


Поможет отслеживать истечение срока действия ваших сертификатов.


((ssl_kubernetes_cert_not_after{job=~"$job", instance=~"$instance"} - time())/24/60/60)

Также есть панель управления Grafana, которая может быть полезной.

Благодаря SSL Exporter следить за сертификатами еще проще. Он помогает делать так, чтобы Kubernetes оставался безопасным и актуальным.

Ответим на все вопросы по переносу, сборке и развертыванию.
Kubernetes для Enterprise