1. Sebelum memulai
Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda untuk menjalankan container stateless yang dapat dipanggil melalui permintaan HTTP. Cloud Run adalah platform serverless; aplikasi ini tidak memerlukan pengelolaan infrastruktur, sehingga Anda dapat fokus pada hal yang paling penting—membuat aplikasi yang hebat. Produk ini dibangun dari Knative, yang memungkinkan Anda memilih untuk menjalankan container dengan Cloud Run (terkelola sepenuhnya) atau Cloud Run for Anthos. Tujuan codelab ini adalah agar Anda dapat membangun image container dan men-deploy-nya ke Cloud Run.
Prasyarat
T/A
2. Penyiapan dan persyaratan
Penyiapan lingkungan mandiri
- Login ke Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau G Suite, Anda harus membuatnya.)
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 Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Cloud Shell
Meskipun Google Cloud dapat dioperasikan secara jarak jauh dari laptop Anda, gunakan Cloud Shell, yakni 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 Cloud Shell dari Cloud Console, cukup klik Aktifkan Cloud Shell
(hanya perlu beberapa saat untuk melakukan penyediaan dan terhubung ke lingkungan).
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID
.
gcloud auth list
Output perintah
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika, untuk beberapa alasan, project belum disetel, 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 Cloud Console:
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>
- Terakhir, tetapkan zona dan konfigurasi project default.
gcloud config set compute/zone us-central1-f
Anda dapat memilih berbagai zona yang berbeda. Untuk informasi selengkapnya, lihat Region & Zona.
Mengaktifkan Cloud Run API
Dari Cloud Shell, aktifkan Cloud Run API.
gcloud services enable run.googleapis.com
Hasilnya akan menampilkan pesan seperti berikut yang menandakan bahwa proses berhasil:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Menulis aplikasi contoh
Anda akan membangun aplikasi Node.js sederhana berbasis express yang merespons permintaan HTTP.
Untuk membangun aplikasi, gunakan Cloud Shell untuk membuat direktori baru bernama helloworld-nodejs
dan mengubah direktori ke dalamnya.
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.
Berikutnya, 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 akan menghasilkan server web dasar yang memantau port yang ditentukan oleh variabel lingkungan PORT
. Aplikasi Anda sekarang siap dimasukkan ke dalam container, diuji, dan diupload ke Container Registry.
4. Memasukkan aplikasi ke dalam container dan menguploadnya 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 dikirim ke registry, Anda akan melihat pesan SUCCESS
yang berisi nama image (gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
). Image disimpan di Container Registry dan dapat digunakan kembali jika diinginkan.
Anda dapat menampilkan daftar 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 bertuliskan Hello World!
Anda juga dapat menggunakan curl localhost:8080
.
5. Men-deploy ke Cloud Run
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 bangun 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 deploy --allow-unauthenticated
memungkinkan Anda menjangkau aplikasi tanpa autentikasi. Opsi deploy --platform managed \
berarti Anda meminta lingkungan yang terkelola 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 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.
6. Pembersihan
Meski Cloud Run tidak mengenakan biaya selama 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 dengan 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
7. Selamat
Selamat! Anda telah men-deploy aplikasi yang dikemas dalam image container ke Cloud Run.
Pelajari lebih lanjut
Langkah selanjutnya yang tepat adalah melihat Quickstart: Deploy to Cloud Run for Anthos on Google Cloud.
Untuk mengetahui informasi selengkapnya tentang membangun container HTTP stateless yang cocok untuk Cloud Run dari sumber kode dan mengirimkannya ke Container Registry, baca referensi berikut ini:
Untuk mempelajari Knative lebih lanjut, project open source yang mendasarinya, lihat Knative.