Auf dieser Seite wird gezeigt, wie Sie von Google verwaltete SSL-Zertifikate für sichere Ingress-Objekte in GKE verwenden können. Sie erfahren, wie Sie den automatischen Zertifikatsverwaltungsdienst von Google verwenden, um die HTTPS-Verschlüsselung für Ihre Anwendungen zu vereinfachen.
Diese Zertifikate sind DV-Zertifikate (Domain Validation), die von Google für Ihre Domainnamen bereitgestellt, verlängert und verwaltet werden. Diese Zertifikate veranschaulichen nicht Ihre individuelle oder organisatorische Identität.
Diese Seite richtet sich an Netzwerk- und Sicherheitsexperten, die die Netzwerksicherheit planen und implementieren sowie Sicherheitsrichtlinien entwickeln und verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir inGoogle Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Bevor Sie diese Seite lesen, sollten Sie über grundlegende Kenntnisse von GKE sowie über ein gutes Verständnis von Netzwerken und Netzwerksicherheit verfügen.
Informationen zum Erstellen von von Google verwalteten Zertifikaten mit Google Cloudfinden Sie unter Von Google verwaltete Zertifikate.
Ingress mit von Google verwaltetem Zertifikat erstellen
So konfigurieren Sie ein von Google verwaltetes SSL-Zertifikat und verknüpfen es mit einem Ingress:
- Erstellen Sie ein
ManagedCertificate-Objekt im selben Namespace wie dem des Ingress-Objekts. - Verknüpfen Sie das
ManagedCertificate-Objekt mit einem Ingress. Dazu fügen Sie dem Ingress die Annotationnetworking.gke.io/managed-certificateshinzu. Diese Annotation ist eine durch Kommas getrennte Liste vonManagedCertificate-Objekten.
Beschränkungen
Von Google verwaltete Zertifikate bieten nicht das gleiche Maß an Flexibilität wie die von Ihnen abgerufenen und verwalteten Zertifikate. Von Google verwaltete Zertifikate unterstützen bis zu 100 Domains ohne Platzhalter. Im Gegensatz zu selbstverwalteten Zertifikaten unterstützen von Google verwaltete Zertifikate keine Domains mit Platzhaltern.
Wenn Sie selbstverwaltete Zertifikate benötigen oder bereits SSL-Zertifikate haben, die Sie für das Ingress konfigurieren möchten, finden Sie entsprechende Informationen unter HTTPS (TLS) zwischen Client und Load-Balancer einrichten.
Die Anzahl und der Typ der von einem Ingress unterstützten Zertifikate richten sich nach den Limits der von Google verwalteten SSL-Zertifikate.
Aktualisierungen für von Google verwaltete Zertifikate werden nicht unterstützt. Weitere Informationen finden Sie unter Von Google verwaltetes Zertifikat manuell aktualisieren.
Wenn das Zertifikat direkt mit der Zertifizierungsstelle widerrufen wird, rotiert Google das Zertifikat nicht automatisch. Sie müssen das ManagedCertificate löschen und ein neues erstellen.
Vorbereitung
Sie müssen Inhaber des Domainnamens sein. Der Domainname darf maximal 63 Zeichen haben. Sie können einen beliebigen Domainnamenregistrator verwenden, um einen Domainnamen zu erhalten.
Wenn Sie einen GKE Standard-Cluster verwenden, muss das Add-on
HttpLoadBalancingaktiviert sein.Ihr Ingress-Manifest muss die Annotation
kubernetes.io/ingress.class: "gce"enthalten. Das FeldingressClassNamewird nicht unterstützt.Sie müssen Ressourcen vom Typ
IngressundManagedCertificateim selben Projekt und im selben Namespace anwenden.Erstellen Sie eine reservierte (statische) externe IP-Adresse. Wenn Sie eine statische IP-Adresse reservieren, bleibt diese auch nach dem Löschen des Ingress-Objekts erhalten. Wenn Sie keine IP-Adresse reservieren, kann sich die verwendete Adresse ändern, sodass Sie die DNS-Einträge Ihrer Domain neu konfigurieren müssen. Verwenden Sie die Google Cloud CLI oder die Google Cloud Console, um eine reservierte IP-Adresse zu erstellen.
gcloud
Führen Sie den folgenden Befehl aus, um eine reservierte IP-Adresse zu erstellen:
gcloud compute addresses create ADDRESS_NAME --globalErsetzen Sie
ADDRESS_NAMEdurch den Namen der reservierten IP-Adresse, die Sie erstellen.Führen Sie den folgenden Befehl aus, um die erstellte statische IP-Adresse zu finden:
gcloud compute addresses describe ADDRESS_NAME --globalDie entsprechende Ausgabe sieht etwa so aus:
address: 203.0.113.32 ...Console
Führen Sie die folgenden Schritte aus, um eine reservierte IP-Adresse zu erstellen:
Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
Geben Sie einen Namen für die IP-Adresse an (z. B.
example-ip-address).Geben Sie an, ob Sie eine IPv4- oder IPv6-Adresse möchten.
Wählen Sie für Typ die Option Global aus.
Klicken Sie auf Reservieren. Die IP-Adresse wird in der Spalte Externe Adresse aufgeführt.
Config Connector
Hinweis: Für diesen Schritt ist Config Connector erforderlich. Folgen Sie der Installationsanleitung, um Config Connector in Ihrem Cluster zu installieren.
Laden Sie dieses Manifest alscompute-address.yamlauf Ihren Computer herunter und führen Sie folgenden Befehl aus:kubectl apply -f compute-address.yaml
Von Google verwaltetes Zertifikat einrichten
Erstellen Sie ein
ManagedCertificate-Objekt. Diese Ressource gibt die Domains für das SSL-Zertifikat an. Domains mit Platzhaltern werden nicht unterstützt.Das folgende Manifest beschreibt ein
ManagedCertificate-Objekt. Speichern Sie das Manifest alsmanaged-cert.yaml.apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: managed-cert spec: domains: - FQDN_1 - FQDN_2Dabei gilt:
FQDN_1,FQDN_2: Vollständig qualifizierte Domainnamen, die Ihnen gehören. Beispiel:example.comundwww.example.com
Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f managed-cert.yamlErstellen Sie einen Service vom Typ
NodePort, um Ihre Anwendung im Internet freizugeben.Das folgende Manifest beschreibt einen Service vom Typ
NodePort. Speichern Sie das Manifest alsmc-service.yaml.apiVersion: v1 kind: Service metadata: name: mc-service spec: selector: app: mc-service type: NodePort ports: - protocol: TCP port: 80 targetPort: 8080Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f mc-service.yamlErstellen Sie eine Ingress-Ressource.
Das folgende Manifest beschreibt ein Ingress, das das von Ihnen erstellte
ManagedCertificateverwendet. Speichern Sie das Manifest alsmanaged-cert-ingress.yaml.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: managed-cert-ingress annotations: kubernetes.io/ingress.global-static-ip-name: ADDRESS_NAME networking.gke.io/managed-certificates: managed-cert kubernetes.io/ingress.class: "gce" spec: defaultBackend: service: name: mc-service port: number: SERVICE_PORTDabei gilt:
ADDRESS_NAMEist der Name Ihrer reservierten IP-Adresse.SERVICE_PORTist der Wert vonports.portin Ihrem Dienstmanifest.
Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f managed-cert-ingress.yamlRufen Sie die IP-Adresse des Load-Balancers ab:
kubectl get ingressDie entsprechende Ausgabe sieht etwa so aus:
NAME HOSTS ADDRESS PORTS AGE managed-cert-ingress * 203.0.113.32 80 54sDie IP-Adresse des Load-Balancers wird in der Spalte
ADDRESSaufgeführt. Wenn Sie eine reservierte statische IP-Adresse verwenden, gilt diese für den Load-Balancer.Wenn die Adresse nicht aufgeführt wird, warten Sie, bis der Ingress fertig eingerichtet ist.
Konfigurieren Sie die DNS-Einträge für Ihre Domains so, dass sie auf die IP-Adresse des Load-Balancers verweisen. Wenn Sie Cloud DNS verwenden, finden Sie weitere Informationen unter Einträge verwalten.
Warten Sie, bis die Bereitstellung des von Google verwalteten Zertifikats abgeschlossen ist. Dies kann bis zu 60 Minuten dauern. Sie können den Status des Zertifikats mit dem folgenden Befehl prüfen:
kubectl describe managedcertificate managed-certDie entsprechende Ausgabe sieht etwa so aus:
Name: managed-cert Namespace: default Labels: <none> Annotations: <none> API Version: networking.gke.io/v1 Kind: ManagedCertificate (...) Spec: Domains: FQDN_1 FQDN_2 Status: CertificateStatus: Active (...)Der Wert des Felds
Status.CertificateStatusgibt an, dass das Zertifikat bereitgestellt wird. WennStatus.CertificateStatusnichtActiveist, wurde das Zertifikat noch nicht bereitgestellt.Sie können die Ereignisse für eine Ingress-Ressource mit dem folgenden Befehl prüfen:
kubectl describe ingress INGRESS_NAMEErsetzen Sie
INGRESS_NAMEdurch Ihren Ingress-Namen.Prüfen Sie, ob die SSL-Verbindung funktioniert. Rufen Sie hierfür Ihre Domains mit dem Präfix
https://auf. Ihr Browser gibt an, dass die Verbindung sicher ist und Sie die Zertifikatdetails aufrufen können.
Von selbstverwalteten Zertifikaten zu von Google verwalteten Zertifikaten migrieren
Wenn Sie einen Ingress von selbstverwalteten Zertifikaten zu von Google verwalteten SSL-Zertifikaten migrieren, löschen Sie die selbstverwalteten SSL-Zertifikate erst, wenn die von Google verwalteten SSL-Zertifikate aktiv sind. Die Aktivierung der von Google verwalteten SSL-Zertifikate erfolgt automatisch nach der Bereitstellung. Sobald die von Google verwalteten SSL-Zertifikate aktiv sind, können Sie Ihre selbstverwalteten SSL-Zertifikate löschen.
Führen Sie die folgenden Schritte aus, um von selbstverwalteten Zertifikaten zu von Google verwalteten Zertifikaten zu migrieren.
- Fügen Sie dem Ingress gemäß der Beschreibung unter Von Google verwaltetes Zertifikat einrichten ein neues von Google verwaltetes Zertifikat hinzu.
Warten Sie, bis sich der Status der von Google verwalteten Zertifikatressource in "Active" (Aktiv) ändert. Prüfen Sie den Status des Zertifikats mit dem folgenden Befehl:
kubectl describe managedcertificate managed-certWenn der Status
Activelautet, aktualisieren Sie den Ingress, um die Verweise auf das selbstverwaltete Zertifikat zu entfernen.
Von Google verwaltetes Zertifikat entfernen
Wenn Sie ein von Google verwaltetes Zertifikat aus dem Cluster entfernen möchten, löschen Sie das ManagedCertificate-Objekt und entfernen Sie die darauf verweisende Ingress-Annotation.
Löschen Sie das
ManagedCertificate-Objekt:kubectl delete -f managed-cert.yamlDie entsprechende Ausgabe sieht etwa so aus:
managedcertificate.networking.gke.io "managed-cert" deletedEntfernen Sie die Annotation aus dem Ingress:
kubectl annotate ingress managed-cert-ingress networking.gke.io/managed-certificates-Achten Sie auf das Minuszeichen
-am Ende des Befehls.Geben Sie die statische IP-Adresse frei, die Sie für den Load-Balancer reserviert hatten.
Sie können die Google Cloud CLI, die Google Cloud Console oder Config Connector verwenden, um eine reservierte IP-Adresse freizugeben.
gcloud
Verwenden Sie den folgenden Befehl, um die reservierte IP-Adresse freizugeben:
gcloud compute addresses delete ADDRESS_NAME --globalErsetzen Sie
ADDRESS_NAMEdurch den Namen der IP-Adresse.Console
Führen Sie die folgenden Schritte aus, um die reservierte IP-Adresse freizugeben:
Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
Aktivieren Sie das Kästchen neben der IP-Adresse, die Sie freigeben möchten.
Klicken Sie auf IP-Adresse freigeben.
Config Connector
Hinweis: Für diesen Schritt ist Config Connector erforderlich. Folgen Sie der Installationsanleitung, um Config Connector in Ihrem Cluster zu installieren.
Laden Sie dieses Manifest als
compute-address.yamlauf Ihren Computer herunter und führen Sie folgenden Befehl aus:kubectl delete -f compute-address.yaml
Nächste Schritte
- Weitere Informationen zu von Google verwalteten Zertifikaten
- Externen Application Load Balancer mit Ingress einrichten
- Mehrere SSL-Zertifikate mit externen Application Load Balancer mit Ingress verwenden
- Sicheren Ingress implementieren