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
- Die Befehlsgruppe
Vorbereitung
Die folgenden Google Kubernetes Engine-Features werden in Cloud Run nicht unterstützt, einschließlich:
- Cluster- und Pod-Features wie Start-, Aktivitäts- und Bereitschaftsprüfungen und Service Discovery.
- Konfiguration
- ConfigMaps: Sie können Ihre ConfigMaps mit Secret Manager in Secrets umwandeln.
- NVIDIA-GPUs
Zugriffssteuerung:
Mit IAM in Cloud Run haben Sie die gleiche Kontrolle über den Zugriff auf Ihre Ressourcen. Ziehen Sie auch die Verwendung der Dienstidentität in Betracht.
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 aufinternal
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.
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.
Ä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
durchnamespace:
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: {} ...
- Sie müssen den Kubernetes-Namespace suchen und durch die ID Ihres Google Cloud-Projekts ersetzen. Ersetzen Sie beispielsweise
Stellen Sie die geänderte Datei
.yaml
mit dem Flag--platform managed
in Cloud Run bereit. Weitere Informationen zur BereitstellungSie können dasselbe Google Cloud-Projekt für Cloud Run verwenden.
gcloud run services replace FILENAME.yaml --platform managed --region REGION
Ersetzen Sie:
FILENAME
durch den Namen der exportierten Konfigurationsdatei, die Sie erstellt haben.REGION
durch einen unterstützten Cloud Run-Speicherort. Beispiel:us-central1
.
Konfigurieren Sie den Zugriff auf Ihren Cloud Run-Dienst:
Standardmäßig ist ein Cloud Run-Dienst nicht extern zugänglich. Wenn Sie Ihren Dienst im Internet freigeben und nicht authentifizierte Anfragen zulassen möchten, müssen Sie den öffentlichen (nicht authentifizierten) Zugriff zulassen.
Informationen zum Konfigurieren dieses Dienstes für rein internen Zugriff wie zwischen Ihren Cloud Run-Diensten finden Sie unter Dienst-zu-Dienst-Authentifizierung.
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.
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.