Eigene TSL-Zertifikate verwenden

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:

  1. Kopieren Sie die Zertifikate in Ihr aktuelles Verzeichnis.

  2. Verwenden Sie den folgenden Befehl, um ein Secret zu erstellen, in dem die Zertifikate gespeichert werden, wobei privkey.pem Ihren privaten Zertifikatschlüssel und fullchain.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:

  1. Öffnen Sie die gemeinsam genutzte Gatewayspezifikation zum Bearbeiten:

    kubectl edit gateway gke-system-gateway --namespace knative-serving
  2. 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
    
  3. Speichern Sie die Änderungen.

Anschließend können Sie mit dem HTTPS-Protokoll auf die von Ihnen bereitgestellten Dienste zugreifen.