Verwaltete TLS-Zertifikate und HTTPS verwenden

Auf dieser Seite wird beschrieben, wie Sie das Feature für verwaltete TLS-Zertifikate deaktivieren und wieder aktivieren, das TLS-Zertifikate automatisch bereitstellt und verlängert, um HTTPS-Verbindungen auf Knative serving zu unterstützen.

Wenn Sie HTTPS verwenden möchten, beachten Sie:

  • Ihr Container sollte weiterhin $PORT überwachen.
  • Sie müssen angeben, wie TLS-Zertifikate bereitgestellt werden sollen:

    • Verwenden Sie verwaltete TLS-Zertifikate, bei denen TLS-Zertifikate bei Bedarf automatisch erstellt und automatisch verlängert werden. Auf dieser Seite wird dieses Feature beschrieben, das für die unterstützten Google Kubernetes Engine-Versionen verfügbar ist.
    • Verwenden Sie eigene Zertifikate, bei denen Sie für die Anforderung und Verlängerung von Zertifikaten verantwortlich sind. In einigen Situationen, die unter Einschränkungen beschrieben werden, müssen Sie Ihre eigenen Zertifikate verwenden.
  • Wenn Sie verwaltete Zertifikate verwenden, müssen Sie außerdem Ihre benutzerdefinierte Domain zuordnen, um das Feature für verwaltete Zertifikate nutzen zu können.

HTTPS und HTTP verwenden

Wenn Sie verwaltete Zertifikate verwenden, sind Cluster oder Knative serving-Dienste mit verwalteten Zertifikaten standardmäßig sowohl für HTTP- als auch für HTTPS-Traffic verfügbar. Wenn Sie nur HTTPS-Traffic verwenden möchten, können Sie HTTPS-Weiterleitungen aktivieren, um zu erzwingen, dass der gesamte Traffic nur HTTPS verwendet.

Fehlerbehebung

Wenn bei der Verwendung von verwalteten TLS-Zertifikaten Probleme auftreten, erhalten Sie weitere Informationen auf der Seite Fehlerbehebung für verwaltete TLS.

Beschränkungen

Die folgenden Überlegungen gelten für die Verwendung des Features für verwaltete TLS-Zertifikate:

  • Verwaltete TLS-Zertifikate sind für private Knative serving-Cluster in Google Cloud deaktiviert und werden nicht unterstützt.
  • Damit das Feature für verwaltete Zertifikate genutzt werden kann, muss der Dienst extern verfügbar sein: Er darf weder ein lokal im Cluster vorhandener Dienst sein, noch ein Dienst, der mithilfe von Virtual Private Cloud verfügbar gemacht wird.
  • Das Feature für verwaltete Zertifikate funktioniert nur mit Cloud Service Mesh. Das Istio-Add-on oder andere Istio-Konfigurationen werden nicht unterstützt.
  • Für dieses Feature wird LetsEncrypt verwendet. Hierfür gilt ein anfängliches Kontingentlimit von 50 TLS-Zertifikaten pro Woche und registrierter Domain. Wenn Sie eine Kontingenterhöhung wünschen, können Sie der LetsEncrypt-Dokumentation folgen.
  • Wenn Sie einen Knative serving-Cluster auf anderen Plattformen wie lokal oder AWS ausführen, ist diese Funktion deaktiviert. Damit Sie diese Funktion verwenden können, muss der Cluster auf Let's Encrypt zugreifen können und der Cloud Service Mesh-Ingress-Dienst über das öffentliche Internet zugänglich sein.

Hinweise

Bei den Anweisungen auf dieser Seite wird Folgendes vorausgesetzt:

  • Sie haben den Knative serving-Dienst im Cluster bereitgestellt.
  • Sie besitzen eine Domain. Wenn Sie keine Domain haben, können Sie diese von Google oder von einem anderen Domainanbieter beziehen.
  • Sie haben eine Domainzuordnung für Ihren Dienst erstellt und Ihren DNS-Eintrag entsprechend der Anleitung auf der Seite zur Domainzuordnung aktualisiert.
  • Verwenden Sie Cloud DNS oder einen DNS-Server Ihrer Wahl.

Verwaltete TLS-Zertifikate und HTTPS für einen gesamten Cluster deaktivieren

Deaktivieren Sie verwaltete TLS für einen Cluster, indem Sie die ConfigMap config-domainmapping aktualisieren:

kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'

Verwaltete TLS und HTTPS für eine bestimmte Domainzuordnung deaktivieren

Bei Bedarf können Sie verwaltete TLS für eine bestimmte Domainzuordnung deaktivieren:

  1. Fügen Sie die Annotation domains.cloudrun.com/disableAutoTLS: "true" hinzu:

    kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
  2. Prüfen Sie, ob HTTPS nicht funktioniert:

    curl https://DOMAIN

  3. Überprüfen Sie, ob HTTP für den Dienst verwendet wird:

    gcloud run domain-mappings describe --domain DOMAIN

    Ersetzen Sie DOMAIN durch Ihren eigenen Domainnamen. Beispiel: your-domain.com

    Überprüfen Sie das Feld url: in der Rückgabe des obigen Befehls: Die URL muss http enthalten, nicht https.

Verwaltete TLS-Zertifikate und HTTPS wieder aktivieren

So aktivieren Sie verwaltete TLS wieder:

  1. Falls noch nicht geschehen, erstellen Sie eine Domainzuordnung für Ihren Dienst und aktualisieren Sie Ihren DNS-Eintrag entsprechend der Anleitung auf der Seite „Domainzuordnung“.

  2. Aktivieren Sie verwaltete TLS-Zertifikate und HTTPS, indem Sie die ConfigMap config-domainmapping aktualisieren:

    kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
  3. Warten Sie nach erfolgreicher Ausführung des Befehls einige Minuten und prüfen Sie dann, ob das Zertifikatsfeature funktioniert:

    kubectl get kcert

    Wenn das Zertifikat bereit ist, sollte eine Meldung wie die folgende angezeigt werden:

    NAME              READY   REASON
    your-domain.com              True

    Es kann 20 Sekunden bis 2 Minuten dauern, bis Kcert bereit ist. Falls Probleme auftreten, lesen Sie die Anleitung zur Fehlerbehebung für dieses Feature.

Erfolg überprüfen

  1. Überprüfen Sie mit dem folgenden Befehl, ob der DNS-Eintrag wirksam ist:

    gcloud run domain-mappings describe --domain DOMAIN

    Ersetzen Sie DOMAIN durch Ihren eigenen Domainnamen. Beispiel: your-domain.com

  2. Überprüfen Sie das Feld url: in der Rückgabe des obigen Befehls: Die URL muss https enthalten, nicht http.

  3. Überprüfen Sie die IP-Adresse aus dem obigen Befehl, die unter resourceRecords:rrdata aufgeführt ist, und vergleichen Sie sie mit dem Wert, den Sie sehen, wenn Sie den Befehl host DOMAIN ausführen. Beide müssen identisch sein.

HTTPS-Weiterleitungen für Knative serving aktivieren

Wenn Sie das Feature für verwaltete TLS-Zertifikate verwenden, ist der Cluster aus Gründen der Abwärtskompatibilität standardmäßig sowohl für HTTP- als auch für HTTPS-Traffic verfügbar. Wenn Sie erzwingen möchten, dass der gesamte Traffic nur HTTPS verwendet, können Sie mit dem folgenden Befehl HTTPS-Weiterleitungen für eine vorhandene Domainzuordnung aktivieren:

kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled

Dabei ist DOMAIN der Name der Domainzuordnung.