Halaman ini menunjukkan cara memasang berbagi file NFS sebagai volume di Cloud Run. Anda dapat menggunakan server NFS apa pun, termasuk server NFS Anda sendiri yang dihosting di lokasi, atau di VM Compute Engine. Jika Anda belum memiliki server NFS, sebaiknya gunakan Filestore, yang merupakan penawaran NFS yang dikelola sepenuhnya dari Google Cloud.
Memasang berbagi file NFS sebagai volume di Cloud Run akan menampilkan berbagi file sebagai file dalam sistem file container. Setelah memasang share file sebagai volume, Anda dapat mengaksesnya seolah-olah itu adalah direktori di sistem file lokal, menggunakan operasi dan library sistem file bahasa pemrograman Anda.
Jalur yang tidak diizinkan
Cloud Run tidak mengizinkan Anda memasang volume di /dev
,
/proc
, atau /sys
, atau di subdirektorinya.
Batasan
- Cloud Run tidak mendukung penguncian NFS. Volume NFS dipasang secara otomatis dalam mode tanpa penguncian.
Sebelum memulai
Untuk memasang server NFS sebagai volume di Cloud Run, pastikan Anda memiliki hal berikut:
- Jaringan VPC tempat server NFS atau instance Filestore Anda berjalan.
- Server NFS yang berjalan di jaringan VPC, dengan kumpulan pekerja Cloud Run Anda yang terhubung ke jaringan VPC tersebut. Jika Anda belum memiliki server NFS, buat server dengan membuat instance Filestore.
- Kumpulan pekerja Cloud Run Anda terhubung ke jaringan VPC tempat server NFS Anda berjalan. Untuk mendapatkan performa terbaik, gunakan VPC Langsung, bukan Konektor VPC.
- Jika Anda menggunakan project yang sudah ada, pastikan konfigurasi Firewall VPC Anda mengizinkan Cloud Run untuk menjangkau server NFS Anda. (Jika Anda memulai dari project baru, opsi ini benar secara default.) Jika Anda menggunakan Filestore sebagai server NFS, ikuti dokumentasi Filestore untuk membuat Aturan keluar firewall agar Cloud Run dapat menjangkau Filestore.
- Tetapkan izin pada berbagi file NFS jarak jauh Anda untuk mengizinkan akses bagi pengguna penampung. Secara default, Filestore memberikan akses baca ke semua pengguna, tetapi membatasi akses tulis ke pengguna root (
uid 0
). Jika penampung Anda memerlukan akses tulis dan tidak berjalan sebagai pengguna root, Anda harus menggunakan klien yang terhubung (berjalan sebagai root) untuk mengubah izin berbagi. Misalnya, Anda dapat menggunakan perintahchown
untuk mengubah kepemilikan file atau direktori ke ID pengguna tertentu yang digunakan untuk menjalankan container Anda.
Peran yang diperlukan
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika kumpulan worker Cloud Run Anda berinteraksi dengan APIGoogle Cloud , 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 NFS
Anda dapat memasang beberapa server NFS, instance Filestore, atau jenis volume lainnya di jalur pemasangan yang berbeda.
Jika Anda menggunakan beberapa container, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap container.
Konfigurasi pemasangan volume NFS menggunakan konsol Google Cloud , Google Cloud CLI, atau Terraform.
Konsol
Di konsol Google Cloud , buka Cloud Run:
Pilih Worker pools dari menu, lalu klik Deploy container untuk mengonfigurasi worker pool baru. Jika Anda mengonfigurasi pool worker yang ada, klik pool worker, lalu klik Edit dan deploy revisi baru.
Jika Anda mengonfigurasi kumpulan pekerja baru, isi halaman kumpulan pekerja awal, lalu klik Container(s), Volume, Jaringan, Keamanan untuk memperluas halaman konfigurasi kumpulan pekerja.
Klik tab Volumes.
- Di bagian Volumes, klik Add volume.
- Di drop-down Volume type, pilih NFS.
- Di kolom Nama volume, masukkan nama yang ingin Anda gunakan untuk volume.
- Di kolom Server NFS, masukkan nama domain atau lokasi (dalam
bentuk
IP_ADDRESS
) berbagi file NFS. - Di kolom Path, masukkan jalur ke direktori server NFS yang ingin Anda pasang.
- Klik Selesai.
- Klik tab Container, temukan container yang ingin Anda pasang, dan luaskan detail container.
- Klik tab Volume Mounts.
- Klik Mount volume.
- Pilih volume NFS dari menu.
- Tentukan jalur tempat Anda ingin memasang volume.
- Klik Mount Volume.
- Klik Selesai.
- Di bagian Volumes, klik Add volume.
Klik Buat atau Deploy.
gcloud
Untuk menambahkan volume dan memasangnya:
gcloud beta run worker-pools update WORKER_POOL \ --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
Ganti kode berikut:
- WORKER_POOL: nama kumpulan pekerja Anda.
- VOLUME_NAME: nama yang ingin Anda berikan pada volume.
- IP_ADDRESS: lokasi berbagi file NFS.
- NFS_PATH: jalur ke berbagi file NFS yang dimulai dengan
garis miring—misalnya
/example-directory
. - MOUNT_PATH: jalur relatif tempat Anda memasang volume, misalnya,
/mnt/my-volume
.
Untuk memasang volume sebagai volume hanya baca:
--add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=true
Jika Anda menggunakan beberapa container, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap container:
gcloud beta run worker-pools update WORKER_POOL \ --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \ --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
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
vpc_access {
network_interfaces {
network = "default"
subnetwork = "default"
}
}
volumes {
name = "VOLUME_NAME"
nfs {
server = google_filestore_instance.default.networks[0].ip_addresses[0]
path = "NFS_PATH"
read_only = "IS_READ_ONLY"
}
}
}
}
resource "google_filestore_instance" "default" {
name = "cloudrun-worker-pool"
location = "REGION"
tier = "BASIC_HDD"
file_shares {
capacity_gb = 1024
name = "share1"
}
networks {
network = "default"
modes = ["MODE_IPV4"]
}
}
Ganti kode berikut:
- WORKER_POOL: nama pool pekerja.
- REGION: Google Cloud region—misalnya,
europe-west1
. - IMAGE_URL: referensi ke image container yang
berisi worker pool, seperti
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - VOLUME_NAME: nama 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
. - NFS_PATH: jalur ke berbagi file NFS.
- IS_READ_ONLY:
True
untuk membuat volume hanya baca, atauFalse
untuk mengizinkan penulisan.
Melihat konfigurasi variabel lingkungan untuk kumpulan pekerja
Di konsol Google Cloud , buka Cloud Run:
Klik Worker pools untuk menampilkan daftar worker pool yang di-deploy.
Klik kumpulan pekerja yang ingin Anda periksa untuk menampilkan panel detailnya.
Klik tab Containers untuk menampilkan konfigurasi container kumpulan pekerja.
Memecahkan masalah NFS
Jika Anda mengalami masalah, periksa hal berikut:
- Kumpulan pekerja Cloud Run Anda terhubung ke jaringan VPC tempat server NFS berada.
- Tidak ada aturan firewall yang mencegah Cloud Run menjangkau server NFS.
- Jika penampung Anda perlu menulis data, pastikan izin berbagi NFS dikonfigurasi untuk mengizinkan penulisan dari pengguna penampung Anda.
Waktu mulai container dan pemasangan volume NFS
Penggunaan pemasangan volume NFS dapat sedikit meningkatkan waktu cold start container Cloud Run karena pemasangan volume dimulai sebelum memulai container. Container Anda hanya akan dimulai jika NFS berhasil di-mount.
Perhatikan bahwa NFS berhasil memasang volume hanya setelah membuat koneksi ke server dan mengambil handle file. Jika Cloud Run gagal membuat koneksi ke server, kumpulan pekerja Cloud Run akan gagal dimulai.
Selain itu, penundaan jaringan apa pun dapat memengaruhi waktu startup container karena Cloud Run memiliki total waktu tunggu 30 detik untuk semua pemasangan. Jika NFS memerlukan waktu lebih dari 30 detik untuk dipasang, kumpulan pekerja Cloud Run akan gagal dimulai.
Karakteristik performa NFS
Jika Anda membuat lebih dari satu volume NFS, semua volume akan di-mount secara paralel.
Karena NFS adalah sistem file jaringan, NFS tunduk pada batas bandwidth dan akses ke sistem file dapat terpengaruh oleh bandwidth terbatas.
Saat Anda menulis ke volume NFS, penulisan disimpan dalam memori Cloud Run hingga data dihapus. Data akan dihapus dalam keadaan berikut:
- Aplikasi Anda menghapus data file secara eksplisit menggunakan sync(2), msync(2), atau fsync(3).
- Aplikasi Anda menutup file dengan close(2).
- Tekanan memori memaksa pemulihan resource memori sistem.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi Linux tentang NFS.
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 kumpulan pekerja satu-penampung, jalankan perintah berikut:
gcloud beta run worker-pools update WORKER_POOL \ --clear-volumes --clear-volume-mounts
Jika Anda memiliki beberapa container, ikuti konvensi CLI sidecar untuk menghapus volume dan pemasangan volume:
gcloud beta run worker-pools update WORKER_POOL \ --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 beta run worker-pools update WORKER_POOL \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH