Google Container Engine (GCE) HTTP(S) Load Balancer mit Intermediate Zertifikat
Da ich zu diesem Thema im Internet keine Anleitung gefunden habe fasse ich meine funktionierende Lösung hier zusammen.
Die Aufgabenstellung war es, über die Kubernetes Konfiguration den Google HTTP/HTTPS Loadbalancer korrekt zu erstellen. Entgegen aller Beispiele und Dokumentationen gibt es ein A+ bei Qualys SSL Labs nur mit der Bereitstellung des Intermediate Zertifikats.
Benötigt werden zwei Dateien. Die erste Datei enthält das Zertifikat und das Intermediate Zertifikat in altbekannter Schreibweise (ohne Leer- und Freizeichen):
-----BEGIN CERTIFICATE-----
abc123
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
abc123
-----END CERTIFICATE-----
Die zweite den Private Key:
-----BEGIN PRIVATE KEY-----
abc123
-----END PRIVATE KEY-----
Nun werden beide Dateien jeweils für sich base64 enkodiert. Hier gibt es entsprechende Tools unter Linux, Mac, Windows, aber auch Online (denen muss man dann allerdings auch trauen wenn man seinen private Key dort umwandelt). Heraus kommt jeweils ein ASCII Haufen.
Diesen packt man nun in ein Kubernetes Secret Objekt.
apiVersion: v1
kind: Secret
data:
tls.crt: "AAABBBCCC"
tls.key: "BBBCCCDDD"
metadata:
name: tls
type: Opaque
Entsprechendes Objekt referenziert man in einem Ingress Objekt.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: Ingress-tls
spec:
tls:
- secretName: tls
backend:
serviceName: webserver
servicePort: 80
Ergebnis ist ein Google HTTP(S) Loadbalancer der HTTPS terminiert.