Knative Serving zu Cloud Run migrieren

Verwenden Sie diese Anleitung, um Ihre Arbeitslasten zu Cloud Run zu migrieren. Im Allgemeinen müssen Sie bei der Migration Ihrer Arbeitslasten alle Kubernetes-basierten Features portieren und dann alle vorhandenen Dienste in Cloud Run noch einmal bereitstellen.

Hauptvorteile der Migration zu Cloud Run:

  • Vollständig verwaltetes serverloses Produkt, das die Knative Serving API-Spezifikation implementiert und sich an den Containervertrag hält.

  • Die v1 Admin API von Cloud Run wurde entwickelt, um die Portabilität mit Knative Serving zu maximieren.

  • Die Nutzererfahrung in Cloud Run und Knative Serving ist ähnlich:

    • Die Befehlsgruppe gcloud run wird für beide Produkte verwendet.
    • Ähnliches Layout und Verhalten der Benutzeroberfläche in der Google Cloud Console

Vorbereitung

Die folgenden Google Kubernetes Engine-Features werden in Cloud Run nicht unterstützt, einschließlich:

Hinweise zur Migration

Sie müssen die folgenden Unterschiede zwischen den Produkten prüfen und verstehen, damit Sie alle Abhängigkeiten und Anforderungen portieren können.

Secrets

In Cloud Run können Sie Secrets als Umgebungsvariablen oder Volumes bereitstellen. Secrets mit vertraulichen Informationen sollten jedoch im Secret Manager gespeichert werden.

Wichtige Unterschiede zwischen Secrets in Secret Manager und Kubernetes-Secrets:

Funktion Secret Manager-Secrets Kubernetes-Secrets
Zulässige Zeichen in Namen [a-zA-Z0-9_-]{1,255} [a-z0-9-.]{1,253}
Versionsverwaltung Secrets werden versioniert Kein Support
Secret-Nutzlast Einzelner []byte Map: <string, string>

Erfahren Sie, wie Sie mit Secret Manager versionierte Secrets für die Secret-Schlüssel Ihrer Knative Serving-Dienste erstellen.

Netzwerk

Verwenden Sie die folgenden Informationen, um Ihre vorhandene Netzwerkkonfiguration zu Cloud Run zu portieren.

Dienstendpunkte
Die Kubernetes-Endpunkte Ihrer Knative Serving-Dienste werden in Cloud Run nicht unterstützt. Weitere Informationen zu den eindeutigen Endpunkten in Cloud Run.
Domainzuordnungen
Die Cloud Run DomainMapping API ist mit Knative Serving kompatibel. Cloud Run bietet jedoch Domainzuordnung in einer Teilmenge der verfügbaren Cloud Run-Standorte. Eine empfohlene Alternative besteht darin, den globalen HTTP(S)-Load-Balancer für Ihre benutzerdefinierten Domains zu verwenden.
VPC-Konnektivität
Cloud Run-Dienste befinden sich außerhalb Ihrer VPC. Für die Kommunikation mit Ressourcen innerhalb einer VPC müssen Sie den Connector für serverlosen VPC-Zugriff verwenden.
Steuerelemente für eingehenden Traffic
Wenn Ihr Knative Serving-Dienst für ein privates internes Netzwerk konfiguriert ist und einen internen Load Balancer (ILB) verwendet, können Sie Ihren Cloud Run-Dienst auf Ingress = Internal konfigurieren. Wenn Sie Ihre Dienste auf internal konfigurieren, wird der Zugriff innerhalb Ihrer VPC oder anderer Cloud Run-Dienste eingeschränkt. Dienst-zu-Dienst-Kommunikation

Dienst migrieren

Zum Migrieren eines Dienstes müssen Sie Ihren Knative Serving-Dienst exportieren, die exportierte YAML-Datei bearbeiten und dann den neu konfigurierten Dienst in Cloud Run bereitstellen.

  1. Exportieren Sie Ihren Knative Serving-Dienst mit dem folgenden Befehl in eine lokale YAML-Datei:

    gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yaml
    

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Knative Serving-Dienstes.
    • NAMESPACE durch den Namespace, in dem Ihr Dienst ausgeführt wird.
    • CLUSTER durch den Namen des Clusters, in dem Ihr Dienst ausgeführt wird.
    • FILENAME durch einen eindeutigen Dateinamen Ihrer Wahl.
  2. Ändern Sie die exportierte Datei FILENAME.yaml für Cloud Run:

    • Sie müssen den Kubernetes-Namespace suchen und durch die ID Ihres Google Cloud-Projekts ersetzen. Ersetzen Sie beispielsweise namespace:default durch namespace:my-unique-id.
    • Sie müssen alle Konfigurationen für alle nicht unterstützten Features aktualisieren.
    • Sie müssen eines der folgenden Attribute und ihre Werte löschen:

      • metadata.annotations.kubectl.kubernetes.io/last-applied-configuration
      • metadata.managedFields
      • spec.template.spec.containers.readinessProbes
      • spec.template.spec.enableServiceLinks

      Möglicherweise müssen Sie beispielsweise die folgende Konfiguration unter den Attributen spec: > template: > spec: > containers: entfernen:

      ...
       readinessProbe:
         successThreshold: 1
         tcpSocket: {}
      ...
      
  3. Stellen Sie die geänderte Datei .yaml mit dem Flag --platform managed in Cloud Run bereit. Weitere Informationen zur Bereitstellung

    Sie können dasselbe Google Cloud-Projekt für Cloud Run verwenden.

    gcloud run services replace FILENAME.yaml --platform managed --region REGION
    

    Ersetzen Sie:

  4. Konfigurieren Sie den Zugriff auf Ihren Cloud Run-Dienst:

  5. Sie können in der Google Cloud Console auf der Seite „Dienste” auf den angezeigten URL-Link klicken, um den eindeutigen und stabilen Endpunkt Ihres bereitgestellten Dienstes zu öffnen.

    Öffnen Sie Cloud Run.

Traffic zu Ihrem Dienst migrieren

Nachdem Sie Ihre neu bereitgestellten Dienste getestet haben und für die Migration des gesamten Produktionstraffics bereit sind, können Sie Ihre benutzerdefinierte Domain konfigurieren und Ihre DNS-Einträge mit Ihrem Registrator aktualisieren. Folgen Sie der Anleitung unter Benutzerdefinierte Domains zuordnen.