Dalam tutorial ini, Anda akan membuat inventaris layanan Cloud Run
menggunakan gcloud
dan gsutil
alat command line 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 alat gcloud
dan gsutil
seperti skrip shell apa pun di dalam layanan web,
misalnya, seperti yang ditunjukkan dalam Panduan memulai shell.
Dalam 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 deploy layanan Cloud Run
- Menggunakan alat
gcloud
dangsutil
dengan aman di layanan web - Membuat laporan layanan Cloud Run dan menyimpannya ke Cloud Storage
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
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.
-
Aktifkan API Artifact Registry, Cloud Build, Cloud Run, and Cloud Storage.
- 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
) -
Admin Cloud Run (
roles/run.admin
) -
Membuat Akun Layanan (
roles/iam.serviceAccountCreator
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
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.
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
africa-south1
(Johannesburg)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
(Damam)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
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh Cloud Run:
cd cloud-run-samples/gcloud-report/
Meninjau kode
Bagian ini menyertakan 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 gcloud run services list
perintah,
gcloud
opsi format lanjutan, dan mode salin
gsutil
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 container
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 kami diizinkan untuk menggunakan gcloud
dan gsutil
tanpa penginstalan kustom dan
langkah konfigurasi untuk Google Cloud CLI.
Membuat repositori standar Artifact Registry
Buat repositori standar Artifact Registry untuk menyimpan image container:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Ganti:
- REPOSITORY dengan nama unik untuk repositori.
- REGION dengan region Google Cloud dari Artifact Registry.
Menyiapkan bucket Cloud Storage
Buat bucket Cloud Storage untuk mengupload laporan:
gsutil mb 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:
gsutil iam ch \ serviceAccount:gcloud-report-identity@PROJECT_ID.iam.gserviceaccount.com:objectViewer,objectCreator \ gs://REPORT_ARCHIVE_BUCKET
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:
Bangun 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 dari 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 perlu.
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 project ID Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region layanan Google Cloud.
gcloud-report
adalah bagian dari nama container 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
.
dalam 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 alat
gsutil
secara lokal:gsutil 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 dan -D
ke perintah gsutil.
Otomatiskan 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:
- 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:
Langkah selanjutnya
- Kurangi dependensi layanan Anda dengan mengganti alat
gcloud
dangsutil
dengan panggilan API: Mengupload Objek, Referensi Cloud Run 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.