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:
-
Developer Cloud Run (
roles/run.developer
) di layanan Cloud Run -
Service Account User (
roles/iam.serviceAccountUser
) pada identitas layanan
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:
- Storage Admin (
roles/storage.admin
)
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 layanan 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.
Pemasangan volume memerlukan lingkungan eksekusi generasi kedua. Cloud Run secara otomatis memilih lingkungan eksekusi generasi kedua untuk layanan Anda jika tidak ada lingkungan eksekusi yang dikonfigurasi secara eksplisit.
Konsol
Di konsol Google Cloud , buka Cloud Run:
Pilih Services dari menu, lalu klik Deploy container untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan tersebut, lalu klik Edit dan deploy revisi baru.
Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Container, Volume, Jaringan, Keamanan untuk meluaskan halaman konfigurasi layanan.
Klik tab 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 Cloud Storage yang akan digunakan untuk volume, atau, secara opsional, buat bucket baru.
- Jika Anda ingin membuat bucket hanya baca, centang kotak Hanya baca.
- Klik Selesai.
- Klik tab Container:
- Klik tab Volume Mounts.
- Klik Mount volume.
- Pilih volume penyimpanan dari menu.
- Tentukan jalur tempat Anda ingin memasang volume.
- Klik Done
Klik Buat atau Deploy.
gcloud
Untuk menambahkan volume dan memasangnya:
gcloud run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Ganti:
- SERVICE dengan nama layanan 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 Anda. 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 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
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Perbarui sesuai kebutuhan.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE 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
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 memiliki bentukLOCATION-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 Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
- IS_READ_ONLY dengan
True
untuk membuat volume hanya baca, atauFalse
untuk mengizinkan penulisan. - BUCKET_NAME dengan nama bucket Cloud Storage.
- IMAGE_URL dengan referensi ke image container
misalnya,
Buat atau perbarui layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Tambahkan kode berikut ke resourcegoogle_cloud_run_v2_service
di konfigurasi Terraform Anda: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
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:
- SERVICE dengan nama layanan Cloud Run Anda.
- REGION dengan region Google Cloud .
- 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 memiliki bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- VOLUME_NAME dengan nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
- MOUNT_PATH dengan jalur relatif tempat Anda memasang
volume, misalnya,
/mnt/my-volume
. - IS_READ_ONLY dengan
True
untuk membuat volume hanya baca, atauFalse
untuk mengizinkan penulisan. - BUCKET_NAME dengan 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 menggunakan opsi pemasangan untuk mengonfigurasi berbagai properti pemasangan volume. 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 services update SERVICE \ --execution-environment gen2 \ --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:
- SERVICE dengan nama layanan 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.
- OPTION_1 dengan opsi pemasangan pertama. Perhatikan bahwa Anda dapat menentukan opsi pemasangan sebanyak yang Anda butuhkan, dengan setiap opsi pemasangan dan pasangan nilai dipisahkan oleh titik koma.
- VALUE_1 dengan setelan yang Anda inginkan untuk opsi pemasangan pertama.
- OPTION_N dengan opsi pemasangan berikutnya.
- VALUE_N dengan setelan untuk opsi pemasangan berikutnya.
- MOUNT_PATH dengan jalur relatif tempat Anda memasang volume, misalnya,
/cache
.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Perbarui sesuai kebutuhan.
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 mountOptions: OPTION_1=VALUE_1,OPTION_N=VALUE_N
Ganti
- IMAGE_URL dengan referensi ke image container yang
berisi worker pool, seperti
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
- MOUNT_PATH dengan jalur relatif tempat Anda memasang volume, misalnya,
/cache
. - VOLUME_NAME dengan nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
- IS_READ_ONLY dengan
True
untuk membuat volume hanya baca, atauFalse
untuk mengizinkan penulisan. - BUCKET_NAME dengan nama bucket Cloud Storage.
- OPTION_1 dengan 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 dengan setelan yang Anda inginkan untuk opsi pemasangan pertama.
- OPTION_N dengan opsi pemasangan berikutnya.
- VALUE_N dengan setelan untuk opsi pemasangan berikutnya.
- IMAGE_URL dengan referensi ke image container yang
berisi worker pool, seperti
Buat atau perbarui layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Tambahkan kode berikut ke resourcegoogle_cloud_run_v2_service
di konfigurasi Terraform Anda: resource "google_cloud_run_v2_service" "default" {
provider = google-beta
name = "SERVICE"
location = "REGION"
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:
- SERVICE dengan nama layanan Cloud Run Anda.
- REGION dengan region Google Cloud .
- IMAGE_URL dengan referensi ke image container yang
berisi worker pool, seperti
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
- VOLUME_NAME dengan nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
- MOUNT_PATH dengan jalur relatif tempat Anda memasang
volume, misalnya,
/mnt/my-volume
. - IS_READ_ONLY dengan
True
untuk membuat volume hanya baca, atauFalse
untuk mengizinkan penulisan. - BUCKET_NAME dengan nama bucket Cloud Storage.
- OPTION_1 dengan 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 dengan setelan yang Anda inginkan untuk opsi pemasangan pertama.
- OPTION_N dengan opsi pemasangan kedua, jika berlaku.
- VALUE_N dengan setelan untuk opsi pemasangan kedua.
- OPTION_O dengan 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.Untuk mengizinkan 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 services update SERVICE \ --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:
- SERVICE dengan nama layanan 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
.
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 services update SERVICE \ --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:
- SERVICE dengan nama layanan 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 services update SERVICE \ --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:
- SERVICE dengan nama layanan 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
.
Pasang direktori tertentu di dalam bucket Cloud Storage Anda
Secara default, Cloud Run memasang seluruh bucket Cloud Storage, yang memberi layanan 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 layanan yang berbeda untuk memiliki akses ke direktori yang berbeda dalam bucket penyimpanan.
Command line berikut menentukan direktori yang akan dipasang:
gcloud beta run services update SERVICE \ --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:
- SERVICE dengan nama layanan 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
.
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 services update SERVICE \ --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:
- SERVICE dengan nama layanan 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
.
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
Konsol
Di konsol Google Cloud , buka halaman layanan Cloud Run:
Di daftar layanan, klik layanan yang Anda minati untuk membuka halaman Detail layanan.
Klik tab Volumes.
Temukan setelan Volume mount di halaman detail volume.
gcloud
Gunakan perintah berikut:
gcloud run services describe SERVICE_NAME
Temukan setelan Pemasangan volume dalam konfigurasi yang ditampilkan.
Mengoptimalkan performa bandwidth jaringan Cloud Storage FUSE
Untuk performa baca dan tulis yang lebih baik, hubungkan layanan Cloud Run Anda ke jaringan VPC menggunakan VPC Langsung dan arahkan semua traffic keluar melalui jaringan VPC Anda. Anda dapat melakukannya menggunakan salah satu opsi berikut:
- Aktifkan Akses Google Pribadi, pastikan untuk menyetel parameter
vpc-egress
keall-traffic
. - Gunakan salah satu opsi yang dijelaskan di halaman praktik terbaik jaringan, di bagian Traffic internal ke Google API.
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 layanan Cloud Run akan gagal dimulai. Selain itu, jika Cloud Storage FUSE memerlukan waktu lebih dari 30 detik untuk dipasang, layanan 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 penampung (batas memori penampung 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 jika file dengan konten yang ditambahkan berukuran 2 MiB atau lebih.
Untuk informasi selengkapnya, lihat referensi berikut:
Menghapus dan 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 layanan satu penampung, jalankan perintah berikut:
gcloud run services update SERVICE \ --clear-volumes --clear-volume-mounts
Jika Anda memiliki beberapa container, ikuti konvensi CLI sidecar untuk menghapus volume dan pemasangan volume:
gcloud run services update SERVICE \ --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 services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH