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.
Befehlszeile
So fügen Sie ein Volume hinzu und stellen es bereit:
gcloud beta run jobs update JOB \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Ersetzen Sie:
JOB
durch den Namen des Jobs.- 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 jobs update JOB \ --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
Laden Sie die vorhandene Jobkonfiguration herunter und verwenden Sie den Befehl gcloud run jobs describe --format export
, um bereinigte Ergebnisse im YAML-Format zu erhalten. Ändern Sie dann die unten beschriebenen Felder und laden Sie die geänderte YAML-Datei mit dem Befehl gcloud run jobs replace
hoch.
Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.
So rufen Sie die Konfiguration auf und laden sie herunter:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Aktualisieren Sie MOUNT_PATH, VOLUME_NAME, BUCKET_NAME und IS_READ_ONLY nach Bedarf.
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: metadata: annotations: run.googleapis.com/launch-stage: BETA template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: template: spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME 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 FormLOCATION-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 durchFalse
, um Schreibvorgänge zuzulassen. - BUCKET_NAME durch den Namen des Cloud Storage-Buckets.
- IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:
gcloud beta run jobs replace job.yaml
Einstellungen für Volume-Bereitstellungen ansehen
Console
Wechseln Sie in der Google Cloud Console zur Seite "Cloud Run-Jobs":
Klicken Sie auf den gewünschten Job, um die Seite Jobdetails zu öffnen.
Klicken Sie auf den Tab Volumes.
Suchen Sie auf der Detailseite zu Volumes die Einstellung für Volume-Bereitstellungen.
Befehlszeile
Verwenden Sie den folgenden Befehl:
gcloud run jobs describe JOB_NAME
Suchen Sie in der zurückgegebenen Konfiguration nach der Einstellung für Volume-Bereitstellungen.