Container in Cloud Run bereitstellen
Wenn Sie den erweiterten Linux-Dienstmanager verwenden, der standardmäßig angeboten wird, um Ihre Containerarbeitslasten zu migrieren, können Sie den Container dann in Cloud Run bereitstellen, ohne zusätzliche Änderungen am Container vornehmen zu müssen.
So stellen Sie den Container in Cloud Run bereit:
Fügen Sie eine Migrationsquelle hinzu und erstellen Sie eine Migration wie bisher bei der vorhandenen Laufzeit.
Migrationsplan nach Bedarf anpassen.
Laden Sie den Migrationsplan herunter. Der Migrationsplan wird durch AppXGenerateArtifactsFlow dargestellt:
Beispiel: Bei einer Migration mit dem Namen „my-migration“:
migctl migration get my-migration
Bearbeiten Sie den heruntergeladenen Migrationsplan
my-migration.yaml
in einem Texteditor.Prüfen Sie den erweiterten Linux-Dienstmanager. Das Flag
v2kServiceManager
ist standardmäßig auftrue
gesetzt. Wenn Migrate to Containers jedoch einen Systemdienst erkennt, der nicht vom Dienstmanager unterstützt wird, werden Sie benachrichtigt und das Flagv2kServiceManager
wird auffalse
gesetzt. Wenn das Flagfalse
lautet, verwendet die Migration eine Legacy-Laufzeit, die Ihren Dienst unterstützt.Die folgende Benachrichtigung wird neben dem nicht unterstützten Dienst bereitgestellt:
Service is not supported by v2k service manager, therefore legacy runtime will be used instead of v2k service manager, and migrated workload would not fit running on Autopilot clusters of Cloudrun.
Wenn ein nicht unterstützter Dienst gefunden wird, können Sie das Flag auch manuell auf
true
setzen. In diesem Fall können Sie entweder den nicht unterstützten Dienst für das generierte Image beibehalten, wo er möglicherweise nicht ausgeführt wird, oder den Dienst durch Entfernen aus dem Migrationsplan ausschließen.Setzen Sie das Flag auf
true
zurück, um den neuen Dienstmanager zu aktivieren:v2kServiceManager: true
Nehmen Sie gegebenenfalls weitere Anpassungen vor, die für die Migration erforderlich sind, wie unter Migrationsplan anpassen beschrieben.
Wenn die Änderungen abgeschlossen sind, speichern Sie die Datei.
Laden Sie den bearbeiteten Migrationsplan hoch:
migctl migration update my-migration --main-config my-migration.yaml
Erstellen und prüfen Sie die Migrationsartefakte, wie Sie es derzeit mit der vorhandenen Laufzeit tun.
Bearbeiten Sie die neue Datei
services-config.yaml
, um die Initialisierungsattribute des Containers zu konfigurieren. Speichern Sie die Datei und erstellen Sie das Container-Image neu, um die Änderungen zu übernehmen.Weitere Informationen zum Bearbeiten der Datei
services.yaml
finden Sie unter services-config.yaml verwenden.Nachdem Sie die Migrationsartefakte generiert haben, öffnen Sie die Datei
deployment_spec.yaml
in einem Editor, um den Speicherort des Container-Images zu ermitteln. Die Ausgabe sollte in etwa so aussehen:spec: containers: - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
Dabei gibt
gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
den Speicherort des Container-Images an.Verwenden Sie den folgenden Befehl, um den Container in Cloud Run bereitzustellen:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT
Das Attribut
--set-env-vars
setzt die UmgebungsvariableHC_V2K_SERVICE_MANAGER
auftrue
, um den optimierten Linux-Dienstmanager zu aktivieren.Das Attribut
--port
gibt den Port an, über den Anfragen an den Container gesendet werden. Der Standardport ist 8080.
Beispiel: Kurzanleitungs-Container in Cloud Run bereitstellen
Mit der aktuellen Kurzanleitung können Sie einen Container mit einem einfachen Webserver migrieren und dann in Cloud Run bereitstellen. Die einzigen Änderungen, die Sie am Schnellstart vornehmen müssen, sind:
In Schritt 3 der VM-Migration, bei der Sie den Migrationsplan prüfen, setzen Sie die Annotation
v2kServiceManager
im Migrationsplan auftrue
und speichern dann den Plan:v2kServiceManager: true
Öffnen Sie nach Abschluss der Migration die Datei
deployment_spec.yaml
in einem Editor, um den Speicherort des Containers zu ermitteln. Die Ausgabe sollte in etwa so aussehen:spec: containers: - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
Stellen Sie im Abschnitt Migrierte Arbeitslast bereitstellen das Container-Image mit dem folgenden Befehl in Cloud Run bereit:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80
Der Webserver im migrierten Container wartet auf Anfragen an Port 80 und muss diesen Port bei der Bereitstellung des Containers angeben.
Die folgende Antwort sollte die URL des Cloud Run-Dienstes enthalten:
Allow unauthenticated invocations to [my-runtime] (y/N)? y Deploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION] Deploying new service... Done. ✓ Creating Revision… ✓ Routing traffic… Setting IAM Policy… Done. Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic. Service URL: https://my-runtime-s5ahdq-uc.a.run.app
Stellen Sie in Cloud Shell eine Anfrage an den Container, indem Sie die Dienst-URL verwenden und Ihre Anmeldedaten übergeben:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app
Jetzt sollten Sie die Seite „Hello World!“ sehen.
Nächste Schritte
- Weitere Informationen zur Verwendung von services-config.yaml.