Mengonfigurasi pemasangan volume Cloud Storage untuk tugas

Halaman ini menunjukkan cara memasang bucket Cloud Storage sebagai volume penyimpanan, menggunakan pemasangan volume Cloud Run.

Pemasangan bucket sebagai volume di Cloud Run akan menampilkan konten bucket sebagai file dalam sistem file container. Setelah memasang bucket sebagai volume, Anda akan mengakses bucket seolah-olah itu adalah direktori di sistem file lokal Anda, menggunakan operasi dan library sistem file bahasa pemrograman Anda, bukan menggunakan Library Klien Google API.

Persyaratan memori

Pemasangan volume Cloud Storage menggunakan memori container Cloud Run untuk aktivitas berikut:

  • Untuk semua penyimpanan cache Cloud Storage FUSE, Cloud Run secara default menggunakan setelan cache statistik dengan Time-to-live (TTL) 60 detik. Ukuran maksimum default cache statistik adalah 32 MB, ukuran maksimum default cache jenis adalah 4 MB.

  • Saat membaca, Cloud Storage FUSE juga menggunakan memori selain cache statistik dan jenis, misalnya array 1 MiB untuk setiap file yang dibaca dan untuk goroutine.

  • Saat menulis ke Cloud Storage, seluruh file akan ditahapkan di memori Cloud Run sebelum file ditulis ke Cloud Storage.

Batasan

Cloud Run menggunakan Cloud Storage FUSE untuk pemasangan volume ini. Jadi, ada beberapa hal yang perlu diingat saat memasang bucket Cloud Storage sebagai volume:

  • Cloud Storage FUSE tidak menyediakan kontrol serentak untuk beberapa penulisan (penguncian file) ke file yang sama. Saat beberapa operasi tulis mencoba mengganti file, operasi tulis terakhir akan menang dan semua operasi tulis sebelumnya akan hilang.
  • Cloud Storage FUSE bukan sistem file yang sepenuhnya mematuhi POSIX. Untuk mengetahui detail selengkapnya, lihat dokumentasi Cloud Storage FUSE.

Sebelum memulai

Anda memerlukan bucket Cloud Storage untuk dipasang sebagai volume.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna mengonfigurasi pemasangan volume Cloud Storage, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mendapatkan izin yang diperlukan identitas layanan Anda untuk mengakses file dan bucket Cloud Storage, minta administrator Anda untuk memberikan peran IAM berikut kepada identitas layanan:

Untuk mengetahui detail selengkapnya tentang peran dan izin Cloud Storage, lihat IAM untuk Cloud Storage.

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika tugas Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Jalur yang tidak diizinkan

Cloud Run tidak mengizinkan Anda memasang volume di /dev, /proc dan /sys, atau di subdirektorinya.

Memasang volume Cloud Storage

Anda dapat memasang beberapa bucket di jalur pemasangan yang berbeda. Anda juga dapat memasang volume ke lebih dari satu container menggunakan jalur pemasangan yang sama atau berbeda di seluruh container.

Jika Anda menggunakan beberapa container, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap container.

Konsol

  1. Pada konsol Google Cloud, buka halaman tugas Cloud Run:

    Buka Cloud Run

  2. Jika Anda sedang mengonfigurasi tugas baru, klik tabTugas dan isi halaman setelan tugas awal seperti yang diinginkan. Jika Anda sedang mengonfigurasi tugas yang sudah ada, klik tugas tersebut, lalu klikEdit.

  3. Klik Container, variabel dan secret, koneksi, keamanan untuk memperluas halaman properti tugas.

  4. Klik tab Volume.

    image

    • Di bagian Volume:
      • Klik Tambahkan volume.
      • Di drop-down Volume type, pilih bucket Cloud Storage sebagai jenis volume.
      • Di kolom Nama volume, masukkan nama yang ingin Anda gunakan untuk volume.
      • Cari dan pilih bucket yang ingin Anda gunakan untuk volume.
      • Opsional, centang kotak Hanya baca untuk membuat bucket menjadi hanya baca.
      • Klik Done.
    • Klik tab Container, lalu luaskan penampung tempat Anda memasang volume untuk mengedit penampung.
    • Klik tab Pasang Volume.
    • Klik Pasang volume.
      • Pilih volume Cloud Storage dari menu.
      • Tentukan jalur tempat Anda ingin memasang volume.
      • Klik Pasang Volume
  5. Klik Buat atau Perbarui.

gcloud

  • Untuk menambahkan volume dan memasangnya:

    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

    Ganti:

    • JOB dengan nama tugas Anda.
    • MOUNT_PATH dengan jalur relatif tempat Anda memasang volume, misalnya, /mnt/my-volume.
    • VOLUME_NAME dengan nama apa pun yang Anda inginkan untuk volume. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
    • BUCKET_NAME dengan nama bucket Cloud Storage Anda.
  • Untuk memasang volume sebagai volume hanya baca:

    --add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
  • Jika Anda menggunakan beberapa container, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap container:

    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

  1. Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda mengupdate tugas yang sudah ada, download konfigurasi YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Update MOUNT_PATH, VOLUME_NAME, BUCKET_NAME, dan IS_READ_ONLY sesuai kebutuhan.

    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

    Ganti

    • IMAGE_URL dengan referensi ke image container misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • MOUNT_PATH dengan jalur relatif tempat Anda memasang volume, misalnya, /mnt/my-volume.
    • VOLUME_NAME dengan nama apa pun yang Anda inginkan untuk volume. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
    • IS_READ_ONLY dengan True untuk membuat volume menjadi hanya baca, atau False untuk mengizinkan penulisan.
    • BUCKET_NAME dengan nama bucket Cloud Storage.
  3. Ganti layanan dengan konfigurasinya yang baru menggunakan perintah berikut:

    gcloud beta run jobs replace job.yaml

Membaca dan menulis pada volume

Jika menggunakan fitur pemasangan volume Cloud Run, Anda akan mengakses volume yang terpasang menggunakan library yang sama dalam bahasa pemrograman yang digunakan untuk membaca dan menulis file di sistem file lokal.

Hal ini sangat berguna jika Anda menggunakan penampung yang sudah ada yang mengharapkan data disimpan di sistem file lokal dan menggunakan operasi sistem file reguler untuk mengaksesnya.

Cuplikan berikut mengasumsikan pemasangan volume dengan mountPath yang disetel ke /mnt/my-volume.

Nodejs

Gunakan modul Sistem File untuk membuat file baru atau menambahkan file yang ada ke dalam volume, /mnt/my-volume:

var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });

Python

Menulis ke file yang dipertahankan dalam volume, /mnt/my-volume:

f = open("/mnt/my-volume/sample-logfile.txt", "a")

Go

Gunakan paket os untuk membuat file baru yang disimpan dalam volume, /mnt/my-volume

f, err := os.Create("/mnt/my-volume/sample-logfile.txt")

Java

Gunakan class Java.io.File untuk membuat file log di volume, /mnt/my-volume:

import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");

Lihat setelan pemasangan volume

Konsol

  1. Pada konsol Google Cloud, buka halaman tugas Cloud Run.

    Buka tugas Cloud Run

  2. Klik tugas yang Anda minati untuk membuka halaman Detail pekerjaan.

  3. Klik tab Volume.

  4. Temukan setelan pemasangan volume di halaman detail volume.

gcloud

  1. Gunakan perintah berikut:

    gcloud run jobs describe JOB_NAME
  2. Temukan setelan pemasangan volume di konfigurasi yang ditampilkan.