1. Pengantar
Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda untuk menjalankan container stateless yang dapat dipanggil melalui permintaan HTTP. Layanan ini dibuat berdasarkan project open source Knative, sehingga memungkinkan portabilitas beban kerja Anda di seluruh platform. Cloud Run bersifat serverless. Platform ini memisahkan semua pengelolaan infrastruktur di lokasi lain, sehingga Anda dapat fokus pada hal terpenting, yakni membuat aplikasi yang andal.
Tujuan tutorial ini adalah untuk membuat aplikasi web sederhana dan men-deploy-nya ke Cloud Run.
2. Penyiapan dan persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan secara jarak jauh dari laptop Anda, dalam tutorial ini Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Cloud.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Aktifkan Cloud Shell .
Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.
Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.
Mesin virtual ini dimuat dengan semua alat pengembangan yang dibutuhkan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
Output perintah
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika tidak, Anda dapat menyetelnya dengan perintah ini:
gcloud config set project <PROJECT_ID>
Output perintah
Updated property [core/project].
3. Mengaktifkan API
Dari Cloud Shell, aktifkan Artifact Registry, Cloud Build, dan Cloud Run API:
gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
Perintah ini akan menampilkan pesan berhasil yang mirip dengan yang berikut ini:
Operation "operations/..." finished successfully.
Sekarang, Anda siap untuk mulai bekerja dan menulis aplikasi...
4. Menulis aplikasi
Pada langkah ini, Anda akan membangun aplikasi Python berbasis Flask sederhana yang merespons permintaan HTTP.
Direktori kerja
Gunakan Cloud Shell untuk membuat direktori kerja bernama helloworld-python
dan beralihlah ke direktori tersebut:
mkdir ~/helloworld-python cd ~/helloworld-python
main.py
Buat file bernama main.py
:
touch main.py
Edit file dengan editor command line pilihan Anda (nano, vim, atau emacs) atau dengan mengklik tombol Cloud Shell Editor:
Untuk mengedit file secara langsung dengan Cloud Shell Editor, gunakan perintah ini:
cloudshell edit main.py
main.py
from flask import Flask, request
app = Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
who = request.args.get("who", default="World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Development only: run "python main.py" and open http://localhost:8080
# When deploying to Cloud Run, a production-grade WSGI HTTP server,
# such as Gunicorn, will serve the app.
app.run(host="localhost", port=8080, debug=True)
Kode ini menghasilkan layanan web dasar yang merespons permintaan GET HTTP dengan pesan yang mudah dipahami.
requirements.txt
Tambahkan file bernama requirements.txt
untuk menentukan dependensi:
touch requirements.txt
Untuk mengedit file secara langsung dengan Cloud Shell Editor, gunakan perintah ini:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/flask
Flask==3.0.2
# https://pypi.org/project/gunicorn
gunicorn==21.2.0
Procfile
Terakhir, tambahkan file bernama Procfile
untuk menentukan cara aplikasi akan disajikan:
touch Procfile
Untuk mengedit file secara langsung dengan Cloud Shell Editor, gunakan perintah ini:
cloudshell edit Procfile
Procfile
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Pastikan semua file ada di direktori yang berfungsi:
ls
Perintah ini akan mencantumkan file berikut:
main.py Procfile requirements.txt
Aplikasi Anda siap di-deploy, tetapi mari kita uji terlebih dahulu...
5. Uji aplikasi.
Untuk menguji aplikasi, buat lingkungan virtual:
virtualenv venv
Aktifkan lingkungan virtual:
source venv/bin/activate
Instal dependensinya:
pip install -r requirements.txt
Anda akan mendapatkan pesan konfirmasi seperti berikut:
... Successfully installed Flask ... gunicorn ...
Mulai aplikasi:
python main.py
Log tersebut menunjukkan bahwa Anda berada dalam mode pengembangan:
* Serving Flask app 'main' * Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://localhost:8080 Press CTRL+C to quit ...
Di jendela Cloud Shell, klik ikon Web Preview
lalu pilih Preview on port 8080
:
Tindakan ini akan membuka jendela browser yang menampilkan pesan Hello World!
.
Anda juga dapat membuka sesi Cloud Shell lainnya (tab terminal baru) dengan mengklik ikon +
dan mengirimkan permintaan web ke aplikasi yang berjalan secara lokal:
curl localhost:8080
Anda akan menerima jawaban berikut:
Hello World!
Setelah selesai, kembali ke sesi Cloud Shell utama dan hentikan perintah python main.py
dengan CTRL+C
.
Keluar dari lingkungan virtual:
deactivate
Terakhir, hapus direktori lingkungan virtual:
rm -r venv/
Aplikasi Anda berfungsi seperti yang diharapkan: mari kita deploy...
6. Men-deploy ke Cloud Run
Cloud Run bersifat regional, yang berarti infrastruktur yang menjalankan layanan Cloud Run Anda terletak di region tertentu dan dikelola oleh Google agar tersedia redundan di semua zona dalam region tersebut. Tentukan region yang akan Anda gunakan untuk deployment, misalnya:
REGION="europe-west9"
Pastikan Anda masih berada di direktori yang berfungsi:
ls
Perintah ini akan mencantumkan file berikut:
main.py Procfile requirements.txt
Deploy aplikasi ke Cloud Run:
gcloud run deploy helloworld-python \ --source . \ --platform managed \ --region $REGION \ --allow-unauthenticated
- Anda dapat menentukan region default dengan perintah ini:
gcloud config set run/region $REGION
- Anda juga dapat menjadikan Cloud Run dikelola secara default dengan perintah ini:
gcloud config set run/platform managed
- Opsi
--allow-unauthenticated
membuat layanan tersedia untuk publik. Untuk menghindari permintaan yang tidak diautentikasi, gunakan--no-allow-unauthenticated
.
Pertama kali, Anda akan mendapatkan perintah untuk membuat repositori Artifact Registry. Ketuk Enter untuk memvalidasi:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
Tindakan ini akan meluncurkan upload kode sumber Anda ke repositori Artifact Registry dan build image container Anda:
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
Kemudian, tunggu beberapa saat sampai proses deployment selesai. Jika berhasil, command line akan menampilkan URL layanan:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
Anda bisa mendapatkan URL layanan dengan perintah ini:
SERVICE_URL=$( \ gcloud run services describe helloworld-python \ --platform managed \ --region $REGION \ --format "value(status.url)" \ ) echo $SERVICE_URL
Seharusnya muncul tampilan seperti berikut:
https://helloworld-python-PROJECTHASH-REGIONID.a.run.app
Anda sekarang dapat menggunakan aplikasi dengan membuka URL layanan di browser web:
Anda juga dapat memanggil aplikasi dari Cloud Shell:
curl $SERVICE_URL?who=me
Tindakan ini akan memberi Anda salam yang diharapkan:
Hello me!
Selamat! Anda baru saja men-deploy sebuah aplikasi ke Cloud Run. Cloud Run meningkatkan skala image container secara otomatis dan horizontal untuk menangani permintaan yang diterima, lalu menurunkan skala saat permintaan berkurang. Anda hanya membayar untuk CPU, memori, dan jaringan yang terpakai selama penanganan permintaan.
7. Pembersihan
Meski Cloud Run tidak mengenakan biaya selama layanannya tidak digunakan, Anda mungkin tetap dikenai biaya atas penyimpanan image container di Artifact Registry. Anda dapat menghapus repositori atau project Cloud Anda untuk menghindari tagihan. Jika project Cloud Anda dihapus, semua resource yang digunakan dalam project tersebut akan dihentikan.
Untuk menghapus repositori image container:
gcloud artifacts repositories delete cloud-run-source-deploy \ --location $REGION
Untuk menghapus layanan Cloud Run:
gcloud run services delete helloworld-python \ --platform managed \ --region $REGION
Untuk menghapus project Google Cloud,
- Ambil project ID Anda saat ini:
PROJECT_ID=$(gcloud config get-value core/project)
- Pastikan ini adalah project yang ingin Anda hapus:
echo $PROJECT_ID
- Hapus project:
gcloud projects delete $PROJECT_ID
8. Selamat!
Anda telah membuat aplikasi web sederhana dan men-deploy-nya ke Cloud Run.
Pelajari lebih lanjut
- Lihat dokumentasi Cloud Run
- Selesaikan Dev to Prod dalam Tiga Langkah Mudah dengan Cloud Run untuk menjelajahi opsi lainnya
- Selesaikan Django di Cloud Run untuk membuat DB Cloud SQL, kelola kredensial dengan Secret Manager, dan deploy Django
- Lihat codelab Cloud Run lainnya...
Lisensi
Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.