Mengonfigurasi pemasangan volume Cloud Storage untuk layanan

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 akan mengakses bucket seolah-olah itu adalah direktori di file lokal Anda sistem file, menggunakan operasi dan library sistem file bahasa pemrograman Anda daripada 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 ditahapkan 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. Saat beberapa operasi tulis mencoba mengganti file, terakhir penulisan menang dan semua tulisan sebelumnya akan hilang.
  • Cloud Storage FUSE bukan sistem file yang sepenuhnya mematuhi POSIX. Untuk selengkapnya detailnya, lihat dokumentasi Cloud Storage FUSE.

Sebelum memulai

Anda memerlukan bucket Cloud Storage untuk dipasang sebagai volume.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengkonfigurasi pemasangan volume Cloud Storage, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mendapatkan izin yang dibutuhkan identitas layanan Anda perlu mengakses file dan bucket Cloud Storage, minta administrator Anda untuk memberikan peran IAM berikut ke 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 antarmuka layanan 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.

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 di seluruh container.

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

Pemasangan volume memerlukan lingkungan eksekusi generasi kedua. Cloud Run akan otomatis memilih lingkungan eksekusi generasi kedua untuk layanan Anda jika tidak ada lingkungan eksekusi yang dikonfigurasi secara eksplisit.

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik Deploy container lalu pilih Service untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang ada, klik service, lalu klik Edit and deploy new revision.

  3. Jika Anda mengonfigurasi layanan baru, isi layanan awal halaman setelan, lalu klik Container, volume, networking, security untuk meluaskan konfigurasi layanan Google Cloud.

  4. Klik tab Volume.

    gambar

      • 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 Cloud Storage yang akan digunakan untuk volume, atau, jika perlu, buat bucket baru.
      • Jika Anda ingin membuat bucket menjadi hanya-baca, pilih kotak centang Hanya baca.
      • Klik Done.
      Klik tab Container:
      • Klik tab Pasang Volume.
      • Klik Pasang volume.
      • Pilih volume penyimpanan dari menu.
      • Tentukan jalur tempat Anda ingin memasang volume.
      • Klik Done
  5. 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. 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 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

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. 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 bentuk 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. Buat atau update layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

Membaca dan menulis pada volume

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

Hal ini sangat berguna jika Anda menggunakan penampung yang sudah ada dan mengharapkan data untuk disimpan di sistem file lokal dan menggunakan sistem file biasa operasi 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 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

Untuk melihat setelan Pemasangan volume saat ini pada Layanan Cloud Run:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang Anda minati untuk membuka Detail layanan kami.

  3. Klik tab Revisi.

  4. Pada panel detail di sebelah kanan, setelan Pemasangan volume tercantum dalam tab Volume.

gcloud

  1. Gunakan perintah berikut:

    gcloud run services describe SERVICE
  2. Temukan setelan Pemasangan volume di kolom yang ditampilkan konfigurasi Anda.

Waktu startup container dan pemasangan FUSE Cloud Storage

Menggunakan Cloud Storage FUSE dapat sedikit meningkatkan container Cloud Run Anda waktu cold start karena pemasangan volume dimulai sebelum memulai penampung. 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. Oleh karena itu, jika upaya koneksi gagal, Cloud Storage FUSE akan gagal dipasang dan layanan Cloud Run akan gagal dimulai. Selain itu, jika FUSE Cloud Storage membutuhkan 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 FUSE Cloud Storage

Jika Anda menentukan dua volume, masing-masing menunjuk ke wadah yang berbeda, Proses Cloud Storage FUSE akan dimulai. Pasangan dan proses terjadi secara paralel.

Operasi yang menggunakan Cloud Storage FUSE dipengaruhi oleh bandwidth jaringan karena Cloud Storage FUSE berkomunikasi dengan Cloud Storage menggunakan di 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 menampilkan 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. Tujuan satu-satunya pengecualian untuk objek yang sepenuhnya diupload ulang ke bucket berada dalam kasus file dengan konten yang ditambahkan jika file berukuran 2 MiB atau lebih.

Untuk informasi selengkapnya, lihat referensi berikut:

Performa bandwidth jaringan dan Cloud Storage FUSE

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