Mengonfigurasi pemasangan volume Cloud Storage untuk tugas

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

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

Anda dapat memasang volume sebagai hanya baca dan Anda juga dapat menentukan opsi pemasangan untuk volume Anda.

Persyaratan memori

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

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

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

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

Batasan

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

  • Cloud Storage FUSE tidak menyediakan kontrol konkurensi untuk beberapa penulisan (penguncian file) ke file yang sama. Jika beberapa operasi tulis mencoba mengganti sebuah file, operasi tulis terakhir yang menang dan semua operasi tulis sebelumnya akan hilang.
  • Cloud Storage FUSE bukanlah sistem file yang sepenuhnya sesuai dengan POSIX. Untuk mengetahui detail selengkapnya, lihat dokumentasi Cloud Storage FUSE.

Jalur yang tidak diizinkan

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

Sebelum memulai

Anda memerlukan bucket Cloud Storage untuk dipasang sebagai volume.

Untuk performa baca/tulis yang optimal ke Cloud Storage, lihat Mengoptimalkan performa bandwidth jaringan Cloud Storage FUSE.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi pemasangan volume Cloud Storage, minta administrator Anda 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 Storage Object Viewer (roles/storage.objectViewer) kepada identitas layanan. Jika identitas layanan juga perlu melakukan operasi tulis di bucket, berikan peran Storage Object User (roles/storage.objectUser).

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.

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. Di konsol Google Cloud , buka halaman tugas Cloud Run:

    Buka Cloud Run

  2. Pilih Jobs dari menu, lalu klik Deploy container untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang ada, pilih tugas, lalu klik Edit.

  3. Klik Container(s), Volumes, Connections, Security untuk memperluas halaman properti tugas.

  4. Klik tab Volumes.

    gambar

    • Di bagian Volumes:
      • 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.
      • Jelajahi dan pilih bucket yang ingin Anda gunakan untuk volume.
      • Secara opsional, centang kotak Hanya baca untuk menjadikan bucket hanya baca.
      • Klik Selesai.
    • Klik tab Container, lalu luaskan container yang Anda pasangi volume untuk mengedit container.
    • Klik tab Volume Mounts.
    • Klik Mount volume.
      • Pilih volume Cloud Storage dari menu.
      • Tentukan jalur tempat Anda ingin memasang volume.
      • Klik Mount Volume
  5. Klik Buat atau Perbarui.

gcloud

  • Untuk menambahkan volume dan memasangnya:

    gcloud 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 kode berikut:

    • JOB: nama tugas Anda.
    • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /mnt/my-volume.
    • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
    • BUCKET_NAME: 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 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 memperbarui tugas yang ada, download konfigurasi YAML-nya:

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

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      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 kode berikut:

    • IMAGE_URL: referensi ke image container—misalnya, us-docker.pkg.dev/cloudrun/container/job:latest.
    • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /mnt/my-volume.
    • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
    • IS_READ_ONLY: True untuk membuat volume hanya baca, atau False untuk mengizinkan penulisan.
    • BUCKET_NAME: nama bucket Cloud Storage.
  3. Buat atau perbarui tugas menggunakan perintah berikut:

    gcloud run jobs replace job.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_job di konfigurasi Terraform Anda:

  resource "google_cloud_run_v2_job" "default" {
    name     = "JOB_NAME"
    location = "REGION"

    template {
      template {
        containers {
          image = "IMAGE_URL"
          volume_mounts {
            name = "VOLUME_NAME"
            mount_path = "MOUNT_PATH"
          }
        }

      volumes {
        name = "VOLUME_NAME"
        gcs {
          bucket = google_storage_bucket.default.name
          read_only = IS_READ_ONLY
        }
      }
    }
  }
}

  resource "google_storage_bucket" "default" {
    name     = "BUCKET_NAME"
    location = "REGION"
  }

Ganti kode berikut:

  • JOB_NAME: nama tugas Cloud Run Anda.
  • REGION: Google Cloud region.
  • IMAGE_URL: referensi ke image container—misalnya, us-docker.pkg.dev/cloudrun/container/job:latest.
  • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /mnt/my-volume.
  • IS_READ_ONLY: True untuk membuat volume hanya baca, atau False untuk mengizinkan penulisan.
  • BUCKET_NAME: nama bucket Cloud Storage.

Membaca dan menulis ke volume

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

Cara ini sangat berguna jika Anda menggunakan container 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 ditetapkan ke /mnt/my-volume.

Nodejs

Gunakan modul Sistem File untuk membuat file baru atau menambahkan ke file yang ada di 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 disimpan di volume, /mnt/my-volume:

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

Go

Gunakan paket os untuk membuat file baru yang disimpan di 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");

Konfigurasi volume menggunakan opsi pemasangan

Anda dapat secara opsional menggunakan opsi pemasangan untuk mengonfigurasi berbagai properti pemasangan volume Anda. Opsi pemasangan yang tersedia memungkinkan Anda mengonfigurasi setelan cache, memasang direktori tertentu, mengaktifkan logging debug, dan perilaku lainnya.

Menentukan opsi pemasangan

Anda dapat menentukan opsi pemasangan menggunakan Google Cloud CLI, YAML, atau Terraform. Opsi pemasangan dipisahkan dengan titik koma (;) di Google Cloud CLI dan dipisahkan dengan koma di YAML, seperti yang ditunjukkan pada tab berikut:

gcloud

Untuk menambahkan volume dan memasangnya dengan opsi pemasangan:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME, mount-options="OPTION_1=VALUE_1;OPTION_N=VALUE_N" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Ganti kode berikut:

  • JOB: nama tugas Anda.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /cache.
  • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • BUCKET_NAME: nama bucket Cloud Storage Anda.
  • OPTION_1: opsi pemasangan pertama. Perhatikan bahwa Anda dapat menentukan opsi pemasangan sebanyak yang Anda butuhkan, dengan setiap pasangan nilai dan opsi pemasangan dipisahkan oleh titik koma.
  • VALUE_1: setelan yang Anda inginkan untuk opsi pemasangan pertama.
  • OPTION_N: opsi pemasangan berikutnya.
  • VALUE_N: setelan untuk opsi pemasangan berikutnya.
  • BUCKET_NAME: nama bucket Cloud Storage Anda.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /cache.

YAML

  1. Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda memperbarui tugas yang ada, download konfigurasi YAML-nya:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Perbarui 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
                    mountOptions: OPTION_1=VALUE_1,OPTION_N=VALUE_N

    Ganti kode berikut:

    • IMAGE_URL: referensi ke image container yang berisi kumpulan pekerja, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /cache.
    • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
    • IS_READ_ONLY: True untuk membuat volume hanya baca, atau False untuk mengizinkan penulisan.
    • BUCKET_NAME: nama bucket Cloud Storage.
    • OPTION_1: opsi pemasangan pertama. Perhatikan bahwa Anda dapat menentukan opsi pemasangan sebanyak yang diperlukan, dengan setiap pasangan nilai dan opsi pemasangan dipisahkan dengan koma.
    • VALUE_1: setelan yang Anda inginkan untuk opsi pemasangan pertama.
    • OPTION_N: opsi pemasangan berikutnya.
    • VALUE_N: setelan untuk opsi pemasangan berikutnya.
  3. Buat atau perbarui tugas menggunakan perintah berikut:

    gcloud run jobs replace job.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_job di konfigurasi Terraform Anda:

resource "google_cloud_run_v2_job" "default" {
  provider = google-beta
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"
        volume_mounts {
          name = "VOLUME_NAME"
          mount_path = "MOUNT_PATH"
        }
      }

      volumes {
        name = "VOLUME_NAME"
        gcs {
          bucket = google_storage_bucket.default.name
          read_only = IS_READ_ONLY
          mount_options = ["OPTION_1=VALUE_1", "OPTION_N=VALUE_N", "OPTION_O"]
        }
      }
    }
  }
}

Ganti kode berikut:

  • JOB_NAME: nama layanan Cloud Run Anda.
  • REGION: Google Cloud region.
  • IMAGE_URL: referensi ke image container yang berisi kumpulan pekerja, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /mnt/my-volume.
  • IS_READ_ONLY: True untuk membuat volume hanya baca, atau False untuk mengizinkan penulisan.
  • BUCKET_NAME: nama bucket Cloud Storage.
  • OPTION_1: opsi pemasangan pertama. Perhatikan bahwa Anda dapat menentukan opsi pemasangan sebanyak yang Anda butuhkan, dengan setiap pasangan nilai dan opsi pemasangan dipisahkan dengan koma.
  • VALUE_1: setelan yang Anda inginkan untuk opsi pemasangan pertama.
  • OPTION_N: opsi pemasangan kedua, jika berlaku.
  • VALUE_N: setelan untuk opsi pemasangan kedua.
  • OPTION_O: opsi pemasangan ketiga, jika berlaku. Beberapa opsi pemasangan tidak memiliki nilai.

Opsi pemasangan yang umum digunakan

Opsi pemasangan umumnya digunakan untuk:

  • Mengonfigurasi setelan cache
  • Memasang hanya direktori tertentu dari bucket Cloud Storage
  • Konfigurasi kepemilikan volume (uid, gid)
  • Menonaktifkan direktori implisit
  • Tentukan tingkat logging debug.

Mengonfigurasi setelan caching

Anda dapat mengubah setelan caching untuk volume dengan menyetel opsi pemasangan terkait caching. Tabel berikut mencantumkan setelan, beserta nilai Cloud Run default :

Setelan cache Deskripsi Default
metadata-cache-ttl-secs Time to live (TTL) dalam hitungan detik untuk entri metadata yang di-cache. Misalnya, metadata-cache-ttl-secs=120s. Untuk menggunakan file terbaru, tentukan nilai 0. Untuk selalu menggunakan versi yang di-cache, tentukan nilai -1. Untuk mempelajari lebih lanjut, lihat Mengonfigurasi pembatalan cache. 60
stat-cache-max-size-mb Ukuran maksimum dalam mebibyte (MiB) yang dapat digunakan oleh cache statistik. Cache statistik selalu disimpan sepenuhnya dalam memori, sehingga memengaruhi konsumsi memori. Tentukan nilai 32 jika workload Anda melibatkan hingga 20.000 file. Jika workload Anda menggunakan lebih dari 20.000 file, tingkatkan ukuran dengan nilai 10 untuk setiap tambahan 6.000 file, dengan cache stat menggunakan rata-rata 1.500 MiB per file.

Agar cache stat menggunakan memori sebanyak yang diperlukan, tentukan nilai -1. Untuk menonaktifkan cache statistik, tentukan nilai 0.
32
type-cache-max-size-mb Ukuran maksimum dalam MiB per direktori yang dapat digunakan oleh cache jenis. Cache jenis selalu disimpan sepenuhnya dalam memori, sehingga memengaruhi penggunaan memori.

Tentukan nilai 4 jika jumlah maksimum file dalam satu direktori dari bucket yang Anda pasang berisi 20.000 file atau kurang. Jika jumlah maksimum file dalam satu direktori yang Anda pasang berisi lebih dari 20.000 file, tingkatkan nilai sebesar 1 untuk setiap 5.000 file, yang rata-rata sekitar 200 byte per file.

Agar cache jenis menggunakan memori sebanyak yang diperlukan, tentukan nilai -1.

Untuk menonaktifkan cache jenis, tentukan nilai 0.
4

Perintah Google Cloud CLI berikut menetapkan metadata-cache-ttl-secs ke 120 detik dan meningkatkan kapasitas cache stat dan jenis masing-masing menjadi 52 dan 7 MiB:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="metadata-cache-ttl-secs=120;stat-cache-max-size-mb=52;type-cache-max-size-mb=7" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Ganti kode berikut:

  • JOB: nama tugas Anda.
  • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • BUCKET_NAME: nama bucket Cloud Storage Anda.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /cache.

Mengaktifkan logging debug

Secara default, Cloud Storage FUSE mencatat peristiwa yang memiliki Info atau lebih tinggi. Anda dapat mengubah setelan logging menggunakan salah satu tingkat keparahan log berikut, yang tercantum dalam urutan dari terendah hingga tertinggi:

  • trace
  • debug
  • info
  • warning
  • error
  • Untuk menonaktifkan semua logging, tentukan nilai off.

Saat Anda menentukan tingkat keparahan, Cloud Storage FUSE akan menghasilkan log untuk peristiwa yang memiliki tingkat keparahan yang sama dengan atau lebih tinggi dari tingkat keparahan yang ditentukan. Misalnya, saat Anda menentukan tingkat warning, Cloud Storage FUSE akan menghasilkan log untuk peringatan dan error.

Menetapkan tingkat keparahan log ke tingkat yang lebih tinggi dari info dapat memengaruhi performa dan menghasilkan data logging dalam jumlah besar, jadi sebaiknya lakukan ini hanya jika diperlukan.

Command line berikut mengaktifkan logging debug:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="log-severity=debug" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Ganti kode berikut:

  • JOB dengan nama tugas Anda.
  • VOLUME_NAME dengan nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • BUCKET_NAME dengan nama bucket Cloud Storage Anda.
  • MOUNT_PATH dengan jalur relatif tempat Anda memasang volume—misalnya, /cache.

Menonaktifkan direktori implisit

Agar Cloud Storage tampak lebih seperti sistem file standar, Cloud Run mengaktifkan direktori implisit secara default saat memasang bucket Cloud Storage. Anda dapat menonaktifkan direktori implisit menggunakan opsi pemasangan implicit-dirs. Menonaktifkan direktori implisit dapat meningkatkan performa dan biaya, tetapi memiliki kompromi kompatibilitas.

Fitur direktori implisit memungkinkan Cloud Run mengenali file Cloud Storage yang sudah ada sebelumnya yang nama filenya meniru struktur direktori, seperti /mydir/myfile.txt. Jika Anda menonaktifkan direktori implisit, Cloud Run tidak akan dapat mencantumkan atau membaca file tersebut.

Menonaktifkan direktori implisit akan mengurangi jumlah permintaan ke Cloud Storage, yang dapat meningkatkan performa dan biaya aplikasi Anda. Baca dokumentasi File dan direktori Cloud Storage FUSE untuk mempelajari lebih lanjut.

Baris perintah berikut akan menonaktifkan direktori implisit:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Ganti kode berikut:

  • JOB: nama tugas Anda.
  • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • BUCKET_NAME: nama bucket Cloud Storage Anda.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /cache.

Pasang direktori tertentu di dalam bucket Cloud Storage Anda

Secara default, Cloud Run memasang seluruh bucket Cloud Storage, yang memberi tugas Cloud Run akses ke semua kontennya. Dalam beberapa kasus, Anda mungkin hanya ingin memasang direktori tertentu. Misalnya, jika bucket berisi banyak file, pemasangan direktori tertentu dapat meningkatkan performa.

Anda juga dapat menerapkan hal ini untuk tujuan isolasi jika Anda memerlukan berbagai tugas untuk memiliki akses ke direktori yang berbeda dalam bucket penyimpanan.

Command line berikut menentukan direktori yang akan dipasang:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="only-dir=images" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Ganti kode berikut:

  • JOB: nama tugas Anda.
  • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • BUCKET_NAME: nama bucket Cloud Storage Anda.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /cache.

Setel volume UID dan GID

Gunakan opsi pemasangan uid dan gid untuk mengubah ID Pengguna dan ID Grup untuk volume. Hal ini berguna jika Anda ingin menetapkan kepemilikan file ke pengguna atau grup tertentu yang cocok dengan identitas satu atau beberapa container yang sedang berjalan. Secara default, volume dimiliki oleh root.

Command line berikut menetapkan uid dan gid:

gcloud beta run jobs update JOB \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="uid=UID;gid=GID"  \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Ganti kode berikut:

  • JOB: nama tugas Anda.
  • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • BUCKET_NAME: nama bucket Cloud Storage Anda.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /cache.

Menetapkan opsi pemasangan lainnya

Berikut adalah daftar lengkap semua opsi pemasangan yang didukung oleh Cloud Run.

Direktori

  • implicit-dirs
  • only-dir
  • rename-dir-limit

Debug

  • debug_fuse_errors
  • debug_fuse
  • debug_gcs
  • debug-invariants
  • debug_mutex

Cache

  • stat-cache-capacity
  • stat-cache-ttl
  • type-cache-ttl
  • enable-nonexistent-type-cache

Izin

  • uid
  • gid
  • file-mode
  • dir-mode

Lainnya

  • billing-project
  • client-protocol
  • experimental-enable-json-read
  • experimental-opentelemetry-collector-address
  • http-client-timeout
  • limit-bytes-per-sec
  • limit-ops-per-sec
  • max-conns-per-host
  • max-idle-conns-per-host
  • max-retry-sleep
  • -o
  • retry-multiplier
  • sequential-read-size-mb
  • stackdriver-export-interval

Untuk dokumentasi lengkap opsi pemasangan yang didukung, lihat Opsi pemasangan command line Cloud Storage FUSE.

Melihat setelan pemasangan volume

Anda dapat melihat setelan pemasangan volume saat ini menggunakan konsol Google Cloud atau Google Cloud CLI.

Konsol

  1. Di 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 Volumes.

  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 dalam konfigurasi yang ditampilkan.

Mengoptimalkan performa bandwidth jaringan Cloud Storage FUSE

Untuk performa baca dan tulis yang lebih baik, hubungkan tugas Cloud Run Anda ke jaringan VPC menggunakan VPC Langsung dan rutekan semua traffic keluar melalui jaringan VPC Anda. Anda dapat melakukannya menggunakan salah satu opsi berikut:

Waktu mulai container dan pemasangan Cloud Storage FUSE

Menggunakan Cloud Storage FUSE dapat sedikit meningkatkan waktu mulai dingin container Cloud Run karena Cloud Run memulai pemasangan volume sebelum memulai container. Container Anda akan dimulai hanya jika Cloud Storage FUSE berhasil dipasang.

Perhatikan bahwa Cloud Storage FUSE berhasil memasang volume hanya setelah membuat koneksi ke Cloud Storage. Setiap penundaan jaringan dapat memengaruhi waktu startup penampung. Oleh karena itu, jika upaya koneksi gagal, Cloud Storage FUSE akan gagal dipasang dan tugas Cloud Run akan gagal dimulai. Selain itu, jika Cloud Storage FUSE memerlukan waktu lebih dari 30 detik untuk melakukan pemasangan, tugas Cloud Run akan gagal dimulai karena Cloud Run memiliki total waktu tunggu 30 detik untuk melakukan semua pemasangan.

Karakteristik performa Cloud Storage FUSE

Jika Anda menentukan dua volume, yang masing-masing mengarah ke bucket yang berbeda, dua proses Cloud Storage FUSE akan dimulai. Pemasangan dan proses terjadi secara paralel.

Operasi menggunakan Cloud Storage FUSE dipengaruhi oleh bandwidth jaringan karena Cloud Storage FUSE berkomunikasi dengan Cloud Storage menggunakan Cloud Storage API. Beberapa operasi seperti mencantumkan konten bucket dapat berjalan lambat jika bandwidth jaringan rendah. Demikian pula, membaca file besar dapat memerlukan waktu karena hal ini juga dibatasi oleh bandwidth jaringan.

Saat Anda menulis ke bucket, Cloud Storage FUSE akan sepenuhnya menyimpan objek dalam memori. Artinya, penulisan file besar dibatasi oleh jumlah memori yang tersedia untuk instance container (batas memori container maksimum adalah 32 GiB).

Penulisan akan di-flush ke bucket hanya saat Anda melakukan close atau fsync: objek lengkap kemudian diupload ke bucket. Satu-satunya pengecualian untuk objek yang diupload ulang sepenuhnya ke bucket adalah dalam kasus file dengan konten yang ditambahkan jika file berukuran 2 MiB atau lebih.

Untuk informasi selengkapnya, lihat referensi berikut:

Menghapus volume dan pemasangan volume

Anda dapat menghapus semua volume dan pemasangan atau menghapus volume dan pemasangan volume satu per satu.

Menghapus semua volume dan pemasangan volume

Untuk menghapus semua volume dan pemasangan volume dari tugas satu penampung, jalankan perintah berikut:

gcloud run jobs update JOB \
    --clear-volumes
    --clear-volume-mounts

Jika Anda memiliki beberapa container, ikuti konvensi CLI sidecar untuk menghapus volume dan pemasangan volume:

gcloud run jobs update JOB \
    --clear-volumes \
    --clear-volume-mounts \
    --container=container1 \
    --clear-volumes \
    -–clear-volume-mounts \
    --container=container2 \
    --clear-volumes \
    -–clear-volume-mounts

Menghapus volume dan pemasangan volume individual

Untuk menghapus volume, Anda juga harus menghapus semua pemasangan volume yang menggunakan volume tersebut.

Untuk menghapus volume atau pemasangan volume satu per satu, gunakan flag remove-volume dan remove-volume-mount:

gcloud run jobs update JOB \
    --remove-volume VOLUME_NAME
    --container=container1 \
    --remove-volume-mount MOUNT_PATH \
    --container=container2 \
    --remove-volume-mount MOUNT_PATH