Die Installation eines ACME SSL-Zertifikats in Kubernetes ist dank ausgereifter Tools wie cert-manager und breiter Unterstützung durch kommerzielle Zertifizierungsstellen jetzt ein standardisierter und flexibler Prozess. Ganz gleich, ob Sie Produktions-Workloads hinter NGINX Ingress, Traefik oder einem anderen Gateway laufen lassen, Sie können sicheres HTTPS mit voller Kontrolle automatisieren.

Diese Anleitung zeigt Ihnen, wie Sie ein ACME SSL-Zertifikat in Kubernetes mit cert-manager installieren. Wir behandeln die Installation, die Einrichtung eines Ausstellers mit External Account Binding (EAB) und die Ausstellung von Zertifikaten zum Schutz Ihrer Ingress-Dienste.
Was Sie brauchen
Bevor Sie eintauchen, vergewissern Sie sich:
- Sie haben einen funktionierenden Kubernetes-Cluster (v1.23+ empfohlen)
kubectlist konfiguriert und funktioniert- Sie haben Zugriff auf Ihren Ingress Controller (z.B. NGINX, Traefik)
- Ihre Domain verweist auf die öffentliche IP Ihres Ingress-Controllers
- Sie haben EAB-Zugangsdaten von Ihrer ACME-kompatiblen CA:
- ACME-Verzeichnis-URL (z.B. https://acme.example.com/v2/DV)
- EAB-Schlüssel-Identifikator (KID)
- EAB HMAC-Schlüssel
Hinweis: https://acme.example.com/v2/DV wird in diesem Leitfaden als Platzhalter für die URL des ACME-Verzeichnisses verwendet. Ersetzen Sie ihn durch den echten Endpunkt Ihrer Zertifizierungsstelle.
Schritt 1 – Installieren Sie cert-manager
cert-manager ist der am häufigsten verwendete Kubernetes-native ACME-Client. Er läuft als Controller, der die Ausstellung und Erneuerung von Zertifikaten verwaltet.
Installation über Helm (bevorzugt für die Produktion):
kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.14.4 \
--set installCRDs=true
Warten Sie ein paar Sekunden und bestätigen Sie, dass alle Pods ausgeführt werden:
kubectl get pods -n cert-manager
Sie sollten drei Pods sehen: cert-manager, cert-manager-webhook und cert-manager-cainjector.
Schritt 2 – Erstellen eines Kubernetes-Geheimnisses für EAB-Zugangsdaten
Erstellen Sie ein Kubernetes-Geheimnis, um Ihren EAB-Schlüssel sicher zu speichern:
kubectl create secret generic acme-eab-secret \
--namespace cert-manager \
--from-literal=eab-kid="YOUR_EAB_KID" \
--from-literal=eab-hmac-key="YOUR_EAB_HMAC_KEY"
Ersetzen Sie sie durch Ihre tatsächlichen Anmeldedaten. Vermeiden Sie Leerzeichen beim Kopieren und Einfügen.
Schritt 3 – Definieren Sie einen ClusterIssuer oder Issuer
Erstellen Sie nun eine Ressource ClusterIssuer (für alle Namespaces) oder Issuer (einzelner Namespace), die cert-manager unter Verwendung der EAB-Anmeldeinformationen mit Ihrer ACME CA verbindet.
Hier ist ein Beispiel für ClusterIssuer YAML:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: acme-issuer
spec:
acme:
server: https://your.acme-server.com/v2/DV
email: [email protected]
privateKeySecretRef:
name: acme-private-key
externalAccountBinding:
keyID: YOUR_EAB_KID
keySecretRef:
name: acme-eab-secret
key: eab-hmac-key
solvers:
- http01:
ingress:
class: nginx
Wenden Sie es an:
kubectl apply -f clusterissuer.yaml
Ersetzen Sie ingress.class: nginx durch traefik, nginx-internal oder was auch immer Ihre ingress-Klasse ist. Sie finden dies in der Dokumentation Ihres Ingress-Controllers.
Schritt 4 – Erstellen Sie eine Zertifikatsressource
Sobald Ihr ClusterIssuer fertig ist, erstellen Sie eine Zertifikatsressource, die cert-manager mitteilt, welche Domäne gesichert werden soll. Hier ist ein Beispiel:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-ssl-cert
namespace: default
spec:
secretName: my-ssl-cert-tls
issuerRef:
name: acme-issuer
kind: ClusterIssuer
commonName: yourdomain.com
dnsNames:
- yourdomain.com
- www.yourdomain.com
Wenden Sie es an:
kubectl apply -f certificate.yaml
cert-manager verwendet den Aussteller, löst die Herausforderung über Ingress und speichert das ausgestellte Zertifikat als Kubernetes TLS-Geheimnis.
Schritt 5 – Verweisen Sie auf das Zertifikat in Ihrem Ingress
Aktualisieren Sie Ihre Ingress-Regel, um das generierte Zertifikat zu verwenden:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: acme-issuer
spec:
tls:
- hosts:
- yourdomain.com
- www.yourdomain.com
secretName: my-ssl-cert-tls
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: your-service
port:
number: 80
Wenden Sie es an:
kubectl apply -f ingress.yaml
Sobald cert-manager den Vermerk erkennt, beginnt er mit der Lösung der ACME-Herausforderung und stellt Ihr Zertifikat aus.
Schritt 6 – Überprüfen des Zertifikats und automatische Erneuerung
Um zu überprüfen, ob alles funktioniert:
kubectl beschreiben Zertifikat my-ssl-cert
Suchen Sie nach dem erfolgreich ausgestellten Zertifikat.
Um die Einrichtung der Erneuerung zu überprüfen, führen Sie aus:
kubectl get certificaterequests
cert-manager führt die Erneuerung automatisch ~30 Tage vor Ablauf durch. Sie können eine Erneuerung wie folgt simulieren:
kubectl cert-manager renew my-ssl-cert
Allgemeine Fragen
Die Einrichtung von ACME SSL in Kubernetes kann sich etwas abstrakt anfühlen, insbesondere wenn Sie mit Ingress Controllern, Secrets und DNS-Einträgen jonglieren. Im Folgenden beantworten wir einige häufige Fragen, mit denen Entwickler bei der Installation von ACME-Zertifikaten in einer Kubernetes-Umgebung konfrontiert werden, unabhängig davon, ob Sie den Cert-Manager oder ein alternatives Setup verwenden.
Kann ich DNS-01 anstelle von HTTP-01 verwenden?
Ja, cert-manager unterstützt die DNS-Validierung mit Anbietern wie Cloudflare, AWS und Google Cloud DNS. Verwenden Sie es, wenn Sie Port 80 nicht freigeben.
Ist cert-manager produktionsreif?
Unbedingt. Es ermöglicht SSL für große Kubernetes-Cluster in Unternehmen und öffentlichen Clouds.
Kann ich ein Wildcard-Zertifikat mit ACME in Kubernetes verwenden?
Ja, aber Wildcard-Zertifikate erfordern eine DNS-01-Validierung, bei der DNS-Einträge aktualisiert werden müssen, anstatt HTTP-Challenges zu verwenden. Vergewissern Sie sich, dass Ihr DNS-Anbieter die Automatisierung (über API) unterstützt, und konfigurieren Sie den dns01-Solver in Ihrer cert-manager-Einrichtung entsprechend.
Letzte Worte
Sie wissen jetzt, wie Sie ein ACME SSL-Zertifikat in Kubernetes mit cert-manager und einer ACME-kompatiblen Zertifizierungsstelle installieren. Diese Einrichtung ist vollständig automatisiert und für moderne Kubernetes-Umgebungen skalierbar. Sie erhalten sicheres HTTPS, automatische Erneuerung und nahtlose Integration mit Ingress, ohne Ihren Cluster verlassen zu müssen.
Sparen Sie 10% auf SSL-Zertifikate, wenn Sie noch heute bestellen!
Schnelle Ausstellung, starke Verschlüsselung, 99,99% Browser-Vertrauen, engagierter Support und 25-tägige Geld-zurück-Garantie. Gutscheincode: SAVE10

