Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
So konfigurieren Sie Knative Serving für die Verwendung Ihrer eigenen SSL/TLS-Zertifikate.
Alternativ können Sie das Feature für verwaltete TLS-Zertifikate verwenden, mit dem TLS-Zertifikate automatisch über Let's Encrypt erstellt und verlängert werden.
Wenn Sie Ihre eigenen Zertifikate verwenden möchten, speichern Sie Ihre TLS-Zertifikate in einem Kubernetes-Secret und konfigurieren Sie dann das Ingress-Gateway von Cloud Service Mesh für die Verwendung dieses Secrets.
Hinweise
In dieser Anleitung wird davon ausgegangen, dass Sie Ihre TLS-Zertifikate bereits erhalten haben.
Sie müssen jeden Ihrer Knative Serving-Dienste konfigurieren, die das Ingress-Gateway für die Bereitstellung von externem Traffic verwenden. Wenn diese nach außen gerichteten Dienste nicht für die Verwendung Ihrer TLS-Zertifikate konfiguriert sind, können die Dienste keine HTTPS-Verbindungen prüfen und daher niemals den Status ready erreichen.
TLS-Zertifikate in einem Kubernetes Secret speichern
So speichern Sie die Zertifikate in einem Secret:
Öffnen Sie ein Terminal und wechseln Sie zu dem Verzeichnis, in dem sich Ihre TLS-Zertifikate befinden.
Verwenden Sie den folgenden Befehl, um ein Secret zu erstellen, in dem Ihre Zertifikate gespeichert werden:
INGRESS_NAMESPACE durch den Namespace Ihres Ingress-Dienstes istio-ingressgateway. Geben Sie den Namespace istio-system an, wenn Sie Cloud Service Mesh mit der Standardkonfiguration installiert haben.
SECRET_NAME durch den Namen, den Sie für Ihr Kubernetes-Secret verwenden möchten.
PRIVATE_KEY.pem durch den Namen der Datei, die den privaten Schlüssel Ihres Zertifikats enthält.
FULL_CHAIN.pem durch den Namen der Datei, die Ihr öffentliches Zertifikat enthält.
Sie können jetzt das Ingress-Gateway so konfigurieren, dass es das Secret verwendet, das Sie gerade für Ihr TLS-Zertifikat erstellt haben.
Ingress-Gateway für die Verwendung Ihrer Zertifikate konfigurieren
Ändern Sie das Ingress-Gateway von Cloud Service Mesh so, dass es das Secret verwendet, das Sie für Ihre TLS-Zertifikate erstellt haben:
Öffnen Sie die YAML-Datei des Ingress-Gateways im Bearbeitungsmodus. Führen Sie dazu den folgenden Befehl aus:
Beispiel für die Standardkonfiguration des Ingress-Gateways:
apiVersion:networking.istio.io/v1beta1kind:Gatewaymetadata:...# other skipped configuration...spec:selector:istio:ingressgatewayservers:-hosts:-'*'port:name:httpnumber:80protocol:HTTP
Konfigurieren Sie das Ingress-Gateway für die Verwendung Ihres Secrets, indem Sie die Attribute hosts, port und tls an die vorhandene YAML-Konfiguration anhängen.
So konfigurieren Sie alle Dienste zur Verwendung desselben Secrets: Fügen Sie Ihrer YAML-Konfiguration Folgendes hinzu und geben Sie "*" als hosts-Attributwert an:
...# other skipped configuration...-hosts:-"*"port:name:httpsnumber:443protocol:HTTPStls:mode:SIMPLEcredentialName:SECRET_NAME
Ersetzen Sie SECRET_NAME durch den Namen des von Ihnen erstellten Secrets.
So konfigurieren Sie jeden Dienst einzeln: Hängen Sie Folgendes an Ihre YAML-Konfiguration an und geben Sie die Werte für die hosts-Attribute unter Verwendung des Namens und des Namespace des Dienstes an:
Geben Sie für jeden Dienst Werte für die Attribute hosts, port und tls an:
...# other skipped configuration...-hosts:-SERVICE_NAME.SERVICE_NAMESPACE.CUSTOM_DOMAINport:number:443name:https-SERVICE_NAMEprotocol:HTTPStls:mode:SIMPLEcredentialName:SECRET_NAME
Ersetzen Sie:
SERVICE_NAME durch den Namen des Knative Serving-Dienstes. Jeder Dienst, der das Ingress-Gateway für die Bereitstellung von externem Traffic verwendet, muss einzeln konfiguriert werden.
SERVICE_NAMESPACE durch den Namen des Namespace, in dem der Dienst ausgeführt wird.
CUSTOM_DOMAIN durch die benutzerdefinierte Domain, für die Sie den Dienst konfiguriert haben.
SECRET_NAME durch den Namen des Secrets, das der Dienst verwenden soll. Wenn Sie mehrere Secrets für verschiedene Sätze von TLS-Zertifikaten erstellt haben, können Sie angeben, welches Secret jeder Dienst verwenden soll.
Sie können jetzt mit dem HTTPS-Protokoll auf die von Ihnen bereitgestellten Knative Serving-Dienste zugreifen.
Beispiele
Konfigurieren Sie alle Dienste:
In diesem Beispiel wird gezeigt, wie Sie alle Dienste für die Verwendung des Secrets TLSsecret konfigurieren:
apiVersion:networking.istio.io/v1alpha3kind:Gatewaymetadata:...# other skipped configuration...spec:selector:istio:ingressgatewayservers:-hosts:-"*"port:name:httpnumber:80protocol:HTTP-hosts:-"*"port:name:httpsnumber:443protocol:HTTPStls:mode:SIMPLEcredentialName:TLSsecret
Konfigurieren Sie einzelne Dienste:
In diesem Beispiel wird gezeigt, wie Sie alle drei Dienste, die Internet-Traffic bereitstellen, einzeln konfigurieren:
apiVersion:networking.istio.io/v1alpha3kind:Gatewaymetadata:...# other skipped configuration...spec:selector:istio:ingressgatewayservers:-hosts:-"*"port:name:httpnumber:80protocol:HTTP-hosts:-prodservice.prodnamespace.my-custom-domain.com
port:number:443name:https-prodserviceprotocol:HTTPStls:mode:SIMPLEcredentialName:TLSsecret-hosts:-experiment.namespace.my-custom-domain.com
port:number:443name:https-experimentprotocol:HTTPStls:mode:SIMPLEcredentialName:TLSsecret-hosts:-fallbackservice.anothernamespace.my-custom-domain.com
port:number:443name:https-fallbackserviceprotocol:HTTPStls:mode:SIMPLEcredentialName:anotherTLSsecret
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-31 (UTC)."],[],[],null,["# Using your own TLS certificates\n\nLearn how to configure Knative serving to use your own SSL/TLS certificates.\n\nAlternatively, you can use the\n[managed TLS certificates](/kubernetes-engine/enterprise/knative-serving/docs/managed-tls) feature, which\nautomatically creates and renews TLS certificates through\n[Let's Encrypt](https://letsencrypt.org/)\n\nTo use your own certificates, you store your TLS certificates in a Kubernetes\nSecret and then configure the ingress gateway of Cloud Service Mesh to use that\nsecret.\n\nBefore you begin\n----------------\n\n- These instructions assume that you have already obtained your TLS certificates.\n- You must configure a custom domain. For details, see [Mapping custom domains](/kubernetes-engine/enterprise/knative-serving/docs/mapping-custom-domains).\n- You are required to configure each of your Knative serving services that use the [ingress gateway](/kubernetes-engine/enterprise/knative-serving/docs/architecture-overview#components_in_the_default_installation) to serve external traffic. If these external facing services are not configured to use your TLS certificates, the services will not be able to verify an HTTPS connection and therefore, never achieve the `ready` state.\n\nStoring TLS certificates in a Kubernetes Secret\n-----------------------------------------------\n\nTo store the certificates into a Secret:\n\n1. Open a terminal and navigate to the directory where your TLS certificates\n are located.\n\n2. Use the following command to create a secret that stores your certificates:\n\n ```bash\n kubectl create --namespace INGRESS_NAMESPACE secret tls SECRET_NAME \\\n --key PRIVATE_KEY.pem \\\n --cert FULL_CHAIN.pem\n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eINGRESS_NAMESPACE\u003c/var\u003e with the namespace of your ingress service, `istio-ingressgateway`. Specify the `istio-system` namespace if you installed Cloud Service Mesh using the default configuration.\n - \u003cvar translate=\"no\"\u003eSECRET_NAME\u003c/var\u003e with the name that you want use for your Kubernetes Secret.\n - \u003cvar translate=\"no\"\u003ePRIVATE_KEY.pem\u003c/var\u003e with the name of the file that holds your certificate private key.\n - \u003cvar translate=\"no\"\u003eFULL_CHAIN.pem\u003c/var\u003e with the name of the file that holds your public certificate.\n\nYou can now configure the ingress gateway to use the secret you just created\nfor your TLS certificate.\n\nConfiguring the ingress gateway to use your certificates\n--------------------------------------------------------\n\nModify the ingress gateway of Cloud Service Mesh to use the secret that you created\nfor your TLS certificates:\n\n1. Open the ingress gateway YAML in edit mode by running the following command:\n\n ```bash\n kubectl edit gateway knative-ingress-gateway --namespace knative-serving\n ```\n\n Example of the default ingress gateway configuration: \n\n apiVersion: networking.istio.io/v1beta1\n kind: Gateway\n metadata:\n ...\n # other skipped configuration\n ...\n spec:\n selector:\n istio: ingressgateway\n servers:\n - hosts:\n - '*'\n port:\n name: http\n number: 80\n protocol: HTTP\n\n2. Configure the ingress gateway to use your secret by appending the `hosts`,\n `port`, and `tls` attributes to the existing YAML.\n\n - **To configure all services to use the same secret** : Append the following\n to your YAML configuration and specify `\"*\"` as the `hosts` attribute\n value:\n\n ...\n # other skipped configuration\n ...\n - hosts:\n - \"*\"\n port:\n name: https\n number: 443\n protocol: HTTPS\n tls:\n mode: SIMPLE\n credentialName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSECRET_NAME\u003c/span\u003e\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003eSECRET_NAME\u003c/var\u003e with the name of the secret\n that you created.\n\n [See example](#example_all).\n - **To individually configure each of your services** : Append the following\n to your YAML configuration and specify the values for the `hosts`\n attributes using the service's name and namespace:\n\n For each service, you specify values for the `hosts`, `port`, and `tls`\n attributes: \n\n ...\n # other skipped configuration\n ...\n - hosts:\n - \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSERVICE_NAME\u003c/span\u003e\u003c/var\u003e.\u003cvar translate=\"no\"\u003eSERVICE_NAMESPACE\u003c/var\u003e.\u003cvar translate=\"no\"\u003eCUSTOM_DOMAIN\u003c/var\u003e\n port:\n number: 443\n name: https-\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e\n protocol: HTTPS\n tls:\n mode: SIMPLE\n credentialName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eSECRET_NAME\u003c/span\u003e\u003c/var\u003e\n\n Replace:\n - \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e with the name of the Knative serving service. Every service that uses the ingress gateway to serve external traffic must be individually configured.\n - \u003cvar translate=\"no\"\u003eSERVICE_NAMESPACE\u003c/var\u003e with the name of the namespace in which the service is running.\n - \u003cvar translate=\"no\"\u003eCUSTOM_DOMAIN\u003c/var\u003e with the custom domain for which you configured the service to use.\n - \u003cvar translate=\"no\"\u003eSECRET_NAME\u003c/var\u003e with the name of the secret that you want the service to use. If you created multiple secrets for different sets of TLS certificates, you can specify which secret each service uses.\n\n [See example](#example_individual).\n3. Save your changes.\n\nYou can now use the HTTPS protocol to access your deployed Knative serving\nservices.\n\nExamples\n--------\n\nConfigure all services:\n\n: This example demonstrates how to configure all services to use the\n `TLSsecret` secret:\n\n apiVersion: networking.istio.io/v1alpha3\n kind: Gateway\n metadata:\n ...\n # other skipped configuration\n ...\n spec:\n selector:\n istio: ingressgateway\n servers:\n - hosts:\n - \"*\"\n port:\n name: http\n number: 80\n protocol: HTTP\n - hosts:\n - \"*\"\n port:\n name: https\n number: 443\n protocol: HTTPS\n tls:\n mode: SIMPLE\n credentialName: TLSsecret\n\nConfigure individual services:\n\n: This example demonstrates how to individually configure all three of the\n services that are serving internet traffic:\n\n apiVersion: networking.istio.io/v1alpha3\n kind: Gateway\n metadata:\n ...\n # other skipped configuration\n ...\n spec:\n selector:\n istio: ingressgateway\n servers:\n - hosts:\n - \"*\"\n port:\n name: http\n number: 80\n protocol: HTTP\n - hosts:\n - prodservice.prodnamespace.my-custom-domain.com\n port:\n number: 443\n name: https-prodservice\n protocol: HTTPS\n tls:\n mode: SIMPLE\n credentialName: TLSsecret\n - hosts:\n - experiment.namespace.my-custom-domain.com\n port:\n number: 443\n name: https-experiment\n protocol: HTTPS\n tls:\n mode: SIMPLE\n credentialName: TLSsecret\n - hosts:\n - fallbackservice.anothernamespace.my-custom-domain.com\n port:\n number: 443\n name: https-fallbackservice\n protocol: HTTPS\n tls:\n mode: SIMPLE\n credentialName: anotherTLSsecret"]]