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:

  1. Migrate to Containers Version 1.15.0 installieren

  2. Fügen Sie eine Migrationsquelle hinzu und erstellen Sie eine Migration wie bisher bei der vorhandenen Laufzeit.

  3. Migrationsplan nach Bedarf anpassen.

    1. 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
    2. Bearbeiten Sie den heruntergeladenen Migrationsplan my-migration.yaml in einem Texteditor.

    3. Prüfen Sie den erweiterten Linux-Dienstmanager. Das Flag v2kServiceManager ist standardmäßig auf true gesetzt. Wenn Migrate to Containers jedoch einen Systemdienst erkennt, der nicht vom Dienstmanager unterstützt wird, werden Sie benachrichtigt und das Flag v2kServiceManager wird auf false gesetzt. Wenn das Flag false 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
      
    4. Nehmen Sie gegebenenfalls weitere Anpassungen vor, die für die Migration erforderlich sind, wie unter Migrationsplan anpassen beschrieben.

    5. Wenn die Änderungen abgeschlossen sind, speichern Sie die Datei.

    6. Laden Sie den bearbeiteten Migrationsplan hoch:

      migctl migration update my-migration --main-config my-migration.yaml
  4. Erstellen und prüfen Sie die Migrationsartefakte, wie Sie es derzeit mit der vorhandenen Laufzeit tun.

  5. 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.

  6. 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.

  7. 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 Umgebungsvariable HC_V2K_SERVICE_MANAGER auf true, 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:

  1. In Schritt 3 der VM-Migration, bei der Sie den Migrationsplan prüfen, setzen Sie die Annotation v2kServiceManager im Migrationsplan auf true und speichern dann den Plan:

    v2kServiceManager: true
    
  2. Ö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
  3. 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
  4. 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