Dalam tutorial ini, Anda akan membuat inventaris layanan Cloud Run menggunakan Google Cloud CLI di dalam layanan Cloud Run. Anda dapat menerapkan apa yang Anda pelajari di tutorial ini ke skrip Cloud operations yang ada atau membuat bukti konsep sebelum menggunakan library klien untuk membuat layanan yang lebih andal.
Gunakan gcloud CLI seperti skrip shell apa pun di dalam layanan web, misalnya, seperti yang ditunjukkan dalam Panduan memulai shell. Di Cloud Run, kedua alat tersebut dapat digunakan dengan layanan Google Cloud dengan mengautentikasi secara otomatis dengan identitas layanan Cloud Run. Setiap izin yang diberikan ke identitas layanan tersedia di gcloud CLI.
gcould CLI sangat mampu mengumpulkan informasi dan pengelolaan resource di seluruh Google Cloud yang menantang menggunakannya dalam layanan web meminimalkan resiko pemanggil menyalahgunakan kemampuan ini. Tanpa kontrol keamanan, Anda dapat menimbulkan resiko ke layanan atau resource lainnya yang berjalan dalam project yang sama dengan mengizinkan aktivitas berbahaya yang disengaja atau tidak disengaja. Contoh risiko ini meliputi:
- Memungkinkan penemuan alamat IP mesin virtual pribadi
- Memunginkan akses ke data pribadi dari database di project yang sama
- Memungkinkan penghapusan layanan lainnya yang sedang berjalan
Beberapa langkah pada tutorial ini menunjukkan cara menerapkan kontrol untuk meminimalkan resiko,
seperti menentukan gcloud
perintah untuk dijalankan dalam kode, bukan membiarkannya
terbuka sebagai input pengguna
Membuat skrip dengan alat command line di dalam layanan Cloud Run sama dengan menggunakan command line secara lokal Perbedaan utamanya adalah pembatasan tambahan yang harus Anda tambahkan di skrip utama.
Tujuan
- Menulis dan membuat container kustom dengan Dockerfile
- Menulis, membuat, dan men-deploy layanan Cloud Run
- Menggunakan gcloud CLI dengan aman di layanan web
- Membuat laporan layanan Cloud Run dan menyimpannya ke Cloud Storage
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, and Cloud Storage APIs.
- Instal dan lakukan inisialisasi gcloud CLI.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Cloud Run Admin (
roles/run.admin
) -
Buat Akun Layanan (
roles/iam.serviceAccountCreator
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Pelanggan Service Usage (
roles/serviceusage.serviceUsageConsumer
) -
Storage Admin (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
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)asia-south1
(Mumbai, India)europe-north1
(Finlandia) CO2 Rendaheurope-southwest1
(Madrid) CO2 Rendaheurope-west1
(Belgia) CO2 Rendaheurope-west4
(Belanda) CO2 Rendaheurope-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) CO2 Rendahus-west1
(Oregon) CO2 Rendah
Tergantung harga Tingkat 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seoul, Korea Selatan)asia-southeast1
(Singapura)asia-southeast2
(Jakarta)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warsawa, Polandia)europe-west10
(Berlin) CO2 Rendaheurope-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 mesin lokal Anda:
git clone https://github.com/GoogleCloudPlatform/cloud-run-samples.git
Sebagai alternatif, anda dapat mendownload contoh seperti file zip dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh Cloud Run:
cd cloud-run-samples/gcloud-report/
Meninjau kode
Bagian ini berisi informasi tentang contoh kode yang Anda ambil.
Membuat laporan dan menguploadnya ke Cloud Storage
Skrip shell ini menghasilkan laporan layanan Cloud Run di
project dan region saat ini, serta mengupload hasilnya ke Cloud Storage. Laporan ini mencantumkan
layanan yang namanya berisi argumen string search
yang disediakan.
Skrip ini menggunakan perintah gcloud run services list
,
gcloud
opsi format lanjutan, dan mode salin
gcloud
transfer streaming.
Skrip ini aman untuk digunakan sebagai layanan karena pemanggilan berulang pada skrip ini akan memperbarui laporan tanpa memakan biaya lebih lanjut. Skrip lain yang menggunakan gcloud CLI dapat lebih memakan biaya saat terjadi pemanggilan berulang, seperti membuat resource Cloud baru atau melakukan tugas yang mahal. Skrip idempotent, yang memberikan yang sama pada pemanggilan berulang, lebih aman untuk dijalankan sebagai layanan.
Memanggil skrip pada permintaan HTTP
Kode Go ini menyiapkan layanan web yang menjalankan skrip shell untuk membuat laporan. Karena kueri penelusuran adalah input pengguna, kode akan memvalidasinya untuk memastikan bahwa kueri tersebut hanya berisi huruf, angka, atau tanda hubung untuk mencegah perintah berbahaya sebagai input. Kumpulan karakter ini cukup sempit untuk mencegah serangan injection peraturan.
Layanan web meneruskan parameter penelusuran sebagai argumen ke skrip shell.
File go.mod
mendeklarasikan dependensi aplikasi dalam
modul go:
Menentukan lingkungan penampung
Dockerfile menentukan cara lingkungan disusun bersama untuk layanan.
Dockerfile ini mirip dengan Dockerfile dari
panduan memulai helloworld-shell,
kecuali bahwa image container berdasarkan gcloud
image Google Cloud CLI. Dengan begitu, layanan Anda dapat menggunakan gcloud
tanpa penginstalan kustom dan langkah konfigurasi untuk Google Cloud CLI.
Membuat repositori standar Artifact Registry
Buat repositori standar Artifact Registry untuk menyimpan image container Anda:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Ganti:
- REPOSITORY dengan nama unik untuk repositori.
- REGION dengan region Google Cloud Artifact Registry.
Menyiapkan bucket Cloud Storage
Buat bucket Cloud Storage untuk mengupload laporan:
gcloud storage buckets create gs://REPORT_ARCHIVE_BUCKET
Ganti REPORT_ARCHIVE_BUCKET dengan nama bucket yang unik secara global.
Menyiapkan identitas layanan
Untuk membatasi hak istimewa yang dimiliki layanan ke infrastruktur lain, Anda perlu membuat identitas layanan dan menyesuaikan izin IAM tertentu yang diperlukan untuk melakukan pekerjaan.
Dalam kasus ini, hak istimewa yang diperlukan adalah izin untuk membaca layanan Cloud Run serta izin untuk membaca dari, dan menulis untuk bucket Cloud Storage.
Membuat akun layanan:
gcloud iam service-accounts create gcloud-report-identity
Beri izin akun layanan untuk membaca layanan Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gcloud-report-identity@PROJECT_ID.iam.gserviceaccount.com \ --role roles/run.viewer
Beri izin akun layanan untuk membaca dari dan menulis ke bucket Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://REPORT_ARCHIVE_BUCKET \ --member=serviceAccount:gcloud-report-identity@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/storage.objectUser
Akses terbatas atas identitas layanan yang disesuaikan ini untuk mencegah layanan dari akses resource Google Cloud lainnya.
Mengirimkan layanan
Kode pengiriman terdiri dari tiga langkah:
- Membangun image container dengan Cloud Build
- Mengupload image container ke Artifact Registry
- Men-deploy image container ke Cloud Run.
Untuk kode pengiriman Anda:
Build container Anda dan publikasikan di Artifact Registry:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/gcloud-report
Ganti:
- PROJECT_ID dengan project ID Google Cloud Anda
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud Artifact Registry.
gcloud-report
adalah nama layanan Anda.Setelah berhasil, pesan BERHASIL akan menampilkan ID, waktu pembuatan, dan nama image. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika diperlukan.
Jalankan perintah berikut ini untuk menggunakan layanan Anda:
gcloud run deploy gcloud-report \ --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/gcloud-report \ --update-env-vars GCLOUD_REPORT_BUCKET=REPORT_ARCHIVE_BUCKET \ --service-account gcloud-report-identity \ --no-allow-unauthenticated
Ganti:
- PROJECT_ID dengan ID project Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud layanan.
gcloud-report
adalah bagian dari nama penampung dan nama layanan. Image container di-deploy ke layanan dan region (Cloud Run) yang Anda konfigurasi sebelumnya di bagian Menyiapkan gcloud.Flag
--no-allow-unauthenticated
membatasi akses yang tidak diautentikasi ke layanan. Dengan menjaga layanan pribadi, Anda dapat mengandalkan autentikasi bawaan Cloud Run untuk memblokir permintaan yang tidak sah. Untuk detail selengkapnya tentang autentikasi yang didasarkan pada Identity and Access Management IAM, lihat Mengelola akses menggunakan IAM.Tunggu hingga deployment selesai. Proses ini dapat memakan waktu sekitar setengah menit. Jika berhasil, command line akan menampilkan URL layanan.
Jika Anda ingin men-deploy pembaruan kode ke layanan, ulangi langkah-langkah sebelumnya. Setiap deployment ke layanan membuat revisi baru dan otomatis melayani lalu lintas jika sudah siap.
Lihat Mengelola akses menggunakan IAM untuk mengetahui cara memberikan akses kepada pengguna Google Cloud untuk memanggil layanan ini. Editor dan pemilik project secara otomatis memiliki akses ini.
Membuat laporan
Untuk membuat laporan layanan Cloud Run:
Gunakan curl untuk mengirim permintaan yang sudah diautentikasi:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
Ganti SERVICE_URL dengan URL yang disediakan oleh Cloud Run setelah menyelesaikan deployment.
Jika Anda akan membuat project baru dan mengikuti tutorial ini, output-nya akan mirip dengan:
Wrote report to gs://REPORT_ARCHIVE_BUCKET/report-.-DATE.txt
.
di nama file adalah argumen penelusuran default seperti yang disebutkan dalam kode sumber.Untuk menggunakan fitur penelusuran, tambahkan
search
argumen ke permintaan:curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL?search=gcloud
Kueri ini akan mengembalikan output yang sama dengan:
Wrote report to gs://REPORT_ARCHIVE_BUCKET/report-gcloud-DATE.txt
Ambil file menggunakan gcloud CLI secara lokal:
gcloud storage cp gs://REPORT_FILE_NAME .
.
dalam perintah berarti direktori kerja saat ini.Ganti REPORT_FILE_NAME dengan output nama objek Cloud Storage di langkah sebelumnya.
Buka file untuk melihat laporan. Kodenya akan terlihat seperti berikut:
Meningkatkan keandalan untuk masa depan
Jika Anda ingin mengembangkan layanan ini lebih lanjut, pertimbangkan untuk menulis ulang dalam bahasa pemrograman yang lebih andal dan menggunakan Cloud Run Admin API serta library klien Cloud Storage.
Anda dapat memeriksa panggilan API yang dilakukan (dan melihat beberapa detail autentikasi)
dengan menambahkan --log-http
ke perintah gcloud CLI.
Mengotomatiskan operasi ini
Setelah laporan layanan Cloud Run dapat dipicu oleh permintaan HTTP , gunakan otomatisasi untuk membuat laporan waktu Anda memerlukannya:
- Menjalankan layanan ini dalam jadwal dengan Cloud Scheduler
- Membuat laporan sebagai antrean tugas atau jadwal di masa mendatang dengan Google Tasks
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the 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:
Langkah selanjutnya
- Kurangi dependensi layanan Anda dengan mengganti perintah gcloud CLI dengan panggilan API: Mengupload Objek, Referensi Cloud Run Admin API
- Tingkatkan keamanan lebih lanjut dengan menggunakan kontrol lalu lintas jaringan masuk untuk membatasi akses ke layanan Anda
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.