Tutorial ini menunjukkan cara memasang Cloud Storage sebagai sistem file jaringan ke dalam layanan Cloud Run. Pendekatan yang sama dapat digunakan untuk tugas Cloud Run.
Tutorial ini menggunakan adaptor open source FUSE untuk berbagi data antara beberapa container dan layanan.
Layanan Anda harus menggunakan lingkungan eksekusi generasi kedua Cloud Run untuk memasang sistem file. Secara otomatis, tugas Cloud Run menggunakan lingkungan generasi kedua.
Lingkungan eksekusi generasi kedua memungkinkan sistem file jaringan untuk dipasang ke dalam direktori container. Memasang sistem file memungkinkan untuk berbagi resource antara sistem host dan instance serta mempertahankan resource setelah instance dalam pembersihan sampah memori.
Menggunakan sistem file jaringan dengan Cloud Run memerlukan pengetahuan Docker tingkat lanjut karena container Anda harus menjalankan beberapa proses, termasuk pemasangan sistem file dan proses aplikasi. Tutorial ini menjelaskan konsep yang diperlukan beserta contoh kerja; akan tetapi, saat Anda mengadaptasikan tutorial ini ke aplikasi Anda sendiri, pastikan Anda memahami implikasi dari perubahan apa pun yang mungkin Anda buat.
Ringkasan Desain
Diagram ini menunjukkan layanan Cloud Run yang terhubung ke bucket Cloud Storage melalui gcsfuse
FUSE FUSE. Layanan Cloud Run dan bucket Cloud Storage terletak dalam region yang sama
untuk menghapus biaya jaringan dan untuk mendapatkan performa terbaik.
Batasan
Tutorial ini tidak menjelaskan cara memilih sistem file, serta tidak membahas kesiapan produksi. Tinjau perbedaan Utama dari sistem file POSIX dan semantik Cloud Storage FUSE lainnya.
Tutorial ini tidak menunjukkan cara kerja dengan sistem file atau membahas pola akses file.
Tujuan
Buat bucket Cloud Storage untuk menyajikan fitur berbagi file.
Bangun Dockerfile dengan paket sistem dan proses init untuk mengelola proses pemasangan aplikasi.
Deploy ke Cloud Run dan verifikasi akses ke sistem file di layanan.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Enable the Cloud Run, Cloud Storage, Artifact Registry, and Cloud Build APIs.
- Instal dan lakukan inisialisasi gcloud CLI.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial dengan serangkaian peran minimum, silakan tanya administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Administrator Artifact Registry (
roles/artifactregistry.admin
) -
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Admin Cloud Run (
roles/run.admin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Konsumen Penggunaan Layanan (
roles/serviceusage.serviceUsageConsumer
) -
Admin Penyimpanan (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Menyiapkan default gcloud
Untuk mengonfigurasi gcloud dengan setelan default untuk layanan Cloud Run Anda:
Setel project default Anda:
gcloud config set project PROJECT_ID
Ganti PROJECT_ID dengan nama project yang Anda buat untuk tutorial ini.
Konfigurasi gcloud untuk region yang Anda pilih:
gcloud config set run/region REGION
Ganti REGION dengan region Cloud Run pilihan Anda yang didukung.
Lokasi Cloud Run
Cloud Run bersifat regional, berarti infrastruktur yang
menjalankan layanan Cloud Run Anda terletak di region tertentu dan
dikelola oleh Google agar tersedia secara redundan di
semua zona dalam region tersebut.
Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama
untuk memilih region tempat layanan Cloud Run dijalankan.
Pada umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan
lokasi dari produk Google Cloud
lain yang digunakan oleh layanan Cloud Run Anda.
Menggunakan produk Google Cloud secara bersamaan di beberapa lokasi dapat memengaruhi
latensi serta biaya layanan Anda.
Cloud Run tersedia di region berikut:
Tergantung harga Tingkat 1
asia-east1
(Taiwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)europe-north1
(Finlandia) CO2 Rendaheurope-southwest1
(Madrid)europe-west1
(Belgia) CO2 Rendaheurope-west4
(Belanda)europe-west8
(Milan)europe-west9
(Paris) CO2 Rendahme-west1
(Tel Aviv)us-central1
(Iowa) CO2 rendahus-east1
(South Carolina)us-east4
(North Virginia)us-east5
(Columbus)us-south1
(Dallas)us-west1
(Oregon) CO2 Rendah
Tergantung harga Tingkat 2
asia-east2
(Hong Kong)asia-northeast3
(Seoul, Korea Selatan)asia-southeast1
(Singapura)asia-southeast2
(Jakarta)asia-south1
(Mumbai, India)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warsawa, Polandia)europe-west10
(Berlin)europe-west12
(Turin)europe-west2
(London, Inggris Raya) CO2 Rendaheurope-west3
(Frankfurt, Jerman) CO2 Rendaheurope-west6
(Zurich, Swiss) CO2 Rendahme-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) CO2 Rendahnorthamerica-northeast2
(Toronto) CO2 Rendahsouthamerica-east1
(Sao Paulo, Brasil) CO2 Rendahsouthamerica-west1
(Santiago, Cile) CO2 Rendahus-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Jika sudah membuat layanan Cloud Run, Anda dapat melihat region di dasbor Cloud Run di Konsol Google Cloud.
Mengambil contoh kode
Untuk mengambil contoh kode agar dapat digunakan:
Clone repositori aplikasi contoh ke komputer lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh Cloud Run:
Node.js
cd nodejs-docs-samples/run/filesystem/
Python
cd python-docs-samples/run/filesystem/
Java
cd java-docs-samples/run/filesystem/
Memahami kode
Biasanya, Anda harus menjalankan satu proses atau aplikasi dalam sebuah container. Menjalankan satu proses per container akan mengurangi kerumitan dalam pengelolaan siklus proses dari beberapa proses: mengelola mulai ulang, menghentikan container jika ada proses yang gagal, dan tanggung jawab PID 1 seperti penerusan sinyal dan turunan zombie menuai. Namun, menggunakan sistem file jaringan di Cloud Run mengharuskan Anda menggunakan container multi-proses untuk menjalankan baik itu proses pemasangan sistem file dan aplikasi. Tutorial ini menunjukkan cara menghentikan container jika terjadi kegagalan proses dan mengelola tanggung jawab PID 1. Perintah pemasangan memiliki fungsionalitas bawaan untuk menangani percobaan ulang.
Anda dapat menggunakan pengelola proses untuk menjalankan dan mengelola beberapa proses sebagai titik masuk container. Tutorial ini menggunakan tini
, pengganti init yang membersihkan proses zombie dan melakukan penerusan sinyal. Secara khusus, proses init ini memungkinkan sinyal SIGTERM saat shutdown untuk disebarkan ke aplikasi. Sinyal SIGTERM dapat ditangkap untuk penghentian aplikasi yang lancar. Pelajari lebih lanjut tentang siklus proses container pada Cloud Run.
Menentukan konfigurasi lingkungan Anda dengan Dockerfile
Layanan Cloud Run ini memerlukan satu atau beberapa paket sistem tambahan yang tidak tersedia dalam default. Petunjuk RUN
ini akan menginstal tini
sesuai dengan proses init dan gcsfuse
, adaptor FUSE kami. Baca selengkapnya tentang cara kerja dengan paket sistem di layanan Cloud Run Anda dalamTutorial menggunakan paket sistem.
Rangkaian petunjuk berikutnya membuat direktori kerja, menyalin kode sumber, dan menginstal dependensi aplikasi.
ENTRYPOINT
menentukan biner proses-init yang ditambahkan ke petunjuk CMD
, dalam hal ini adalah skrip startup. Tindakan ini meluncurkan satu proses kecil dan kemudian melakukan proxy semua sinyal yang diterima ke sesi yang di-root pada proses turunan tersebut.
Petunjuk CMD
menetapkan perintah yang akan dieksekusi saat menjalankan image, skrip startup. Hal ini juga menyediakan argumen default untuk ENTRYPOINT
. Pahami cara CMD dan ENTRYPOINT berinteraksi.
Node.js
Python
Java
Mendefinisikan proses skrip startup Anda
Skrip startup membuat direktorimount point, tempat bucket Cloud Storage akan diakses. Berikutnya skrip akan melampirkan bucket Cloud Storage pada layanan mount point menggunakan gcsfuse
perintah, kemudian memulai layanan aplikasi. Perintah gcsfuse
memiliki fungsi percobaan ulang bawaan; sehingga pembuatan skrip bash lebih lanjut tidak diperlukan. Terakhir, perintah wait
digunakan untuk memproses beberapa proses latar belakang untuk keluar lalu keluar dari skrip.
Node.js
Python
Java
Bekerja dengan file
Node.js
Lihat index.js untuk berinteraksi dengan sistem file.
Python
Lihat main.py untuk berinteraksi dengan sistem file.
Java
Lihat FilesystemApplication.java untuk berinteraksi dengan sistem file.
Mengirimkan layanan
Buat bucket Cloud Storage atau gunakan kembali bucket yang ada:
gsutil mb -l REGION gs://BUCKET_NAME
Ganti BUCKET_NAME dengan nama bucket Cloud Storage, misalnya
my-fuse-bucket
. Nama bucket Cloud Storage harus unik secara global dan harus tunduk kepada persyaratan penamaan.Tetapkan
-l
untuk menentukan lokasi bucket Anda. Contoh,us-central1
. Untuk mendapatkan performa terbaik dan untuk menghindari biaya jaringan lintas-regional, pastikan bahwa bucket Cloud Storage terletak di region yang sama dengan layanan Cloud Run yang perlu mengaksesnya.Buat akun layanan untuk melayani sebagai identitas layanan:
gcloud iam service-accounts create fs-identity
Berikan akses akun layanan ke bucket Cloud Storage
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:fs-identity@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/storage.objectAdmin"
Untuk men-deploy dari sumber, hapus Dockerfile tambahan dan ganti nama Dockerfile tutorial:
rm Dockerfile cp gcsfuse.Dockerfile Dockerfile
Build dan deploy image container ke Cloud Run:
gcloud run deploy filesystem-app --source . \ --execution-environment gen2 \ --allow-unauthenticated \ --service-account fs-identity \ --update-env-vars BUCKET=BUCKET_NAME
Perintah ini membangun dan men-deploy layanan Cloud Run, serta menentukan lingkungan eksekusi generasi kedua Men-deploy dari sumber akan membangun image berdasarkan Dockerfile dan mengirim image ke repositori Artifact Registry:
cloud-run-source-deploy
.Pelajari lebih lanjut cara Men-deploy dari kode sumber.
Proses Debug
Jika deployment tidak berhasil, periksa Cloud logging untuk mengetahui detail lebih lanjut.
Jika Anda ingin semua log dari proses pemasangan, gunakan --foreground
flag
yang dikombinasikan dengan perintah pemasangan di skrip startup, gcsfuse_run.sh
:
gcsfuse --foreground --debug_gcs --debug_fuse GCSFUSE_BUCKET MNT_DIRECTORY &
- Tambahkan
--debug_http
untuk output debug permintaan/respons HTTP. - Tambahkan
--debug_fuse
untuk mengaktifkan output proses debug terkait fuse. - Tambahkan
--debug_gcs
untuk mencetak informasi permintaan dan pengaturan waktu GCS.
Temukan tips lebih lanjut di Panduan pemecahan masalah.
Melakukan Percobaan
Untuk mencoba layanan lengkap:
- Buka browser Anda ke URL yang disediakan pada langkah deployment di atas.
- Anda akan melihat file yang baru dibuat di bucket Cloud Storage Anda.
- Klik pada file untuk melihat konten
Jika Anda memilih untuk terus mengembangkan layanan ini, perlu diingat bahwa layanan tersebut telah membatasi akses Identity and Access Management (IAM) ke bagian lain dari Google Cloud dan akan memerlukan untuk diberikan peran IAM tambahan guna mengakses banyak layanan lainnya.
Diskusi biaya
Harga Cloud Storage sangat bergantung pada penyimpanan data, jumlah data yang disimpan oleh kelas penyimpanan dan lokasi bucket Anda, serta penggunaan jaringan, jumlah data yang dibaca dari atau dipindahkan antar bucket Anda Pelajari lebih lanjut tentang Biaya yang dikenakan oleh Cloud Storage FUSE.
Harga Cloud Run dihitung berdasarkan penggunaan resource, yang dibulatkan ke 100 md terdekat, untuk memori, CPU, jumlah permintaan, dan jaringan. Sehingga biaya akan bervariasi berdasarkan setelan layanan, jumlah permintaan dan waktu eksekusi.
Misalnya, 1 TiB data yang disimpan dalam bucket standard storage dihosting di Iowa (us-central1) seharga $0.02 per bulan per GiB, yaitu sekitar 1024 GiB * $0.02 = $20.48. Perkiraan ini tergantung pada layanan Cloud Run dan bucket Cloud Storage yang dihosting di region yang sama untuk menegasikan biaya traffic keluar.
Kunjungi setiap halaman harga untuk mendapatkan harga yang terbaru atau jelajahi perkiraan di Kalkulator Harga Google Cloud.
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa ada perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource tutorial
Hapus layanan Cloud Run yang Anda deploy dalam tutorial ini:
gcloud run services delete SERVICE-NAME
Dengan SERVICE-NAME adalah nama layanan pilihan Anda.
Anda juga dapat menghapus layanan Cloud Run dari Konsol Google Cloud.
Hapus konfigurasi region default gcloud yang Anda tambahkan selama penyiapan tutorial:
gcloud config unset run/region
Hapus konfigurasi project:
gcloud config unset project
Menghapus resource Google Cloud lain yang dibuat dalam tutorial ini:
- Hapus bucket Cloud Storage
- Hapus image container layanan yang bernama
gcr.io/PROJECT_ID/filesystem-app
dari Artifact Registry - Hapus akun layanan
fs-identity@PROJECT_ID.iam.gserviceaccount.com
Langkah berikutnya
- Pelajari FUSE Cloud Storage lebih lanjut.
- Pelajari lebih lanjut tentang Memilih proses init untuk container multi-proses.