Halaman ini menunjukkan cara memasang bucket Cloud Storage sebagai volume penyimpanan, menggunakan pemasangan volume Cloud Run.
Memasang bucket sebagai volume di Cloud Run akan menghadirkan bucket konten sebagai file dalam sistem file container. Setelah memasang bucket sebagai volume, Anda mengakses bucket seolah-olah itu adalah direktori di sistem file lokal, menggunakan operasi dan library sistem file bahasa pemrograman, bukan menggunakan Library Klien Google API.
Persyaratan memori
Pemasangan volume Cloud Storage menggunakan Cloud Run memori container untuk perintah berikut aktivitas:Untuk semua penyimpanan cache Cloud Storage FUSE, Cloud Run menggunakan setelan cache statistik dengan Time-to-live (TTL) 60 detik secara default. 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 di-stage 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 bukan sistem file yang sepenuhnya mematuhi POSIX. Untuk selengkapnya detailnya, lihat dokumentasi Cloud Storage FUSE.
Jalur yang tidak diizinkan
Cloud Run tidak mengizinkan Anda memasang volume di /dev
,
/proc
dan /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 Anda perlukan untuk mengkonfigurasi pemasangan volume Cloud Storage, minta administrator untuk memberi Anda peran IAM berikut:
-
Cloud Run Developer (
roles/run.developer
) di tugas Cloud Run -
Service Account User (
roles/iam.serviceAccountUser
) pada identitas layanan
Untuk mendapatkan izin yang dibutuhkan identitas layanan Anda perlu mengakses file dan bucket Cloud Storage. Minta administrator untuk memberikan peran IAM berikut ke 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 antarmuka tugas Cloud Run Anda 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 di seluruh container.
Jika Anda menggunakan beberapa penampung, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap kontainer.
Konsol
Pada konsol Google Cloud, buka halaman tugas Cloud Run:
Klik Deploy container dan pilih Job untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang sudah ada, pilih tugas, lalu klik Edit.
Klik Container, variabel dan secret, koneksi, keamanan untuk memperluas halaman properti tugas.
Klik tab Volume.
- Di bagian Volume:
- Klik Tambahkan volume.
- Di drop-down Volume type, pilih bucket Cloud Storage sebagai jenis volume.
- Di kolom Volume name, masukkan nama yang ingin digunakan 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 container yang akan dipasang volume, untuk mengedit penampung.
- Klik tab Volume Mounts.
- Klik Mount volume.
- Pilih volume Cloud Storage dari menu.
- Tentukan jalur tempat Anda ingin memasang volume.
- Klik Pasang Volume
- Di bagian Volume:
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:
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 penampung, tentukan volume terlebih dahulu, lalu menentukan 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
Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda mengupdate tugas yang ada, download konfigurasi YAML-nya:
gcloud run jobs describe JOB_NAME --format export > job.yaml
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
- 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. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
- IS_READ_ONLY dengan
True
untuk membuat volume menjadi hanya baca, atauFalse
untuk mengizinkan penulisan. - BUCKET_NAME dengan nama bucket Cloud Storage.
- IMAGE_URL dengan referensi ke image container
misalnya,
Buat atau perbarui tugas menggunakan perintah berikut:
gcloud run jobs replace job.yaml
Membaca dan menulis ke volume
Jika menggunakan fitur pemasangan volume Cloud Run, Anda akan mengakses volume yang dipasang menggunakan library yang sama dalam bahasa pemrograman yang Anda gunakan untuk membaca dan menulis file di sistem file lokal.
Hal ini sangat berguna jika Anda menggunakan penampung yang 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 sudah ada
pada volume, /mnt/my-volume
:
var fs = require('fs'); fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });
Python
Tulis ke file yang disimpan 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
Pada konsol Google Cloud, buka halaman tugas Cloud Run.
Klik tugas yang Anda minati untuk membuka halaman Detail pekerjaan.
Klik tab Volume.
Temukan setelan pemasangan volume di volume halaman detail.
gcloud
Gunakan perintah berikut:
gcloud run jobs describe JOB_NAME
Temukan setelan pemasangan volume di kolom yang ditampilkan konfigurasi Anda.
Mengoptimalkan performa bandwidth jaringan Cloud Storage FUSE
Untuk performa baca dan tulis yang lebih baik, hubungkan Cloud Run Anda lowongan ke jaringan VPC menggunakan VPC Langsung dan merutekan 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 pada contoh 2, Traffic internal ke Google API.
Waktu pengaktifan penampung dan pemasangan Cloud Storage FUSE
Menggunakan Cloud Storage FUSE dapat sedikit meningkatkan waktu cold start container Cloud Run karena pemasangan volume dimulai sebelum memulai container. Container Anda hanya akan dimulai jika Cloud Storage FUSE berhasil dipasang.
Perhatikan bahwa Cloud Storage FUSE berhasil memasang volume hanya setelah membuat ke Cloud Storage. Setiap penundaan jaringan dapat berdampak pada waktu startup container. Demikian pula, 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 di-mount, tugas Cloud Run akan gagal dimulai karena Cloud Run memiliki waktu tunggu total 30 detik untuk melakukan semua pemasangan.
Karakteristik performa Cloud Storage FUSE
Jika Anda menentukan dua volume, masing-masing menunjuk ke wadah yang berbeda, Proses Cloud Storage FUSE akan dimulai. Pemasangan dan proses terjadi secara paralel.
Operasi yang menggunakan Cloud Storage FUSE akan terpengaruh oleh bandwidth jaringan karena Cloud Storage FUSE berkomunikasi dengan Cloud Storage menggunakan Cloud Storage API. Beberapa operasi seperti membuat daftar konten bucket dapat menjadi lambat jika {i>bandwidth<i} jaringan rendah. Demikian pula, membaca file besar bisa memakan waktu sebagai ini juga dibatasi oleh {i>bandwidth<i} jaringan.
Saat Anda menulis ke bucket, Cloud Storage FUSE akan sepenuhnya melakukan staging objek dalam memori. Ini berarti bahwa menulis {i>file<i} berukuran besar dibatasi oleh jumlah memori yang tersedia ke instance container (batas memori container maksimum adalah 32 GiB).
Penulisan akan di-flush ke bucket hanya saat Anda menjalankan close
atau
fsync
: objek lengkap kemudian diupload/diupload ulang 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: