Blogs
Automatisierte TLS-Zertifikatsverwaltung mit Cert-Manager in Kubernetes
Einführung
Da moderne Anwendungen und Dienste zunehmend zu Kubernetes migrieren, wird die Verwaltung verschiedener Aspekte wie Sicherheit und Konfiguration komplexer. Ein kritischer Aspekt dieser Verwaltung ist die Handhabung von TLS-Zertifikaten. In diesem umfassenden Leitfaden werden wir uns damit beschäftigen, wie Sie Zertifikate in Kubernetes effektiv mit Cert-Manager verwalten können, einem leistungsstarken, Open-Source-Tool, das zur Automatisierung der Verwaltung und Ausstellung von TLS-Zertifikaten konzipiert wurde.
Was ist Cert-Manager?
Cert-Manager ist eine Kubernetes-native Anwendung, die die Verwaltung und Ausstellung von TLS-Zertifikaten automatisiert. Es vereinfacht den Prozess Erhaltung, Erneuerung und Verwendung dieser Zertifikate.
Quelle: https://cert-manager.io/images/high-level-overview.svg
Warum Cert-Manager verwenden?
Automatisierung der Zertifikatausstellung und -erneuerung: Cert-Manager automatisiert den Prozess der Zertifikatausstellung und -erneuerung, reduziert manuellen Aufwand und minimiert das Risiko abgelaufener Zertifikate.
Integration mit mehreren Ausstellern: Es unterstützt verschiedene Zertifikatsbehörden wie Let's Encrypt, HashiCorp Vault und selbstsignierte Zertifikate, was Flexibilität in der Zertifikatsverwaltung bietet.
Native Kubernetes-Integration: Als Kubernetes-nativ integriert es sich nahtlos in Kubernetes-Ressourcen und -Paradigmen.
Custom Resource Definitions (CRDs): Cert-Manager verwendet CRDs zur Verwaltung von Zertifikaten, was es einfach macht, Zertifikate als Teil Ihrer Kubernetes-Manifeste zu definieren und zu verwalten.
Quelle: https://cert-manager.io/images/issuance-flow-policy.png
Cert-Manager installieren
Um Cert-Manager in Ihrem Kubernetes-Cluster zu installieren, können Sie Helm-Charts verwenden oder YAML-Manifeste direkt anwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
Voraussetzungen: Stellen Sie sicher, dass Sie einen laufenden Kubernetes-Cluster haben und kubectl konfiguriert ist, um mit Ihrem Cluster zu kommunizieren.
Installieren mit Helm (empfohlen):
Fügen Sie das Jetstack Helm-Repository hinzu.
helm repo add jetstack https://charts.jetstack.io
Aktualisieren Sie Ihren lokalen Helm-Chart-Repository-Cache.
helm repo update
Installieren Sie Cert-Manager mit Helm.
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.13.2 \
--set installCRDs=true
Cert-Manager konfigurieren
Die Konfiguration von Cert-Manager umfasst das Einrichten von Issuern oder Cluster-Issuern und das Erstellen von Zertifikatressourcen.
Einrichten von Issuern: Issuer sind Kubernetes-Ressourcen, die Zertifikatsbehörden darstellen. Sie können auf einen Namespace beschränkt (Issuer) oder clusterweit (ClusterIssuer) sein.
Erstellen von Zertifikatressourcen: Definieren Sie eine Zertifikatressource in Ihrem Kubernetes-Manifest und geben Sie die Details des gewünschten Zertifikats an, wie z.B. Common Name, DNS-Namen und den Aussteller.
Cert-Manager mit Ingress verwenden
Cert-Manager kann mit Kubernetes Ingress integriert werden, um Ihre Anwendungen automatisch zu sichern. Durch das Annotieren Ihrer Ingress-Ressource können Sie Cert-Manager anweisen, Zertifikate für Ihre Anwendung auszustellen und zu erneuern.
Annotieren Ihrer Ingress-Ressource: Fügen Sie Ihrer Ingress-Ressource Annotationen hinzu, um den Aussteller anzugeben und die automatische Zertifikatsverwaltung zu aktivieren.
Überprüfen der Zertifikatausstellung: Sobald Ihre Ingress-Ressource bereitgestellt ist, wird Cert-Manager ein Zertifikat ausstellen und sicherstellen, dass es vor dem Ablauf erneuert wird.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- example.kubeops.net
secretName: example-tls
rules:
- host: example.kubeops.net
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
Best Practices und Tipps
Regelmäßige Sicherung von Cert-Manager-Ressourcen: Stellen Sie sicher, dass Sie Sicherungen Ihrer Cert-Manager-Ressourcen wie Zertifikate und Aussteller haben.
Überwachung von Cert-Manager: Richten Sie die Überwachung und Alarme für Cert-Manager ein, um dessen Gesundheit und den Status der Zertifikate im Auge zu behalten.
Verwenden Sie eine Staging-Umgebung für Tests: Testen Sie Ihre Konfiguration in einer Staging-Umgebung, bevor Sie Produktionszertifikate ausstellen.
Fazit
Cert-Manager vereinfacht die TLS-Zertifikatsverwaltung in Kubernetes erheblich, indem es die Ausstellung und Erneuerung automatisiert.
Durch die Integration von Cert-Manager in Ihre Kubernetes-Umgebung können Sie sicherstellen, dass Ihre Anwendungen mit gültigen TLS-Zertifikaten gesichert sind, was den manuellen Aufwand und potenzielle Ausfallzeiten aufgrund abgelaufener Zertifikate minimiert.