Tutorial ini menunjukkan cara memasang Filestore sebagai sistem file jaringan, ke layanan Cloud Run untuk berbagi data di antara beberapa container dan layanan. Tutorial ini menggunakan lingkungan eksekusi generasi kedua Cloud Run.
Lingkungan eksekusi generasi kedua memungkinkan sistem file jaringan untuk dipasang ke direktori dalam 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
Instance Filestore dihosting dalam jaringan Virtual Private Cloud (VPC). Resource dalam jaringan VPC menggunakan rentang alamat IP pribadi untuk dapat berkomunikasi dengan Google API dan layanan Google; oleh karena itu, klien harus berada di jaringan yang sama dengan instance Filestore untuk mengakses file yang tersimpan pada instance tersebut. Konektor Akses VPC Serverless diperlukan agar layanan Cloud Run terhubung ke jaringan VPC untuk berkomunikasi dengan Filestore. Pelajari lebih lanjut tentang Akses VPC Serverless.
Diagram ini menunjukkan layanan Cloud Run yang terhubung ke instance Filestore melalui konektor Akses VPC Serverless. Instance dan konektor Filestore berada dalam jaringan VPC yang sama, "default", dan di region/zona yang sama dengan layanan Cloud Run untuk performa terbaik.
Batasan
Tutorial ini tidak menjelaskan cara memilih sistem file atau persyaratan siap produksi. Pelajari tentang Filestore dan paket layanan yang tersedia lebih lanjut.
Tutorial ini tidak menunjukkan cara bekerja dengan sistem file atau membahas pola akses file.
Tujuan
Buat instance Filestore pada jaringan VPC default untuk berfungsi sebagai fitur berbagi file.
Buat konektor Akses VPC Serverless pada jaringan VPC default yang sama untuk terhubung ke layanan Cloud Run.
Bangun Dockerfile dengan paket sistem dan proses init untuk mengelola proses pemasangan dan 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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Run, Filestore, Serverless VPC Access, Artifact Registry, and Cloud Build .
- Instal dan lakukan inisialisasi gcloud CLI.
- Perbarui Google Cloud CLI:
gcloud components update
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial, minta administrator untuk memberikan Anda peran IAM berikut pada project Anda:
-
Administrator Artifact Registry (
roles/artifactregistry.admin
) -
Cloud Build Editor (
roles/cloudbuild.builds.editor
) -
Cloud Filestore Editor (
roles/file.editor
) -
Admin Cloud Run (
roles/run.admin
) -
Pengguna Jaringan Compute (
roles/compute.networkUser
) -
Serverless VPC Access Admin (
roles/vpcaccess.admin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) [Konsumen Penggunaan Layanan] -
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.
Konfigurasi gcloud untuk Filestore:
gcloud config set filestore/zone ZONE
Ganti ZONE dengan zona Filestore yang pilihan Anda yang didukung.
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 sampel sebagai file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload sampel 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 secara default. Petunjuk RUN
akan menginstal tini
sebagai proses-init kami dan nfs-common
, yang menyediakan fungsionalitas klien NFS minimal. Baca lebih lanjut tentang cara bekerja dengan paket sistem di layanan Cloud Run Anda dalam Tutorial menggunakan paket sistem.
Rangkaian petunjuk berikutnya buat direktori kerja, salin kode sumber, dan instal 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
Menentukan proses Anda dalam skrip startup
Skrip startup membuat direktori menjadi titik pemasangan, di tempat instance Filestore akan dibuat agar dapat diakses. Selanjutnya, skrip menggunakan perintah mount
untuk melampirkan instance Filestore, dengan menentukan alamat IP instance dan nama fitur berbagi file, ke titik pemasangan layanan, kemudian memulai server aplikasi. Perintah mount
memiliki fungsionalitas percobaan ulang bawaan; oleh karena itu, 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 instance Filestore:
gcloud filestore instances create INSTANCE_ID \ --tier=basic-hdd \ --file-share=name=FILE_SHARE_NAME,capacity=1TiB \ --network=name="default"
Ganti INSTANCE_ID dengan nama instance Filestore, yaitu
my-filestore-instance
, dan FILE_SHARE_NAME dengan nama direktori yang ditampilkan dari instance Filestore, yaituvol1
. Lihat Memberi nama instance Anda dan Memberi nama file yang dibagikan.Klien (layanan Cloud Run) harus berada di jaringan yang sama dengan instance Filestore untuk mengakses file yang tersimpan pada instance tersebut. Perintah ini membuat instance berada di jaringan VPC default dan menetapkan rentang alamat IP gratis. Project baru dimulai dengan jaringan default dan kemungkinan besar tidak perlu untuk membuat jaringan terpisah.
Pelajari lebih lanjut tentang konfigurasi instance di bagian Membuat instance.
Siapkan konektor Akses VPC Serverless:
Untuk terhubung ke instance Filestore Anda, layanan Cloud Run Anda memerlukan akses ke jaringan VPC resmi instance Filestore.
Setiap konektor VPC memerlukan subnet
/28
tersendiri untuk menempatkan instance konektor. Rentang IP ini tidak boleh tumpang tindih dengan reservasi alamat IP apa pun yang sudah ada di jaringan VPC Anda. Misalnya,10.8.0.0
(/28
) akan berfungsi di sebagian besar project baru atau Anda dapat" menentukan rentang IP khusus lainnya yang tidak digunakan, seperti10.9.0.0
(/28
). Anda dapat melihat rentang IP manakah yang saat ini dicadangkan di Konsol Google Cloud.gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --range "10.8.0.0/28"
Ganti CONNECTOR_NAME dengan nama untuk konektor Anda.
Perintah ini membuat konektor di jaringan VPC default, sama seperti instance Filestore, dengan ukuran mesin e2-micro. Meningkatkan ukuran mesin konektor dapat meningkatkan throughput konektor, tetapi juga akan meningkatkan biaya. Konektor juga harus berada di region yang sama dengan layanan Cloud Run. Pelajari lebih lanjut tentang cara Mengonfigurasi Akses VPC Serverless.
Tentukan variabel lingkungan dengan alamat IP untuk instance Filestore:
export FILESTORE_IP_ADDRESS=$(gcloud filestore instances describe INSTANCE_ID --format "value(networks.ipAddresses[0])")
Buat akun layanan untuk dijadikan sebagai identitas layanan. Secara default, opsi ini tidak memiliki hak istimewa selain keanggotaan project.
gcloud iam service-accounts create fs-identity
Layanan ini tidak perlu berinteraksi dengan apa pun di Google Cloud; oleh karena itu tidak ada izin tambahan yang perlu ditetapkan ke akun layanan ini.
Bangun dan deploy image container ke Cloud Run:
gcloud run deploy filesystem-app --source . \ --vpc-connector CONNECTOR_NAME \ --execution-environment gen2 \ --allow-unauthenticated \ --service-account fs-identity \ --update-env-vars FILESTORE_IP_ADDRESS=$FILESTORE_IP_ADDRESS,FILE_SHARE_NAME=FILE_SHARE_NAME
Perintah ini membangun dan men-deploy layanan Cloud Run serta menentukan konektor VPC dan lingkungan eksekusi generasi kedua. Men-deploy dari sumber akan mem-build image berdasarkan Dockerfile dan mengirim image tersebut ke repo Artifact Registry:
cloud-run-source-deploy
.Pelajari lebih lanjut tentang cara Men-deploy dari kode sumber.
Proses Debug
Jika deployment tidak berhasil, periksa Cloud logging untuk mengetahui detail lebih lanjut.
Jika waktu tunggu koneksi habis, pastikan Anda memberikan alamat IP instance Filestore yang benar.
Jika akses ditolak oleh server, periksa untuk memastikan nama file yang dibagikan sudah benar.
Jika Anda menginginkan semua log dari proses pemasangan gunakan tanda
--verbose
bersama dengan perintah pemasangan:mount --verbose -o nolock $FILESTORE_IP_ADDRESS:/$FILE_SHARE_NAME $MNT_DIR
Melakukan Percobaan
Untuk mencoba layanan lengkap:
- Buka browser Anda ke URL yang diberikan pada langkah deployment di atas.
- Anda akan melihat file yang baru dibuat di instance Filestore Anda.
- Klik pada file untuk melihat isinya.
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
Contoh perincian biaya untuk layanan, yang dihosting di Iowa (us-central1) dengan 1 instance TiB Filestore dan konektor Akses VPC Serverless. Kunjungi setiap halaman harga untuk mendapatkan harga terbaru.
Produk | Biaya per bulan |
---|---|
Filestore (Tidak bergantung pada jumlah yang digunakan) | Biaya = Kapasitas yang disediakan (1024 GiB atau 1 TiB) * Harga Tingkat Regional (us-central1) Tingkat HDD Dasar: 1024GiB * $0,16/bln = $163,84 Zonal (SSD): 1024GiB * $0,25/bln = $0,4 GiB = $256,00 |
Akses VPC Serverless | Biaya = Harga ukuran mesin * jumlah instance (default instance min 2) f1-micro: $3,88 * 2 instance = $7,76 e2- mikro: $6,11 * 2 instance = $12,22 e2-standard-4: $97,83 * 2 instance = $195,66 |
Cloud Run | Biaya = CPU + Memori + Permintaan + Jaringan |
Total | $163,84 + $12,22 = $176,06/bln + biaya Cloud Run |
Tutorial ini menggunakan instance Filestore tingkat HDD dasar. Tingkat layanan instance Filestore adalah kombinasi dari jenis instance dan jenis penyimpanannya. Jenis instance dapat diupgrade untuk mendapatkan kapasitas dan skalabilitas yang lebih besar. Jenis penyimpanan dapat diupgrade untuk meningkatkan performa. Pelajari lebih lanjut tentang rekomendasi jenis penyimpanan. Region dan kapasitas juga memengaruhi harga Filestore. Misalnya, instance TiB Tingkat 1 HDD Dasar di Iowa (us-central1) dikenai biaya $0,16 per GiB per bulan, yaitu sekitar $163,84 per bulan.
Konektor Akses VPC Serverless dihargai berdasarkan ukuran dan jumlah instance serta traffic keluar jaringan. Meningkatkan ukuran dan jumlah dapat meningkatkan throughput atau mengurangi latensi dalam pesan. Ada 3 ukuran mesin, f1-micro, e2-micro, dan e2-standard-4. Jumlah minimum instance adalah 2, sehingga biaya minimumnya adalah dua kali lipat biaya ukuran mesin tersebut.
Cloud Run dihargai berdasarkan penggunaan resource, yang dibulatkan ke 100 md terdekat, untuk memori, CPU, jumlah permintaan, dan jaringan. Oleh karena itu, biayanya akan bervariasi berdasarkan setelan layanan, jumlah permintaan dan waktu eksekusi. Layanan ini akan dikenakan biaya minimum sebesar $176,06 per bulan. Lihat dan jelajahi estimasi 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
Hapus resource Google Cloud lain yang dibuat dalam tutorial ini:
- Hapus instance Filestore
- Hapus konektor Akses VPC Serverless
- 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 selanjutnya
- Lihat Panduan pemecahan masalah.
- Pelajari lebih lanjut tentang Filestore.
- Pahami lebih dalam tentangMengonfigurasi Akses VPC Serverless.
- Pelajari Alat Diagnostik Akses VPC Serverless untuk memecahkan masalah jaringan Serverless.
- Pelajari lebih lanjut tentang Memilih proses init untuk container multi-proses.