arrow_back

Pipeline Google Kubernetes Engine menggunakan Cloud Build

Login Gabung
Dapatkan akses ke 700+ lab dan kursus

Pipeline Google Kubernetes Engine menggunakan Cloud Build

Lab 1 jam 30 menit universal_currency_alt 5 Kredit show_chart Menengah
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Dapatkan akses ke 700+ lab dan kursus

GSP1077

Logo lab mandiri Google Cloud

Ringkasan

Cloud Build adalah layanan yang menjalankan build Anda di Google Cloud. Cloud Build dapat mengimpor kode sumber, menjalankan build, dan lainnya.

Di lab ini, Anda akan membuat pipeline continuous integration dan continuous deployment (CI/CD) yang otomatis membangun image container dari kode yang di-commit, menyimpan image di Artifact Registry, dan memperbarui manifes Kubernetes di repositori Git, serta men-deploy aplikasi ke Google Kubernetes Engine menggunakan manifes tersebut.

Alur CI/CD

Untuk lab ini, Anda membuat 2 repositori Git:

  • app: berisi kode sumber aplikasi
  • env: berisi manifes deployment Kubernetes

Saat Anda mengirim perubahan pada app repository, pipeline Cloud Build akan menjalankan pengujian, membangun image container, dan mengirim perubahan tersebut ke Artifact Registry. Setelah mengirim image, Cloud Build memperbarui manifes deployment dan mengirimnya ke repositori env. Tindakan ini memicu pipeline Cloud Build lain yang menerapkan manifes ke cluster GKE dan, jika berhasil, menyimpan manifes di cabang repositori env lain.

Repository app dan env disimpan secara terpisah karena keduanya memiliki siklus proses dan penggunaan yang berbeda. Repositori app dikhususkan untuk aplikasi tertentu, dan biasanya digunakan oleh manusia. Repositori env dapat digunakan bersama oleh beberapa aplikasi dan digunakan oleh sistem otomatis (seperti Cloud Build). Repositori env dapat memiliki beberapa cabang, yang masing-masing dipetakan ke lingkungan tertentu dan mereferensikan image container tertentu, sedangkan repositori app tidak demikian.

Setelah menyelesaikan lab ini, sistem Anda dapat dengan mudah:

  • Membedakan antara deployment yang gagal dan berhasil dengan melihat histori Cloud Build.
  • Mengakses manifes yang saat ini digunakan dengan melihat cabang produksi dari repositori env.
  • Melakukan rollback ke versi sebelumnya dengan mengeksekusi kembali build Cloud Build yang sesuai.

Alur Git Ops

Tujuan

Di lab ini, Anda akan mempelajari cara melakukan hal-hal berikut:

  • Membuat cluster Kubernetes Engine.
  • Membuat repositori GitHub.
  • Memicu Cloud Build dari repositori GitHub.
  • Mengotomatiskan pengujian dan memublikasikan image container yang dapat di-deploy melalui Cloud Build.
  • Mengelola resource yang di-deploy di cluster Kubernetes Engine melalui Cloud Build.

Penyiapan dan persyaratan

Sebelum mengklik tombol Start Lab

Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.

Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.

Untuk menyelesaikan lab ini, Anda memerlukan:

  • Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
  • Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.

Cara memulai lab dan login ke Google Cloud Console

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran. Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:

    • Tombol Open Google Cloud console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).

    Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.

    Tips: Atur tab di jendela terpisah secara berdampingan.

    Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
  3. Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.

    {{{user_0.username | "Username"}}}

    Anda juga dapat menemukan Username di panel Lab Details.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. Klik Next.

    Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
  7. Klik halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan mendaftar uji coba gratis.

Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.

Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search. Ikon Navigation menu dan kolom Search

Mengaktifkan Cloud Shell

Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas Konsol Google Cloud.

  2. Klik jendela berikut:

    • Lanjutkan melalui jendela informasi Cloud Shell.
    • Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.

Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:

Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

Output:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Untuk menetapkan akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project

Output:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.

Tugas 1. Memulai lab Anda

Dalam tugas ini, Anda akan menyiapkan lingkungan:

  • Mengimpor project ID dan nomor project Anda sebagai variabel
  • Mengaktifkan API untuk GKE, Cloud Build, Secret Manager, dan Artifact Analysis
  • Membuat repositori Docker Artifact Registry
  • Membuat cluster GKE untuk men-deploy aplikasi contoh lab ini
  1. Di Cloud Shell, jalankan perintah berikut untuk menetapkan project ID dan nomor project Anda. Simpan keduanya sebagai variabel PROJECT_ID dan PROJECT_NUMBER:
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') export REGION={{{ project_0.default_region }}} gcloud config set compute/region $REGION

Selanjutnya, Anda akan menyiapkan Project Google Cloud untuk digunakan dengan mengaktifkan API yang diperlukan, melakukan inisialisasi konfigurasi git di Cloud Shell, dan mendownload kode contoh yang nantinya digunakan dalam lab.

  1. Jalankan perintah berikut untuk mengaktifkan API untuk GKE, Cloud Build, Secret Manager, dan Artifact Analysis:
gcloud services enable container.googleapis.com \ cloudbuild.googleapis.com \ secretmanager.googleapis.com \ containeranalysis.googleapis.com
  1. Buat repositori Docker Artifact Registry dengan nama my-repository dalam region untuk menyimpan image container Anda:
gcloud artifacts repositories create my-repository \ --repository-format=docker \ --location=$REGION
  1. Buat cluster GKE untuk men-deploy aplikasi contoh lab ini:
gcloud container clusters create hello-cloudbuild --num-nodes 1 --region $REGION
  1. Jalankan perintah berikut untuk mengonfigurasi Git dan GitHub di Cloud Shell: curl -sS https://webi.sh/gh | sh gh auth login gh api user -q ".login" GITHUB_USERNAME=$(gh api user -q ".login") git config --global user.name "${GITHUB_USERNAME}" git config --global user.email "${USER_EMAIL}" echo ${GITHUB_USERNAME} echo ${USER_EMAIL}

Tekan ENTER untuk menerima opsi default. Baca petunjuk di alat CLI untuk Login GitHub dengan browser web. Jika Anda berhasil login, nama pengguna GitHub Anda akan ditampilkan.

Klik Periksa progres saya untuk memverifikasi tujuan. Mengaktifkan layanan, membuat artifact registry dan cluster GKE

Tugas 2. Membuat repositori Git di repositori GitHub

GitHub adalah platform tempat Anda dapat menyimpan, berbagi, dan bekerja sama dengan orang lain untuk menulis kode. Git adalah sebuah sistem kontrol versi. Saat mengupload file ke GitHub, Anda menyimpannya di "repositori Git". Artinya, saat Anda membuat perubahan (atau "commit") pada file Anda di GitHub, Git otomatis mulai melacak dan mengelola perubahan Anda. Untuk mengetahui detail selengkapnya, baca About GitHub and Git.

Dalam tugas ini, Anda membuat dua repositori Git (hello-cloudbuild-app dan hello-cloudbuild-env) serta melakukan inisialisasi hello-cloudbuild-app dengan beberapa kode contoh.

  1. Di Cloud Shell, jalankan perintah berikut untuk membuat dua repositori Git:
gh repo create hello-cloudbuild-app --private gh repo create hello-cloudbuild-env --private
  1. Download kode contoh dari Cloud Storage:
cd ~ mkdir hello-cloudbuild-app gcloud storage cp -r gs://spls/gsp1077/gke-gitops-tutorial-cloudbuild/* hello-cloudbuild-app
  1. Mengonfigurasi repositori GitHub sebagai jarak jauh:
cd ~/hello-cloudbuild-app export REGION={{{project_0.default_region | "REGION"}}} sed -i "s/us-central1/$REGION/g" cloudbuild.yaml sed -i "s/us-central1/$REGION/g" cloudbuild-delivery.yaml sed -i "s/us-central1/$REGION/g" cloudbuild-trigger-cd.yaml sed -i "s/us-central1/$REGION/g" kubernetes.yaml.tpl PROJECT_ID=$(gcloud config get-value project) git init git config credential.helper gcloud.sh git remote add google https://github.com/${GITHUB_USERNAME}/hello-cloudbuild-app git branch -m master git add . && git commit -m "initial commit"

Kode yang baru saja Anda clone berisi aplikasi "Hello World" sederhana:

from flask import Flask app = Flask('hello-cloudbuild') @app.route('/') def hello(): return "Hello World!\n" if __name__ == '__main__': app.run(host = '0.0.0.0', port = 8080)

Tugas 3. Membuat image container dengan Cloud Build

Dalam tugas ini, dengan Dockerfile yang sudah ada, Anda akan menggunakan Cloud Build untuk membuat dan menyimpan image container.

Kode yang Anda clone sebelumnya berisi file Docker:

FROM python:3.7-slim RUN pip install flask WORKDIR /app COPY app.py /app/app.py ENTRYPOINT ["python"] CMD ["/app/app.py"]

Dengan Dockerfile ini, Anda dapat menggunakan Cloud Build untuk membuat image container dan menyimpannya di Artifact Registry.

  1. Di Cloud Shell, buat build Cloud Build berdasarkan commit terbaru dengan perintah berikut:
cd ~/hello-cloudbuild-app COMMIT_ID="$(git rev-parse --short=7 HEAD)" gcloud builds submit --tag="${REGION}-docker.pkg.dev/${PROJECT_ID}/my-repository/hello-cloudbuild:${COMMIT_ID}" .

Cloud Build mengalirkan log yang dihasilkan oleh pembuatan image container ke terminal saat Anda menjalankan perintah tersebut.

  1. Setelah build selesai, di kolom judul Konsol Google Cloud, masukkan Artifact Registry di kolom Search, lalu klik Artifact Registry di hasil penelusuran. Pastikan image container baru Anda memang benar tersedia di Artifact Registry. Klik my-repository untuk melihat image hello-cloudbuild di daftar Image.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat image container dengan Cloud Build

Tugas 4. Membuat pipeline Continuous Integration (CI)

Dalam tugas ini, Anda mengonfigurasi Cloud Build untuk otomatis menjalankan pengujian unit kecil, membangun image container, lalu mengirimnya ke Artifact Registry. Mengirim commit baru ke repositori GitHub akan memicu pipeline ini secara otomatis.

Arsitektur

File cloudbuild.yaml yang sudah disertakan dalam kode adalah konfigurasi pipeline.

  1. Di kolom judul konsol, masukkan Cloud Build triggers di kolom Search, lalu klik Triggers, Cloud Build di hasil penelusuran.

  2. Klik Create Trigger.

  3. Untuk Name, ketik hello-cloudbuild. Tetapkan Region ke

  4. Tetapkan Event ke Push to a branch.

  5. Di bagian Source, untuk Repository, klik Connect new repository.

    a. Pilih GitHub (Cloud Build GitHub App). Klik Continue.

    b. Lakukan autentikasi ke repositori sumber Anda dengan nama pengguna dan sandi Anda.

    c. Jika Anda mendapatkan pop-up "The GitHub App is not installed on any of your repositories", ikuti langkah-langkah berikut.

    i. Klik **Install Google Cloud Build**. Instal Aplikasi GitHub Cloud Build di akun pribadi Anda. Izinkan penginstalan menggunakan akun GitHub Anda. ii. Di bagian **Repository access**. Pilih **Only select repositories**. Klik menu **Select the repositories**, lalu pilih `${GITHUB_USERNAME}/hello-cloudbuild-app` dan `${GITHUB_USERNAME}/hello-cloudbuild-env`. iii. Klik **Install**.

    d. Pilih ${GITHUB_USERNAME}/hello-cloudbuild-app untuk Repository. Klik OK.

    e. Terima I understand that GitHub content for the selected repositories....

    f. Klik Connect.

  6. Jika Aplikasi GitHub Cloud Build sudah terinstal di akun Anda, Anda mendapatkan opsi Edit Repositories (mengedit repositori) di GitHub.

    a. Di bagian Repository access, pilih Only select repositories. Klik menu Select repositories dan pilih repositori **$${GITHUB_USERNAME}/hello-cloudbuild-app** dan **$${GITHUB_USERNAME}/hello-cloudbuild-env**.

    b. Klik Save.

  7. Di halaman Trigger, dari Repository list, klik ${GITHUB_USERNAME}/hello-cloudbuild-app.

  8. Untuk Branch, ketik .* (any branch).

  9. Di bagian Configuration, tetapkan Type ke Cloud Build configuration file.

  10. Di kolom Location, ketik cloudbuild.yaml setelah /.

  11. Tetapkan Service account ke Compute Engine default service account.

  12. Klik Create.

Setelah pemicu dibuat, kembali ke Cloud Shell. Kini Anda perlu mengirim kode aplikasi ke repositori GitHub untuk memicu pipeline CI di Cloud Build.

  1. Untuk memulai pemicu ini, jalankan perintah berikut:
cd ~/hello-cloudbuild-app git add . git commit -m "Type Any Commit Message here" git push google master
  1. Di panel kiri, klik Dashboard.

  2. Anda akan melihat build yang sedang berjalan atau baru saja selesai. Anda dapat mengklik build untuk mengikuti eksekusinya dan memeriksa log-nya.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat Pipeline Continuous Integration (CI)

Tugas 5. Mengakses GitHub dari build melalui kunci SSH

Pada langkah ini, gunakan Secret Manager dengan Cloud Build untuk mengakses repositori GitHub pribadi.

Membuat kunci SSH

  1. Di Cloud Shell, pindah ke direktori beranda.

    cd ~
  2. Buat direktori baru bernama workingdir dan buka direktori tersebut:

    mkdir workingdir cd workingdir
  3. Buat kunci SSH GitHub baru, ganti [your-github-email] dengan alamat email GitHub pribadi Anda:

    ssh-keygen -t rsa -b 4096 -N '' -f id_github -C [your-github-email]

Langkah ini akan membuat dua file, id_github dan id_github.pub.

  1. Di panel tindakan Cloud Shell, klik More (Ikon Lainnya), lalu Download > Toggle file browser, dan pilih dropdown dan folder workingdir untuk mendownload file id_github ke komputer lokal Anda.

Menyimpan kunci SSH pribadi di Secret Manager

  1. Di kolom judul konsol, masukkan Secret Manager, lalu klik Secret Manager di hasil penelusuran.

  2. Klik Create Secret.

  3. Tetapkan Name ke ssh_key_secret.

  4. Tetapkan Secret value ke Upload dan upload file id_github Anda.

  5. Biarkan setelan lain tetap default.

  6. Klik Create secret.

Tindakan ini akan mengupload file id_github Anda ke Secret Manager.

Menambahkan kunci SSH publik ke kunci deployment repositori pribadi Anda

  1. Login ke akun GitHub pribadi Anda

  2. Di pojok kanan atas, klik foto profil Anda, lalu klik Your profile.

  3. Di halaman profil Anda, klik Repositories, lalu klik repositori hello-cloudbuild-env.

  4. Dari repositori Anda, klik Settings.

  5. Di panel kiri, klik Deploy Keys, lalu klik Add deploy key.

  6. Berikan judul SSH_KEY, tempel kunci SSH publik Anda dari workingdir/id_github.pub dari Cloud Shell.

  7. Pilih Allow write access agar kunci ini memiliki akses tulis ke repositori. Kunci deployment dengan akses tulis memungkinkan deployment melakukan push ke repositori.

  8. Klik Add key.

  9. Hapus kunci SSH dari disk Anda:

    rm id_github*

Memberikan izin akun layanan untuk mengakses Secret Manager

Masukkan perintah berikut untuk memberi akun layanan akses ke Secret Manager:

gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role=roles/secretmanager.secretAccessor

Klik Periksa progres saya untuk memverifikasi tujuan. Mengakses GitHub dari build melalui kunci SSH

Tugas 6. Membuat lingkungan pengujian dan pipeline CD

Anda juga dapat menggunakan Cloud Build untuk pipeline continuous delivery. Pipeline dijalankan setiap kali commit dikirim ke cabang kandidat repositori hello-cloudbuild-env. Pipeline menerapkan manifes versi baru ke cluster Kubernetes dan, jika berhasil, menyalin manifes ke cabang produksi. Proses ini memiliki properti berikut:

  • Cabang kandidat adalah histori upaya deployment.
  • Cabang produksi adalah histori deployment yang berhasil.
  • Anda dapat melihat deployment yang berhasil dan gagal di Cloud Build.
  • Anda dapat melakukan rollback ke deployment sebelumnya dengan mengeksekusi ulang build yang sesuai di Cloud Build. Rollback juga memperbarui cabang produksi agar mencerminkan histori deployment secara akurat.

Selanjutnya, Anda akan memodifikasi pipeline continuous integration untuk memperbarui cabang kandidat repositori hello-cloudbuild-env, yang memicu pipeline continuous delivery.

Memberikan akses Cloud Build ke GKE

Untuk mend-deploy aplikasi di cluster Kubernetes, Cloud Build memerlukan peran Identity and Access Management berupa Kubernetes Engine Developer.

  1. Di Cloud Shell, jalankan perintah berikut:
cd ~ PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')" gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \ --role=roles/container.developer

Anda harus melakukan inisialisasi repositori hello-cloudbuild-env dengan dua cabang (produksi dan kandidat) serta file konfigurasi Cloud Build yang menjelaskan proses deployment.

Langkah pertamanya adalah meng-clone repositori hello-cloudbuild-env dan membuat cabang produksi, yang saat ini masih kosong.

  1. Di Cloud Shell, download kode contoh dari Cloud Storage:
mkdir hello-cloudbuild-env gcloud storage cp -r gs://spls/gsp1077/gke-gitops-tutorial-cloudbuild/* hello-cloudbuild-env cd hello-cloudbuild-env export REGION={{{project_0.default_region | "REGION"}}} sed -i "s/us-central1/$REGION/g" cloudbuild.yaml sed -i "s/us-central1/$REGION/g" cloudbuild-delivery.yaml sed -i "s/us-central1/$REGION/g" cloudbuild-trigger-cd.yaml sed -i "s/us-central1/$REGION/g" kubernetes.yaml.tpl
  1. Agar Cloud Build dapat terhubung ke GitHub, Anda harus menambahkan kunci SSH publik ke file known_hosts di lingkungan build Cloud Build. Di direktori hello-cloudbuild-env, buat file bernama known_hosts.github, tambahkan kunci SSH publik ke file ini, dan berikan izin yang diperlukan ke file tersebut:
cd ~/hello-cloudbuild-env ssh-keyscan -t rsa github.com > known_hosts.github chmod +x known_hosts.github git init git config credential.helper gcloud.sh git remote add google https://github.com/${GITHUB_USERNAME}/hello-cloudbuild-env git branch -m master git add . && git commit -m "initial commit" git push google master cd ~/hello-cloudbuild-env git checkout -b production
  1. Selanjutnya, ganti file cloudbuild.yaml yang tersedia di repositori hello-cloudbuild-env dan lakukan commit pada perubahan tersebut:
cd ~/hello-cloudbuild-env
  1. Ganti cloudbuild.yaml di repositori hello-cloudbuild-env dengan kode di bawah ini. Ganti {GITHUB-USERNAME} dengan nama pengguna GitHub pribadi Anda:
# Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # [START cloudbuild-delivery] steps: # This step deploys the new version of our container image # in the hello-cloudbuild Kubernetes Engine cluster. - name: 'gcr.io/cloud-builders/kubectl' id: Deploy args: - 'apply' - '-f' - 'kubernetes.yaml' env: - 'CLOUDSDK_COMPUTE_REGION={{{ project_0.default_region }}}' - 'CLOUDSDK_CONTAINER_CLUSTER=hello-cloudbuild' # Access the id_github file from Secret Manager, and setup SSH - name: 'gcr.io/cloud-builders/git' secretEnv: ['SSH_KEY'] entrypoint: 'bash' args: - -c - | echo "$$SSH_KEY" >> /root/.ssh/id_rsa chmod 400 /root/.ssh/id_rsa cp known_hosts.github /root/.ssh/known_hosts volumes: - name: 'ssh' path: /root/.ssh # Clone the repository - name: 'gcr.io/cloud-builders/git' args: - clone - --recurse-submodules - git@github.com:${GITHUB-USERNAME}/hello-cloudbuild-env.git volumes: - name: ssh path: /root/.ssh # This step copies the applied manifest to the production branch # The COMMIT_SHA variable is automatically # replaced by Cloud Build. - name: 'gcr.io/cloud-builders/gcloud' id: Copy to production branch entrypoint: /bin/sh args: - '-c' - | set -x && \ cd hello-cloudbuild-env && \ git config user.email $(gcloud auth list --filter=status:ACTIVE --format='value(account)') sed "s/GOOGLE_CLOUD_PROJECT/${PROJECT_ID}/g" kubernetes.yaml.tpl | \ git fetch origin production && \ # Switch to the production branch and copy the kubernetes.yaml file from the candidate branch git checkout production && \ git checkout $COMMIT_SHA kubernetes.yaml && \ # Commit the kubernetes.yaml file with a descriptive commit message git commit -m "Manifest from commit $COMMIT_SHA $(git log --format=%B -n 1 $COMMIT_SHA)" && \ # Push the changes back to Cloud Source Repository git push origin production volumes: - name: ssh path: /root/.ssh availableSecrets: secretManager: - versionName: projects/${PROJECT_NUMBER}/secrets/ssh_key_secret/versions/1 env: 'SSH_KEY' # [END cloudbuild-delivery] options: logging: CLOUD_LOGGING_ONLY git add . git commit -m "Create cloudbuild.yaml for deployment"

File cloudbuild.yaml menjelaskan proses deployment untuk dijalankan di Cloud Build. Proses ini memiliki dua langkah:

  • Cloud Build menerapkan manifes ke cluster GKE.
  • Jika berhasil, Cloud Build menyalin manifes di cabang produksi.
  1. Buat cabang kandidat lalu kirim kedua cabang agar tersedia di Repositori GitHub:
git checkout -b candidate git push google production git push google candidate

Membuat pemicu untuk pipeline continuous delivery

  1. Di kolom judul konsol, masukkan Cloud Build Triggers, lalu klik Triggers, Cloud Build.

  2. Klik Create Trigger.

  3. Tetapkan Name ke hello-cloudbuild-deploy. Tetapkan Region ke

  4. Di bagian Event, pilih Push to a branch.

  5. Di bagian Source, untuk Repository, klik Connect new repository.

    a. Pilih GitHub (Cloud Build GitHub App). Klik Continue.

    b. Lakukan autentikasi ke repositori sumber Anda dengan nama pengguna dan sandi GitHub Anda.

    c. Pilih repositori ${GITHUB_USERNAME}/hello-cloudbuild-env. Klik Oke.

    d. Pilih I understand that GitHub content for the selected repositories..

    e. Klik Connect.

  6. Di bagian Repository, pilih ${GITHUB_USERNAME}/hello-cloudbuild-env.

  7. Di bagian Source, pilih ^candidate$ sebagai Branch.

  8. Di bagian Build configuration, pilih Cloud Build configuration file.

  9. Di kolom Cloud Build configuration file location, ketik cloudbuild.yaml setelah /.

  10. Tetapkan Service account ke akun layanan default Compute Engine.

  11. Klik Create.

  12. Di direktori hello-cloudbuild-app, buat file bernama known_hosts.github, tambahkan kunci SSH publik ke file ini, dan berikan izin yang diperlukan ke file tersebut:

cd ~/hello-cloudbuild-app ssh-keyscan -t rsa github.com > known_hosts.github chmod +x known_hosts.github git add . git commit -m "Adding known_host file." git push google master

Mengubah pipeline continuous integration untuk memicu pipeline continuous delivery

Selanjutnya, tambahkan beberapa langkah ke pipeline continuous integration yang menghasilkan versi baru dari manifes Kubernetes dan kirim ke repositori hello-cloudbuild-env untuk memicu pipeline continuous delivery.

  • Salin versi file cloudbuild.yaml yang lebih panjang untuk repositori app:
cd ~/hello-cloudbuild-app

File cloudbuild.yaml menambahkan langkah-langkah yang menghasilkan manifes Kubernetes yang baru dan memicu pipeline continuous delivery.

Mengonfigurasi build

  1. Ganti cloudbuild.yaml di repositori hello-cloudbuild-app dengan kode di bawah ini. Ganti {GITHUB_USERNAME} dengan nama pengguna GitHub Anda.
# Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # [START cloudbuild] steps: # This step runs the unit tests on the app - name: 'python:3.7-slim' id: Test entrypoint: /bin/sh args: - -c - 'pip install flask && python test_app.py -v' # This step builds the container image. - name: 'gcr.io/cloud-builders/docker' id: Build args: - 'build' - '-t' - '{{{ project_0.default_region }}}-docker.pkg.dev/$PROJECT_ID/my-repository/hello-cloudbuild:$SHORT_SHA' - '.' # This step pushes the image to Artifact Registry # The PROJECT_ID and SHORT_SHA variables are automatically # replaced by Cloud Build. - name: 'gcr.io/cloud-builders/docker' id: Push args: - 'push' - '{{{ project_0.default_region }}}-docker.pkg.dev/$PROJECT_ID/my-repository/hello-cloudbuild:$SHORT_SHA' # [END cloudbuild] # Access the id_github file from Secret Manager, and setup SSH - name: 'gcr.io/cloud-builders/git' secretEnv: ['SSH_KEY'] entrypoint: 'bash' args: - -c - | echo "$$SSH_KEY" >> /root/.ssh/id_rsa chmod 400 /root/.ssh/id_rsa cp known_hosts.github /root/.ssh/known_hosts volumes: - name: 'ssh' path: /root/.ssh # Clone the repository - name: 'gcr.io/cloud-builders/git' args: - clone - --recurse-submodules - git@github.com:${GITHUB-USERNAME}/hello-cloudbuild-env.git volumes: - name: ssh path: /root/.ssh # [START cloudbuild-trigger-cd] # This step clones the hello-cloudbuild-env repository - name: 'gcr.io/cloud-builders/gcloud' id: Change directory entrypoint: /bin/sh args: - '-c' - | cd hello-cloudbuild-env && \ git checkout candidate && \ git config user.email $(gcloud auth list --filter=status:ACTIVE --format='value(account)') volumes: - name: ssh path: /root/.ssh # This step generates the new manifest - name: 'gcr.io/cloud-builders/gcloud' id: Generate manifest entrypoint: /bin/sh args: - '-c' - | sed "s/GOOGLE_CLOUD_PROJECT/${PROJECT_ID}/g" kubernetes.yaml.tpl | \ sed "s/COMMIT_SHA/${SHORT_SHA}/g" > hello-cloudbuild-env/kubernetes.yaml volumes: - name: ssh path: /root/.ssh # This step pushes the manifest back to hello-cloudbuild-env - name: 'gcr.io/cloud-builders/gcloud' id: Push manifest entrypoint: /bin/sh args: - '-c' - | set -x && \ cd hello-cloudbuild-env && \ git add kubernetes.yaml && \ git commit -m "Deploying image {{{ project_0.default_region }}}-docker.pkg.dev/$PROJECT_ID/my-repository/hello-cloudbuild:${SHORT_SHA} Built from commit ${COMMIT_SHA} of repository hello-cloudbuild-app Author: $(git log --format='%an <%ae>' -n 1 HEAD)" && \ git push origin candidate volumes: - name: ssh path: /root/.ssh availableSecrets: secretManager: - versionName: projects/${PROJECT_NUMBER}/secrets/ssh_key_secret/versions/1 env: 'SSH_KEY' # [END cloudbuild-trigger-cd] options: logging: CLOUD_LOGGING_ONLY Catatan: Pipeline ini menggunakan sed sederhana untuk merender template manifes. Dalam situasi nyata, Anda sebaiknya memanfaatkan alat khusus seperti kustomize atau skaffold karena alat tersebut memberikan kontrol yang lebih besar atas rendering template manifes.
  1. Lakukan commit pada modifikasi dan kirimkan ke Repositori GitHub:
cd ~/hello-cloudbuild-app git add cloudbuild.yaml git commit -m "Trigger CD pipeline" git push google master

Tindakan ini memicu pipeline continuous integration di Cloud Build.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat Lingkungan Pengujian dan Pipeline CD

Tugas 7. Meninjau pipeline Cloud Build

Dalam tugas ini, Anda akan meninjau pipeline Cloud Build di konsol.

  1. Di konsol, masih di halaman Cloud Build, klik Dashboard di panel kiri.
  2. Klik pemicu hello-cloudbuild-app untuk mengikuti eksekusinya dan memeriksa log-nya. Langkah terakhir dari pipeline ini mengirim manifes baru ke repositori hello-cloudbuild-env, yang memicu pipeline continuous delivery.
  3. Kembali ke Dashboard utama.
  4. Seharusnya Anda akan melihat build yang sedang berjalan atau baru saja selesai untuk repositori hello-cloudbuild-env.

Anda dapat mengklik build tersebut untuk mengikuti eksekusinya dan memeriksa log-nya.

Tugas 8. Menguji pipeline yang lengkap

Sekarang Anda telah mengonfigurasi pipeline CI/CD lengkap. Dalam tugas ini, Anda akan melakukan pengujian menyeluruh.

  1. Di konsol, pada Navigation menu (Ikon Navigation menu), klik Kubernetes Engine > Gateways, Services & Ingress > Services.

Seharusnya terdapat layanan tunggal bernama hello-cloudbuild dalam daftar. Layanan ini dibuat oleh build continuous delivery yang baru saja berjalan.

  1. Klik endpoint untuk layanan hello-cloudbuild. Anda akan melihat "Hello World!". Jika tidak ada endpoint, atau jika terjadi error load balancer, Anda mungkin harus menunggu beberapa menit sampai load balancer benar-benar diinisialisasi. Jika perlu, klik Refresh untuk memperbarui halaman.

App 1 Hello World!

  1. Di Cloud Shell, ganti "Hello World" dengan "Hello Cloud Build", di aplikasi dan di pengujian unit:
cd ~/hello-cloudbuild-app sed -i 's/Hello World/Hello Cloud Build/g' app.py sed -i 's/Hello World/Hello Cloud Build/g' test_app.py
  1. Lakukan commit pada perubahan tersebut dan kirim ke repositori GitHub:
git add app.py test_app.py git commit -m "Hello Cloud Build" git push google master
  1. Tindakan ini akan memicu pipeline CI/CD yang lengkap.

Setelah beberapa menit, muat ulang aplikasi di browser. Anda akan melihat "Hello Cloud Build!".

App 2 Hello Cloud Build!

Tugas 9. Menguji rollback

Dalam tugas ini, Anda akan melakukan rollback ke versi aplikasi yang menampilkan "Hello World!".

  1. Di kolom judul konsol, ketik Cloud Build Dashboard di kolom Search, lalu klik Cloud Build di hasil penelusuran. Pastikan Dashboard dipilih di panel kiri.
  2. Klik link View all di bagian Build History untuk repositori hello-cloudbuild-env.
  3. Klik build yang kedua paling baru yang tersedia.
  4. Klik Rebuild.

Layar Rollback berhasil

Setelah build selesai, muat ulang aplikasi di browser. Anda akan melihat "Hello World!" lagi.

App 1 Hello World!

Selamat!

Sekarang Anda dapat menggunakan Cloud Build untuk membuat dan melakukan rollback pada pipeline continuous integration dengan GKE di Google Cloud.

Sertifikasi dan pelatihan Google Cloud

...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.

Manual Terakhir Diperbarui pada 19 Februari 2025

Lab Terakhir Diuji pada 19 Februari 2025

Hak cipta 2025 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Gunakan jendela Samaran atau browser pribadi untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.