
Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda untuk menjalankan container stateless yang dapat dipanggil melalui permintaan HTTP. Cloud Run bersifat serverless; platform ini tidak memerlukan pengelolaan infrastruktur, sehingga Anda dapat fokus pada hal terpenting, yakni membuat aplikasi yang andal. Layanan ini dibangun dari Knative, sehingga Anda dapat memilih untuk menjalankan container dengan Cloud Run (terkelola sepenuhnya) atau Cloud Run for Anthos. Tujuan codelab ini adalah untuk mempersiapkan Anda membangun image container dan men-deploy-nya di Cloud Run.
Prasyarat
T/A
Penyiapan lingkungan mandiri
Jika belum memiliki Akun Google (Gmail atau Google Apps), Anda harus membuatnya. Login ke Google Cloud Platform console (console.cloud.google.com) dan buat project baru:
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.
Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource Google Cloud.
Menjalankan melalui codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya berjalan (lihat bagian "pembersihan" di akhir dokumen ini).
Pengguna baru Google Cloud Platform memenuhi syarat untuk mendapatkan uji coba gratis senilai$300.
Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud.
Mesin virtual berbasis Debian ini memuat semua alat pengembangan yang akan Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Ini berarti bahwa semua yang Anda perlukan untuk codelab ini adalah browser (ya, ini berfungsi di Chromebook).
Untuk mengaktifkan Google Cloud Shell, dari konsol developer, cukup klik tombol di sisi kanan atas (hanya perlu beberapa saat untuk melakukan penyediaan dan terhubung ke lingkungan):
Klik tombol "Start Cloud Shell":
Setelah terhubung ke cloud shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID Anda :
gcloud auth list
Output perintah
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Cloud Shell juga menetapkan beberapa variabel lingkungan secara default yang mungkin berguna saat Anda menjalankan perintah di masa mendatang.
echo $GOOGLE_CLOUD_PROJECT
Output perintah
<PROJECT_ID>
Jika project belum ditetapkan karena beberapa alasan, cukup jalankan perintah berikut :
gcloud config set project <PROJECT_ID>
Mencari PROJECT_ID Anda? Periksa ID yang Anda gunakan di langkah-langkah penyiapan atau cari di dasbor konsol:
PENTING: Terakhir, tetapkan konfigurasi project dan zona default:
gcloud config set compute/zone us-central1-f
Anda dapat memilih berbagai zona yang berbeda. Pelajari lebih lanjut di dokumentasi Region & Zona.
Aktifkan Cloud Run API
Aktifkan Cloud Run API dari Cloud Shell.
gcloud services enable run.googleapis.com
Perintah di atas akan menampilkan pesan seperti berikut yang menandakan bahwa proses berhasil:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
Anda akan membuat aplikasi Node.js sederhana berbasis ekspres yang merespons permintaan HTTP.
Untuk membangun aplikasi, gunakan Cloud Shell untuk membuat direktori baru bernama helloworld-nodejs dan beralihlah ke direktori tersebut.
mkdir helloworld-nodejs cd helloworld-nodejs
Buat file package.json dengan konten berikut:
{
"name": "cloudrun-helloworld",
"version": "1.0.0",
"description": "Simple hello world sample in Node",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.17.1"
}
}Dan yang paling penting, file di atas berisi perintah mulai skrip dan dependensi pada framework aplikasi web Express.
Selanjutnya, di direktori yang sama, buat file index.js dan salin konten berikut ke dalamnya:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Hello world received a request.');
const target = process.env.TARGET || 'World';
res.send(`Hello ${target}!`);
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Hello world listening on port', port);
});Kode tersebut membuat server web dasar yang memantau port yang ditentukan oleh variabel lingkungan PORT. Aplikasi Anda kini siap dimasukkan ke dalam container, diuji, dan diupload ke Container Registry.
Untuk memasukkan aplikasi contoh ke dalam container, buat file baru bernama Dockerfile di direktori yang sama dengan file sumber, lalu salin konten berikut ke dalamnya:
# Use the official lightweight Node.js 12 image.
# https://hub.docker.com/_/node
FROM node:12-slim
# Create and change to the app directory.
WORKDIR /usr/src/app
# Copy application dependency manifests to the container image.
# A wildcard is used to ensure both package.json AND package-lock.json are copied.
# Copying this separately prevents re-running npm install on every code change.
COPY package*.json ./
# Install production dependencies.
RUN npm install --only=production
# Copy local code to the container image.
COPY . ./
# Run the web service on container startup.
CMD [ "npm", "start" ]Sekarang, bangun image container Anda menggunakan Cloud Build dengan menjalankan perintah berikut dari direktori yang berisi Dockerfile:
gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
$GOOGLE_CLOUD_PROJECT adalah variabel lingkungan yang berisi project ID Google Cloud Anda saat berjalan di Cloud Shell. Anda juga bisa mendapatkannya dengan menjalankan gcloud config get-value project.
Setelah dikirimkan ke registry, Anda akan melihat pesan SUCCESS yang berisi nama image (gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld). Image tersebut disimpan di Container Registry dan dapat digunakan kembali jika diinginkan.
Anda dapat mencantumkan semua image container yang terkait dengan project saat ini menggunakan perintah berikut:
gcloud container images list
Jika ingin menjalankan dan menguji aplikasi secara lokal dari Cloud Shell, Anda dapat memulainya menggunakan perintah docker standar ini:
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
Di Cloud Shell, klik Web Preview
, lalu pilih Preview on port 8080.

Tindakan ini akan membuka jendela browser yang menampilkan Hello World!

Anda juga dapat menggunakan curl localhost:8080.
Deploy aplikasi Anda yang ada di dalam container ke Cloud Run menggunakan perintah berikut (pastikan untuk menyesuaikannya dengan nama image yang benar untuk aplikasi yang Anda buat atau gunakan image bawaan gcr.io/cloudrun/hello):
gcloud run deploy helloworld \ --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld \ --platform managed \ --region us-central1 \ --allow-unauthenticated
Opsi deployment --allow-unauthenticated memungkinkan Anda menjangkau aplikasi tanpa autentikasi. Opsi deployment --platform managed \ berarti Anda meminta lingkungan yang dikelola sepenuhnya (bukan infrastruktur Kubernetes melalui Anthos).
Tunggu sebentar sampai proses deployment selesai. Setelah selesai, command line akan menampilkan URL layanan.
Service [helloworld] revision [helloworld-00001] has been deployed and is serving traffic at https://helloworld-wdl7fdwaaa-uc.a.run.app
Sekarang Anda dapat melihat container yang telah di-deploy dengan membuka URL layanan di browser web:

Cloud Run secara otomatis dan horizontal meningkatkan skala image container Anda untuk menangani permintaan yang diterima, lalu menurunkan skala saat permintaan berkurang. Anda hanya membayar untuk CPU, memori, dan jaringan yang terpakai selama penanganan permintaan.
Meskipun Cloud Run tidak mengenakan biaya saat layanannya tidak digunakan, Anda mungkin tetap ditagih atas penyimpanan image container yang telah dibuat.
Anda dapat menghapus project Google Cloud untuk menghindari tagihan, yang akan menghentikan penagihan atas semua resource yang digunakan untuk project tersebut, atau cukup hapus image helloworld Anda menggunakan perintah ini:
gcloud container images delete gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
Untuk menghapus layanan Cloud Run, gunakan perintah ini:
gcloud run services delete helloworld \ --platform managed \ --region us-central1
Selamat! Anda telah men-deploy aplikasi yang dikemas dalam image container ke Cloud Run.
Pelajari lebih lanjut
Langkah selanjutnya yang baik adalah membaca Panduan memulai: Men-deploy ke Cloud Run for Anthos di Google Cloud.
Untuk mengetahui informasi selengkapnya tentang cara membangun container HTTP stateless yang cocok untuk Cloud Run dari kode sumber dan mengirimkannya ke Container Registry, lihat referensi berikut:
Untuk mempelajari lebih lanjut Knative, project open source yang mendasarinya, lihat Knative.