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.yamlin einem Texteditor.Prüfen Sie den erweiterten Linux-Dienstmanager. Das Flag
v2kServiceManagerist standardmäßig auftruegesetzt. Wenn Migrate to Containers jedoch einen Systemdienst erkennt, der nicht vom Dienstmanager unterstützt wird, werden Sie benachrichtigt und das Flagv2kServiceManagerwird auffalsegesetzt. Wenn das Flagfalselautet, 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
truesetzen. 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
truezurü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.yamlfinden Sie unter services-config.yaml verwenden.Nachdem Sie die Migrationsartefakte generiert haben, öffnen Sie die Datei
deployment_spec.yamlin 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:LABELden 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 PORTDas Attribut
--set-env-varssetzt die UmgebungsvariableHC_V2K_SERVICE_MANAGERauftrue, um den optimierten Linux-Dienstmanager zu aktivieren.Das Attribut
--portgibt 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
v2kServiceManagerim Migrationsplan auftrueund speichern dann den Plan:v2kServiceManager: true
Öffnen Sie nach Abschluss der Migration die Datei
deployment_spec.yamlin 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 80Der 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.