1. Ringkasan
Men-deploy aplikasi web untuk pertama kalinya bisa menjadi pengalaman yang menegangkan. Bahkan setelah deployment pertama, jika prosesnya terlalu rumit, Anda mungkin menghindari men-deploy versi baru aplikasi. Dengan deployment berkelanjutan, Anda dapat men-deploy perubahan aplikasi secara otomatis dengan mudah.
Dalam lab ini, Anda akan menulis aplikasi web dan mengonfigurasi Cloud Run untuk otomatis men-deploy aplikasi Anda saat perubahan dilakukan pada kode sumber aplikasi Anda. Kemudian, Anda memodifikasi aplikasi dan men-deploy-nya lagi.
Yang akan Anda pelajari
- Menulis aplikasi web dengan Cloud Shell Editor
- Menyimpan kode aplikasi Anda di GitHub
- Men-deploy aplikasi Anda secara otomatis ke Cloud Run
- Menambahkan AI generatif ke aplikasi Anda menggunakan Vertex AI
2. Prasyarat
- Jika Anda belum memiliki Akun Google, Anda harus membuat Akun Google.
- Gunakan akun pribadi, bukan akun kantor atau sekolah. Akun kantor dan sekolah mungkin memiliki batasan yang mencegah Anda mengaktifkan API yang diperlukan untuk lab ini.
- Jika belum memiliki akun GitHub, Anda harus membuat akun GitHub
- Gunakan akun GitHub yang ada jika Anda memilikinya. GitHub cenderung akan memblokir akun baru sebagai spam.
- Konfigurasikan autentikasi 2 langkah di akun GitHub Anda untuk mengurangi kemungkinan akun Anda ditandai sebagai spam.
3. Penyiapan project
- Login ke Konsol Google Cloud.
- Aktifkan penagihan di Konsol Cloud.
- Menyelesaikan lab ini akan dikenai biaya kurang dari $1 USD untuk resource Cloud.
- Anda dapat mengikuti langkah-langkah di akhir lab ini untuk menghapus resource agar tidak dikenai biaya lebih lanjut.
- Pengguna baru memenuhi syarat untuk mengikuti Uji Coba Gratis senilai$300 USD.
- Menghadiri acara Gen AI for Devs? Kredit senilai$1 USD mungkin tersedia.
- Buat project baru atau pilih untuk menggunakan kembali project yang ada.
- Konfirmasi bahwa penagihan diaktifkan di Project saya di Penagihan Cloud
- Jika project baru Anda bertuliskan
Billing is disableddi kolomBilling account:- Klik tiga titik di kolom
Actions - Klik Ubah penagihan
- Pilih akun penagihan yang ingin Anda gunakan
- Klik tiga titik di kolom
- Jika Anda menghadiri acara Gen AI for Devs, akun tersebut kemungkinan akan diberi nama Google Cloud Platform Trial Billing Account
- Jika project baru Anda bertuliskan
4. Buka Cloud Shell Editor
- Buka Cloud Shell Editor
- Jika terminal tidak muncul di bagian bawah layar, buka terminal:
- Klik menu tiga garis

- Klik Terminal
- Klik New Terminal

- Klik menu tiga garis
- Di terminal, tetapkan project Anda dengan perintah ini:
- Format:
gcloud config set project [PROJECT_ID] - Contoh:
gcloud config set project lab-project-id-example - Jika Anda tidak ingat project ID Anda:
- Anda dapat mencantumkan semua project ID Anda dengan:
gcloud projects list | awk '/PROJECT_ID/{print $2}'

- Anda dapat mencantumkan semua project ID Anda dengan:
- Format:
- Jika diminta untuk memberikan otorisasi, klik Authorize untuk melanjutkan.

- Anda akan melihat pesan ini:
Jika Anda melihatUpdated property [core/project].
WARNINGdan dimintaDo you want to continue (Y/N)?, berarti Anda kemungkinan telah memasukkan ID project dengan salah. TekanN, tekanEnter, lalu coba jalankan perintahgcloud config set projectlagi.
5. Mengaktifkan API
Di terminal, aktifkan API:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
aiplatform.googleapis.com
Pemrosesan perintah ini mungkin membutuhkan waktu beberapa menit, tetapi pada akhirnya akan menghasilkan pesan keberhasilan yang mirip dengan yang berikut:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
6. Mengonfigurasi Git
- Tetapkan email pengguna git global Anda:
git config --global user.email "you@example.com" - Tetapkan nama pengguna git global Anda:
git config --global user.name "Your Name" - Tetapkan cabang default git global Anda ke
main:git config --global init.defaultBranch main
7. Tuliskan kode Anda
Untuk menulis aplikasi di Go:
- Buka direktori utama:
cd ~ - Buat direktori
codelab-genai:mkdir codelab-genai - Buka direktori
codelab-genai:cd codelab-genai - Lakukan inisialisasi file go.mod untuk mendeklarasikan modul kita:
go mod init codelab-genai - Buat file
main.go:touch main.go - Buka file
main.godi Cloud Shell Editor: File kosong akan muncul di bagian atas layar. Di sinilah Anda dapat mengedit filecloudshell edit main.gomain.goini.
- Edit
main.godan tempelkan kode berikut ke dalamnya: Setelah beberapa detik, Cloud Shell Editor akan menyimpan kode Anda secara otomatis. Kode ini merespons permintaan http dengan sapaan "Hello world!".package main import ( "fmt" "log" "net/http" "os" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world!") }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
Kode awal untuk aplikasi Anda telah selesai dan siap disimpan dalam kontrol versi.
8. Membuat repositori
- Kembali ke terminal Cloud Shell di bagian bawah layar Anda.
- Pastikan Anda masih berada di direktori yang benar:
cd ~/codelab-genai - Lakukan inisialisasi repositori git Anda
git init -b main - Login ke GitHub CLI
Tekangh auth loginEnteruntuk menerima opsi default dan ikuti petunjuk di alat GitHub CLI, termasuk:- Akun mana yang ingin Anda gunakan untuk login?
GitHub.com - Apa protokol pilihan Anda untuk operasi Git di host ini?
HTTPS - Mengautentikasi Git dengan kredensial GitHub Anda?
Y(Lewati jika opsi ini tidak muncul.) - Bagaimana Anda ingin mengautentikasi GitHub CLI?
Login with a web browser - Salin kode sekali pakai Anda
- Buka https://github.com/login/device
- Tempelkan kode sekali pakai Anda
- Klik Authorize github
- Menyelesaikan login Anda
- Akun mana yang ingin Anda gunakan untuk login?
- Pastikan Anda login:
Jika Anda berhasil login, nama pengguna GitHub Anda akan ditampilkan.gh api user -q ".login" - Buat variabel
GITHUB_USERNAMEGITHUB_USERNAME=$(gh api user -q ".login") - Pastikan Anda telah membuat variabel lingkungan:
Jika Anda berhasil membuat variabel, tindakan ini akan menampilkan nama pengguna GitHub Anda.echo ${GITHUB_USERNAME} - Buat repositori GitHub kosong bernama
codelab-genai: Jika Anda menerima error:gh repo create codelab-genai --private Kemudian, Anda sudah memiliki repositori bernamaGraphQL: Name already exists on this account (createRepository)
codelab-genai. Anda memiliki dua opsi untuk terus mengikuti tutorial ini:- Hapus repositori GitHub yang ada
- Buat repositori dengan nama yang berbeda dan jangan lupa untuk mengubahnya dalam perintah berikut.
- Tambahkan repositori
codelab-genaisebagaioriginjarak jauh:git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
9. Membagikan kode Anda
- Pastikan Anda berada di direktori yang benar:
cd ~/codelab-genai - Tambahkan semua file di direktori saat ini ke commit ini:
git add . - Buat commit pertama:
git commit -m "add http server" - Kirim commit Anda ke cabang
mainrepositoriorigin:git push -u origin main
Anda dapat menjalankan perintah ini dan membuka URL yang dihasilkan untuk melihat kode aplikasi Anda di GitHub:
echo -e "\n\nTo see your code, visit this URL:\n \
https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/main.go \n\n"
10. Menyiapkan deployment otomatis
- Biarkan tab Cloud Shell Editor tetap terbuka. Kita akan kembali ke tab ini nanti.
- Di tab baru, buka halaman Cloud Run
- Pilih Project Google Cloud yang benar di konsol

- Klik HUBUNGKAN REPO
- Klik SIAPKAN DENGAN CLOUD BUILD
- Pilih GitHub sebagai Penyedia Repositori
- Jika Anda belum login ke akun GitHub di browser, login dengan kredensial Anda.
- Klik Autentikasi, lalu klik Lanjutkan.
- Setelah login, Anda akan melihat pesan di halaman Cloud Run yang menyatakan The GitHub App is not installed on any of your repositories.
- Klik tombol INSTALL GOOGLE CLOUD BUILD.
- Di halaman Penyiapan Penginstalan, pilih Only select repositories dan pilih repositori codelab-genai yang Anda buat melalui CLI.
- Klik Instal
- Catatan: Jika Anda memiliki banyak repositori GitHub, proses ini dapat memerlukan waktu beberapa menit untuk dimuat.
- Pilih
your-user-name/codelab-genaisebagai Repositori- Jika repositori tidak ada, klik link Kelola Repositori yang Terhubung.
- Biarkan Cabang sebagai
^main$ - Klik Go, Node.js, Python, Java, .NET Core, Ruby, atau PHP melalui buildpack Google Cloud
- Biarkan kolom lainnya (
Build context directory,Entrypoint, danFunction target) seperti apa adanya.
- Biarkan kolom lainnya (
- Klik Simpan
- Pilih GitHub sebagai Penyedia Repositori
- Scroll ke bawah ke Autentikasi
- Klik Izinkan pemanggilan yang tidak diautentikasi
- Klik BUAT
Setelah build selesai (yang akan memakan waktu beberapa menit), jalankan perintah ini dan buka URL yang dihasilkan untuk melihat aplikasi yang sedang berjalan:
echo -e "\n\nOnce the build finishes, visit your live application:\n \
"$( \
gcloud run services list | \
grep codelab-genai | \
awk '/URL/{print $2}' | \
head -1 \
)" \n\n"
11. Mengubah kode Anda
- Kembali ke terminal Cloud Shell di bagian bawah layar Anda.
- Pastikan Anda masih berada di direktori yang benar:
cd ~/codelab-genai - Buka kembali
main.godi Cloud Shell Editorcloudshell edit main.go - Instal Vertex AI SDK untuk Go:
go get cloud.google.com/go/vertexai/genai - Instal library Metadata untuk Go guna mendapatkan project ID saat ini:
go get cloud.google.com/go/compute/metadata - Ganti kode dalam file
main.goAnda dengan:package main import ( "context" "fmt" "log" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" ) func main() { ctx := context.Background() var projectId string var err error projectId = os.Getenv("GOOGLE_CLOUD_PROJECT") if projectId == "" { projectId, err = metadata.ProjectIDWithContext(ctx) if err != nil { return } } var client *genai.Client client, err = genai.NewClient(ctx, projectId, "us-central1") if err != nil { return } defer client.Close() model := client.GenerativeModel("gemini-1.5-flash-001") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { animal := r.URL.Query().Get("animal") if animal == "" { animal = "dog" } resp, err := model.GenerateContent( ctx, genai.Text( fmt.Sprintf("Give me 10 fun facts about %s. Return the results as HTML without markdown backticks.", animal)), ) if err != nil { w.WriteHeader(http.StatusServiceUnavailable) return } if len(resp.Candidates) > 0 && len(resp.Candidates[0].Content.Parts) > 0 { htmlContent := resp.Candidates[0].Content.Parts[0] w.Header().Set("Content-Type", "text/html; charset=utf-8") fmt.Fprint(w, htmlContent) } }) port := os.Getenv("PORT") if port == "" { port = "8080" } if err := http.ListenAndServe(":"+port, nil); err != nil { log.Fatal(err) } }
12. Deploy ulang
- Pastikan Anda masih berada di direktori yang benar di Cloud Shell:
cd ~/codelab-genai - Jalankan perintah ini untuk melakukan commit versi baru aplikasi Anda ke repositori git lokal:
git add . git commit -m "add latest changes" - Kirim perubahan ke GitHub:
git push - Setelah build selesai, jalankan perintah ini dan buka aplikasi yang di-deploy:
echo -e "\n\nOnce the build finishes, visit your live application:\n \ "$( \ gcloud run services list | \ grep codelab-genai | \ awk '/URL/{print $2}' | \ head -1 \ )" \n\n"
Mungkin diperlukan waktu beberapa menit hingga build selesai sebelum Anda dapat melihat perubahan.
Anda dapat melihat histori semua revisi di sini: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions
13. (Opsional) Audit penggunaan Vertex AI Anda
Seperti layanan Google Cloud lainnya, Anda dapat mengaudit operasi Vertex AI. Log audit membantu Anda menjawab pertanyaan, "Siapa yang melakukan apa, di mana, dan kapan?". Log audit administratif untuk Vertex AI diaktifkan secara default. Untuk mengaudit permintaan guna membuat konten, Anda harus mengaktifkan log audit Akses Data:
- Di konsol Google Cloud, buka halaman Audit Logs:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah IAM & Admin. - Pastikan project Google Cloud yang ada adalah project tempat Anda membuat aplikasi Cloud Run.
- Di tabel Data Access audit logs configuration, temukan dan pilih
Vertex AI APIdari kolom Service. - Di tab Log Types, pilih jenis log audit Akses Data
Admin readdanData read. - Klik Simpan.
Setelah mengaktifkannya, Anda akan dapat melihat log audit untuk setiap pemanggilan aplikasi. Untuk melihat log audit dengan detail pemanggilan, lakukan hal berikut:
- Kembali ke aplikasi yang di-deploy dan muat ulang halaman untuk memicu log.
- Di Konsol Google Cloud, buka halaman Log Explorer:
- Di jendela kueri, ketik:
LOG_ID("cloudaudit.googleapis.com%2Fdata_access") protoPayload.serviceName="aiplatform.googleapis.com" - Klik Run query.
Log audit mencatat penggunaan Vertex AI API, tetapi tidak memungkinkan Anda mengamati data terkait beban kerja seperti perintah atau detail respons.
14. (Opsional) Meningkatkan observabilitas workload AI Anda
Log audit tidak mencatat informasi terkait beban kerja. Untuk meningkatkan kemampuan pengamatan workload, Anda harus mencatat informasi ini secara eksplisit. Anda dapat menggunakan framework logging favorit Anda untuk melakukannya. Langkah-langkah berikut menunjukkan salah satu cara melakukannya menggunakan library logging terstruktur Go.
- Buka kembali
main.godi Cloud Shell Editorcloudshell edit ~/codelab-genai/main.go - Ubah blok impor Anda untuk menyertakan library JSON dan logging terstruktur Go:
import ( "context" "encoding/json" "fmt" "log" "log/slog" "net/http" "os" "cloud.google.com/go/compute/metadata" "cloud.google.com/go/vertexai/genai" ) - Setelah menginisialisasi klien Vertex (baris 33), tambahkan baris berikut untuk menginisialisasi logger terstruktur yang menggunakan kolom yang tepat untuk Google Cloud Logging:
opts := &slog.HandlerOptions{ Level: slog.LevelDebug, ReplaceAttr: func(group []string, a slog.Attr) slog.Attr { if a.Key == slog.LevelKey { return slog.Attr{Key: "severity", Value: a.Value} } if a.Key == slog.MessageKey { return slog.Attr{Key: "message", Value: a.Value} } return slog.Attr{Key: a.Key, Value: a.Value} }, } jsonHandler := slog.NewJSONHandler(os.Stdout, opts) slog.SetDefault(slog.New(jsonHandler)) - Setelah memeriksa respons terhadap
GenerateContent(baris 69), tambahkan baris berikut di dalam blok if: Kode ini menulis ke informasijsonBytes, err := json.Marshal(resp) if err != nil { slog.Error("Failed to marshal response to JSON", "error", err) } else { jsonString := string(jsonBytes) slog.Debug("Complete response content", "json_response", jsonString) }stdouttentang konten yang dihasilkan menggunakan format logging terstruktur. Agen logging di Cloud Run merekam output yang dicetak kestdoutdan menulis format ini ke Cloud Logging. - Buka kembali Cloud Shell dan ketik perintah berikut untuk memastikan Anda berada di direktori yang benar:
cd ~/codelab-genai - Lakukan perubahan:
git commit -am "Observe generated content" - Kirim perubahan ke GitHub untuk memicu deployment ulang versi yang diubah:
git push
Setelah versi baru di-deploy, Anda dapat mengamati informasi debug tentang panggilan ke Vertex AI.
Untuk melihat log aplikasi Anda, lakukan hal berikut:
- Di Konsol Google Cloud, buka halaman Log Explorer:
- Di jendela kueri, ketik:
LOG_ID("run.googleapis.com%2Fstdout") severity=DEBUG - Klik Run query.
Hasil kueri menampilkan log dengan perintah dan respons Vertex AI, termasuk "peringkat keamanan" yang dapat digunakan untuk memantau praktik keamanan
15. (Opsional) Membersihkan
Meskipun Cloud Run tidak mengenakan biaya saat layanannya tidak digunakan, Anda mungkin tetap ditagih atas penyimpanan image container di Artifact Registry. Anda dapat menghapus project Cloud untuk menghindari tagihan. Menghapus project Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
Jika Anda ingin, hapus project:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
Anda juga dapat menghapus resource yang tidak diperlukan dari disk cloudshell. Anda dapat:
- Hapus direktori project codelab:
rm -rf ~/codelab-genai - Hapus semua paket go yang mungkin tidak Anda perlukan lagi:
cd ~ go clean -modcache - Peringatan! Tindakan ini tidak dapat diurungkan. Jika ingin menghapus semua yang ada di Cloud Shell untuk mengosongkan ruang penyimpanan, Anda dapat menghapus seluruh direktori beranda. Berhati-hatilah agar semua yang ingin Anda simpan sudah disimpan di tempat lain.
sudo rm -rf $HOME
16. Selamat
Dalam lab ini, Anda telah menulis aplikasi web dan mengonfigurasi Cloud Run untuk otomatis men-deploy aplikasi Anda saat perubahan dilakukan pada kode sumber aplikasi Anda. Kemudian, Anda mengubah aplikasi dan men-deploy-nya lagi.
Jika Anda menikmati lab ini, Anda dapat mencobanya lagi dalam bahasa atau framework coding lain:
Jika Anda tertarik untuk disertakan dalam studi riset pengalaman pengguna (UX) untuk meningkatkan kualitas produk yang Anda gunakan hari ini, daftar di sini.
Berikut beberapa opsi untuk melanjutkan pembelajaran Anda:
- Dokumen: Gunakan Genkit sebagai abstraksi model fleksibel yang memudahkan integrasi API model apa pun dan penggunaan model yang dikelola komunitas.
- Codelab: Cara men-deploy aplikasi chat yang didukung Gemini di Cloud Run
- Cara menggunakan panggilan fungsi Gemini dengan Cloud Run
- Workshop on-demand: Pengaktifan Google Kubernetes Engine
- Cara menggunakan Cloud Run Jobs Video Intelligence API untuk memproses Video adegan demi adegan