Auf dieser Seite wird beschrieben, wie Sie Cloud Run for Anthos einrichten, um Ihr eigenes SSL/TLS-Zertifikat für Fälle zu verwenden, in denen Sie das Feature für verwaltete TLS-Zertifikate nicht verwenden möchten.
Das Istio-Ingress-Gateway unterstützt das TLS-Protokoll, das von Ihrem Zertifikat bereitgestellt wird, nachdem Sie Ihr Zertifikat in einem Kubernetes-Secret gespeichert und in der Istio-Ingress-Gateway-Spezifikation angegeben haben.
Hinweis
Für diese Anleitung wird davon ausgegangen, dass Sie bereits über eigene TLS-Zertifikate verfügen.
TLS-Zertifikat/privaten Schlüssel in einem Kubernetes-Secret speichern
So speichern Sie die Zertifikate in einem Secret:
Kopieren Sie die Zertifikate in Ihr aktuelles Verzeichnis.
Verwenden Sie den folgenden Befehl, um ein Secret zu erstellen, in dem die Zertifikate gespeichert werden, wobei
privkey.pem
Ihren privaten Zertifikatschlüssel undfullchain.pem
das öffentliche Zertifikat enthält:kubectl create --namespace gke-system secret tls SECRET_NAME \ --key privkey.pem \ --cert fullchain.pem
TLS-Zertifikat für Istio-Ingress-Gateway angeben
Ändern Sie die Istio-Ingress-Gateway-Spezifikation so, dass das Kubernetes-Secret mit Ihrem TLS-Zertifikat verwendet wird:
Öffnen Sie die gemeinsam genutzte Gatewayspezifikation zum Bearbeiten:
kubectl edit gateway gke-system-gateway --namespace knative-serving
Geben Sie das TLS-Zertifikat mit dem zuvor erstellten Secret an. Fügen Sie dazu der Gateway-Spezifikation den folgenden Abschnitt hinzu:
- hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Die Gateway-Spezifikation sollte in etwa so aussehen:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: # ... skipped ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Wenn Sie mehrere TLS-Zertifikate für zwei verschiedene Dienste in unterschiedlichen Namespaces hinzufügen, könnte Ihre Gateway-Spezifikation so aussehen:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: # ... skipped ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - port: number: 443 name: https-SERVICE1_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET1_NAME hosts: - SERVICE1_NAME.NAMESPACE1.example.com - port: number: 443 name: https-SERVICE2_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET2_NAME hosts: - SERVICE2_NAME.NAMESPACE2.example.com
Speichern Sie die Änderungen.
Anschließend können Sie mit dem HTTPS-Protokoll auf die von Ihnen bereitgestellten Dienste zugreifen.