Чтобы быть уверенным в эффективности ваших систем, запишитесь на аудит мониторинга.
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
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 оставался безопасным и актуальным.