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 secara lokal, 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 berbagi file sebagai volume, Anda akan mengaksesnya seolah-olah itu adalah direktori di sistem file lokal Anda, menggunakan operasi dan library sistem file bahasa pemrograman Anda.
Batasan
- Cloud Run tidak mendukung penguncian NFS. Volume NFS otomatis dipasang dalam mode tanpa kunci.
- Jalur yang tidak diizinkan: Cloud Run tidak mengizinkan Anda memasang volume di
/dev,/proc, atau/sys, atau di subdirektorinya.
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 instance Cloud Run Anda terhubung ke jaringan VPC tersebut. Jika Anda belum memiliki server NFS, buat server NFS dengan membuat instance Filestore.
- Instance Cloud Run Anda terlampir ke jaringan VPC tempat server NFS Anda berjalan. Untuk performa terbaik, gunakan VPC Langsung, bukan Konektor VPC.
- Jika Anda menggunakan project yang sudah ada, pastikan konfigurasi Firewall VPC Anda mengizinkan Cloud Run menjangkau server NFS Anda. (Jika Anda memulai dari project baru, hal ini akan berlaku secara default.) Jika Anda menggunakan Filestore sebagai server NFS, ikuti dokumentasi Filestore untuk membuat aturan traffic keluar Firewall agar Cloud Run dapat menjangkau Filestore.
- Tetapkan izin pada berbagi file NFS jarak jauh Anda untuk mengizinkan akses bagi pengguna container. Secara default, Filestore memberikan akses baca ke semua pengguna, tetapi membatasi akses tulis ke pengguna root (
uid 0). Jika container 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 perintahchownuntuk mengubah kepemilikan file atau direktori ke ID pengguna tertentu tempat container Anda berjalan.
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 instance 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 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 Google Cloud CLI atau YAML;
gcloud
Untuk menambahkan pemasangan volume:
gcloud beta run instances update INSTANCE \ --add-volume mount-path=MOUNT_PATH,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=READ_ONLY
Ganti kode berikut:
- INSTANCE: nama instance Anda.
- MOUNT_PATH: jalur relatif tempat Anda memasang volume, misalnya,
/mnt/my-volume. - IP_ADDRESS: lokasi berbagi file NFS.
- NFS_PATH: jalur ke berbagi file NFS yang dimulai dengan
garis miring—misalnya
/example-directory. - READ_ONLY:
trueuntuk membuat volume hanya baca, ataufalseuntuk mengizinkan penulisan.
Jika Anda menggunakan beberapa container, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap container:
gcloud beta run instances update INSTANCE \ --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
YAML
Jika Anda membuat instance baru, lewati langkah ini. Jika Anda memperbarui instance yang sudah ada, download konfigurasi YAML-nya:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Contoh berikut berisi konfigurasi YAML:
apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - name: CONTAINER_NAME image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME nfs: server: IP_ADDRESS path: NFS_PATH readOnly: IS_READ_ONLY
Ganti kode berikut:
- INSTANCE: nama instance Cloud Run Anda.
- CONTAINER_NAME: nama container.
IMAGE_URL: referensi ke image container, sepertius-docker.pkg.dev/cloudrun/container/hello: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. - IP_ADDRESS: alamat berbagi file NFS.
- NFS_PATH: jalur ke berbagi file NFS yang dimulai dengan
garis miring—misalnya,
/example-directory. - IS_READ_ONLY:
Trueuntuk membuat volume hanya baca, atauFalseuntuk mengizinkan penulisan.
Buat atau perbarui instance menggunakan perintah berikut:
gcloud beta run instances replace instance.yaml
Pemecahan masalah NFS
Jika Anda mengalami masalah, periksa hal berikut:
- Instance Cloud Run Anda terhubung ke jaringan VPC tempat server NFS berada.
- Tidak ada aturan firewall yang mencegah Cloud Run menjangkau server NFS.
- Jika container Anda perlu menulis data, pastikan izin berbagi NFS dikonfigurasi untuk mengizinkan penulisan dari pengguna container Anda.
Waktu startup container dan pemasangan volume NFS
Penggunaan pemasangan volume NFS dapat sedikit meningkatkan waktu cold start container Cloud Run Anda karena pemasangan volume dimulai sebelum memulai container. Container Anda hanya akan dimulai jika NFS berhasil dipasang.
Perhatikan bahwa NFS berhasil memasang volume hanya setelah membuat koneksi ke server dan mengambil handle file. Jika Cloud Run gagal membuat koneksi ke server, instance Cloud Run akan gagal dimulai.
Selain itu, penundaan jaringan apa pun dapat berdampak pada 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, instance Cloud Run akan gagal dimulai.
Karakteristik performa NFS
Jika Anda membuat lebih dari satu volume NFS, semua volume akan dipasang 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 akan disimpan dalam memori Cloud Run hingga data di-flush. Data di-flush dalam situasi berikut:
- Aplikasi Anda mem-flush data file secara eksplisit menggunakan sync(2), msync(2), atau fsync(3).
- Aplikasi Anda menutup file dengan close(2).
- Tekanan memori memaksa reklamasi resource memori sistem.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi Linux tentang NFS.
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 instance container tunggal Anda, jalankan perintah berikut:
gcloud beta run instances update INSTANCE \ --clear-volumes \ --clear-volume-mounts
Menghapus volume dan pemasangan volume satu per satu
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 instances update INSTANCE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH