Cloud Storage-Volume-Bereitstellungen für Dienste

Auf dieser Seite wird gezeigt, wie Sie mithilfe von Cloud Run Volume-Bereitstellungen einen Cloud Storage-Bucket als Speicher-Volume bereitstellen.

Wenn Sie den Bucket als Volume in Cloud Run bereitstellen, wird der Bucket-Inhalt im Containerdateisystem als Dateien dargestellt, sodass Standarddateisystemvorgänge und Bibliotheken auf das Dateisystem zugreifen können.

Beschränkungen

Cloud Run verwendet Cloud Storage FUSE für diese Volume-Bereitstellung. Folgendes sollten Sie bei der Bereitstellung eines Cloud Storage-Buckets als Volume bedenken:

  • Cloud Storage FUSE bietet keine Nebenläufigkeitserkennung für mehrere Schreibvorgänge (Dateisperre) in derselben Datei. Wenn mehrere Schreibvorgänge versuchen, eine Datei zu ersetzen, wird der letzte Schreibvorgang ausgeführt und alle vorherigen gehen verloren.
  • Cloud Storage FUSE ist kein vollständig POSIX-konformes Dateisystem. Weitere Informationen finden Sie in der Cloud Storage FUSE-Dokumentation.

Hinweise

Sie benötigen einen Cloud Storage-Bucket, der als Volume bereitgestellt wird.

IAM-Zugriffssteuerungen für Cloud Storage-Buckets

Die Dienstidentität Ihres Cloud Run-Dienstes wird bei einem IAM-geschützten Cloud Storage-Bucket authentifiziert.

Prüfen Sie, ob das konfigurierte Dienstkonto die erforderlichen Berechtigungen für den Dateizugriff hat.

Cloud Storage-Volume bereitstellen

Sie können mehrere Buckets unter verschiedenen Bereitstellungspfaden bereitstellen. Sie können ein Volume auch für mehrere Container bereitstellen, wobei Sie denselben oder unterschiedliche Bereitstellungspfade für die verschiedenen Containern nutzen können.

Wenn Sie mehrere Container verwenden, geben Sie zuerst die Volumes und dann die Volume-Bereitstellungen pro Container an.

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Volumes.

    Image

    • Unter Volumes:
      • Klicken Sie auf Volume hinzufügen.
      • Wählen Sie im Drop-down-Menü Volume-Typ den Cloud Storage-Bucket als Volume-Typ aus.
      • Geben Sie im Feld Names des Volume den Namen ein, den Sie für das Volume verwenden möchten.
      • Suchen Sie nach dem Cloud Storage-Bucket, der für das Volume verwendet werden soll, und wählen Sie ihn aus, oder erstellen Sie optional einen neuen Bucket.
      • Wenn der Bucket schreibgeschützt sein soll, klicken Sie das Kästchen "Schreibgeschützt" an.
      • Klicken Sie auf Fertig.
      • Klicken Sie auf den Container-Tab.
      • Klicken Sie auf den Tab Volume-Bereitstellungen.
      • Klicken Sie auf Volume bereitstellen.
      • Wählen Sie das Speicher-Volume aus dem Menü aus.
      • Geben Sie den Pfad an, unter dem Sie das Volume bereitstellen möchten.
      • Klicken Sie auf Fertig.
  5. Klicken Sie auf Erstellen oder Bereitstellen.

Befehlszeile

Hinweis: Wir zeigen den Befehl gcloud beta run services update an. Sie können aber auch den Befehl gcloud beta run deploy mit denselben Parametern verwenden, wie gezeigt.

  • So fügen Sie ein Volume hinzu und stellen es bereit:

    gcloud beta run services update SERVICE \
    --execution-environment gen2 \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

    Ersetzen Sie:

    • SERVICE durch den Namen des Dienstes.
    • MOUNT_PATH durch den relativen Pfad, unter dem Sie das Volume bereitstellen, z. B. /cache.
    • VOLUME_NAME durch einen beliebigen Namen für das Volume. Der Wert VOLUME_NAME wird verwendet, um das Volume der Volume-Bereitstellung zuzuordnen.
    • BUCKET_NAME durch den Namen Ihres Cloud Storage-Buckets.
  • So stellen Sie das Volume als schreibgeschütztes Volume bereit:

--add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
  • Wenn Sie mehrere Container verwenden, geben Sie zuerst Ihre Volumes und dann die Volume-Bereitstellungen für jeden Container an:

    gcloud beta run services update SERVICE \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
    --container CONTAINER_1 \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \
    --container CONTAINER_2 \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2

YAML

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Nehmen Sie die erforderlichen Änderungen vor.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/execution-environment: gen2
        spec:
          containers:
          - image: IMAGE_URL
            volumeMounts:
            - name: VOLUME_NAME
              mountPath: MOUNT_PATH
          volumes:
          - name: VOLUME_NAME
            csi:
              driver: gcsfuse.run.googleapis.com
              readOnly: IS_READ_ONLY
              volumeAttributes:
                bucketName: BUCKET_NAME

    Ersetzen Sie

    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • MOUNT_PATH durch den relativen Pfad, unter dem Sie das Volume bereitstellen, z. B. /cache.
    • VOLUME_NAME durch einen beliebigen Namen für das Volume. Der Wert VOLUME_NAME wird verwendet, um das Volume der Volume-Bereitstellung zuzuordnen.
    • IS_READ_ONLY durch True, um das Volume schreibgeschützt zu machen, oder durch False, um Schreibvorgänge zuzulassen.
    • BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Einstellungen für Volume-Bereitstellungen ansehen

So rufen Sie die aktuellen Einstellungen für Volume-Bereitstellungen für Ihren Cloud Run-Dienst auf:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Rechts im Detailbereich ist die Einstellung für Volume-Bereitstellungen auf dem Tab Volumes aufgeführt.

Befehlszeile

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration nach der Einstellung für Volume-Bereitstellungen.