Cert Manager

Zweck

Cert Manager automatisiert die Ausstellung, Erneuerung und Verwaltung von TLS-Zertifikaten innerhalb der Kubernetes-Plattform.

Ziele

  • Automatische Zertifikatsverwaltung

  • Vermeidung manueller Zertifikatserneuerungen

  • Einheitliches TLS-Modell

  • Integration in GitOps

  • Verwendung öffentlich vertrauenswürdiger Zertifikate

Architektur

Ingress / Gateway
        |
Certificate
        |
Cert Manager
        |
ClusterIssuer
        |
Let's Encrypt
        |
Hetzner DNS

Cert Manager überwacht Certificate-Ressourcen und erzeugt die benötigten TLS-Secrets automatisch.

ACME

Die Plattform verwendet Let’s Encrypt als Zertifizierungsstelle.

Die Validierung erfolgt über DNS01 Challenges.

DNS01 Challenge

Für die DNS-Validierung wird Hetzner DNS verwendet.

Vorteile:

  • Keine öffentlich erreichbaren Challenge-Endpunkte notwendig

  • Funktioniert für Ingress und Gateway API

  • Unterstützung für Wildcard-Zertifikate

ClusterIssuer

Cert Manager verwendet zentrale ClusterIssuer.

Diese stehen allen Namespaces zur Verfügung.

Beispiel:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    email: admin@tamay.cloud

Zertifikatsmodell

tamay.cloud

Für öffentliche Dienste wird ein Wildcard-Zertifikat verwendet.

Beispiel:

*.tamay.cloud

Dadurch können neue Dienste ohne zusätzliche ACME-Anfragen veröffentlicht werden.

home.tamay.cloud

Für interne Dienste werden einzelne Zertifikate erzeugt.

Beispiele:

  • grafana.home.tamay.cloud

  • immich.home.tamay.cloud

  • paperless.home.tamay.cloud

Die Zertifikate werden ebenfalls über Let’s Encrypt ausgestellt.

Verwendung mit Ingress

metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt

Verwendung mit Gateway API

Gateway Listener referenzieren die von Cert Manager erzeugten Secrets.

tls:
  certificateRefs:
    - name: gateway-tls

Automatische Erneuerung

Cert Manager überwacht sämtliche Zertifikate kontinuierlich.

Ablauf:

  1. Zertifikat nähert sich dem Ablaufdatum

  2. Cert Manager startet eine neue ACME Challenge

  3. Let’s Encrypt validiert die Domain

  4. Das Secret wird aktualisiert

  5. Der Ingress Controller oder das Gateway lädt das Zertifikat neu

Manuelle Erneuerungen sind normalerweise nicht erforderlich.

Verwendende Komponenten

  • Traefik

  • Gateway API

  • Envoy Gateway

  • Cilium Gateway

  • Öffentliche Webanwendungen

Betrieb

Zertifikate anzeigen

kubectl get certificates -A

Certificate Requests anzeigen

kubectl get certificaterequests -A

ClusterIssuer anzeigen

kubectl get clusterissuers

Zertifikat prüfen

kubectl describe certificate <name>

Logs anzeigen

kubectl logs \
  -n cert-manager \
  deployment/cert-manager

Vorteile

  • Vollautomatische Zertifikatsverwaltung

  • Öffentliche Vertrauenskette

  • Unterstützung von Wildcard-Zertifikaten

  • Integration mit Ingress und Gateway API

  • GitOps-kompatibel