arrow_back

Pipeline Google Kubernetes Engine menggunakan Cloud Build

Login Gabung
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Pipeline Google Kubernetes Engine menggunakan Cloud Build

Lab 1 jam 30 menit universal_currency_alt 5 Kredit show_chart Menengah
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP1077

Lab Mandiri Google Cloud

Ringkasan

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

Alur CI/CD

Untuk lab ini, Anda akan membuat 2 repositori Git:

  • app repository: berisi kode sumber dari aplikasi itu sendiri
  • env repository: berisi manifes untuk Deployment Kubernetes

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

App repository dan env repository disimpan secara terpisah karena keduanya memiliki siklus proses dan penggunaan yang berbeda. Pengguna utama app repository adalah manusia asli dan repositori ini dikhususkan untuk aplikasi tertentu. Pengguna utama env repository adalah sistem otomatis (seperti Cloud Build), dan repositori ini mungkin digunakan bersama oleh beberapa aplikasi. Env repository dapat memiliki beberapa cabang yang masing-masing dipetakan ke lingkungan tertentu (Anda hanya menggunakan produksi dalam lab ini) dan mereferensikan image container tertentu, sedangkan app repository tidak demikian.

Setelah menyelesaikan lab ini, Anda memiliki sistem tempat 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 env repository.
  • 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 tugas berikut:

  • Membuat cluster Kubernetes Engine
  • Membuat Cloud Source Repositories
  • Memicu Cloud Build dari Cloud Source Repositories
  • 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 Mulai 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 praktik ini dapat Anda gunakan untuk melakukan sendiri 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 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: Jika Anda sudah memiliki project atau akun pribadi Google Cloud, jangan menggunakannya untuk lab ini agar terhindar dari tagihan ekstra pada akun Anda.

Cara memulai lab dan login ke Google Cloud Console

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan berikut ini:

    • Tombol Open Google Console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Console. Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Login.

    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 dari panel Lab Details dan tempel ke dialog Sign in. Klik Next.

  4. Salin Password dari panel Lab Details dan tempel ke dialog Welcome. Klik Next.

    Penting: Anda harus menggunakan kredensial dari panel sebelah kiri. Jangan menggunakan kredensial Google Cloud Skills Boost. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
  5. Klik halaman berikutnya:

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

Setelah beberapa saat, Cloud Console akan terbuka di tab ini.

Catatan: Anda dapat melihat menu dengan daftar Produk dan Layanan Google Cloud dengan mengklik Menu navigasi di kiri atas. Ikon menu navigasi

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.

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

Project Cloud Platform Anda dalam sesi ini disetel ke YOUR_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.

  2. Output Anda sekarang akan terlihat seperti ini:

Output:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net Untuk menyetel akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (Opsional) Anda dapat menampilkan daftar project ID dengan perintah ini:
gcloud config list project

Output:

[core] project = <project_ID>

Contoh output:

[core] project = qwiklabs-gcp-44776a13dea667a6 Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.

Tugas 1. Memulai Lab Anda

  1. Di Cloud Shell, tetapkan 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

Pada tugas berikutnya, Anda akan menyiapkan Project Google Cloud untuk digunakan dengan mengaktifkan API yang diperlukan, memulai konfigurasi git di Cloud Shell, dan mendownload kode contoh yang nantinya digunakan dalam lab.

  1. Jalankan perintah berikut untuk mengaktifkan API pada GKE, Cloud Build, Cloud Source Repositories, dan Container Analysis:
gcloud services enable container.googleapis.com \ cloudbuild.googleapis.com \ sourcerepo.googleapis.com \ containeranalysis.googleapis.com
  1. Buat repositori Docker Artifact Registry yang dinamai my-repository di region untuk menyimpan image container:
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. Jika Anda belum pernah menggunakan Git di Cloud Shell, konfigurasi Git dengan nama dan alamat email Anda. Git akan menggunakan keduanya untuk mengidentifikasi Anda sebagai penulis commit yang akan Anda buat di Cloud Shell (jika tidak memiliki akun github, Anda dapat mengisinya dengan informasi Anda saat ini. Akun tidak diperlukan untuk lab ini):
git config --global user.email "you@example.com" git config --global user.name "Your Name"

Klik Check my progress untuk memverifikasi tujuan. Mengaktifkan layanan, membuat artifact registry dan cluster GKE

Tugas 2. Menghapus repositori Git di Cloud Source Repositories

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

  1. Di Cloud Shell, jalankan perintah berikut untuk membuat dua repositori Git:
gcloud source repos create hello-cloudbuild-app gcloud source repos create hello-cloudbuild-env
  1. Clone kode contoh dari GitHub:
cd ~ git clone https://github.com/GoogleCloudPlatform/gke-gitops-tutorial-cloudbuild hello-cloudbuild-app
  1. Konfigurasi Cloud Source Repositories 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 remote add google "https://source.developers.google.com/p/${PROJECT_ID}/r/hello-cloudbuild-app"

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)

Klik Check my progress untuk memverifikasi tujuan. Membuat repositori Git

Tugas 3. Membuat image container dengan Cloud Build

Kode yang Anda clone sudah berisi Dockerfile berikut.

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 memuat image container menggunakan Cloud Build 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 ini.

  1. Setelah build selesai, di Konsol Cloud, buka Artifact Registry > Repositories untuk memastikan image container baru Anda benar-benar tersedia di Artifact Registry. Klik my-repository.

Artifact Registry

Klik Check my progress untuk memverifikasi tujuan. Membuat image container dengan Cloud Build

Tugas 4. Membuat pipeline Continuous Integration (CI)

Dalam tugas ini, Anda akan mengonfigurasi Cloud Build untuk otomatis menjalankan pengujian unit kecil, membangun image container, lalu mengirimnya ke Artifact Registry. Mengirim commit baru ke Cloud Source Repositories akan otomatis memicu pipeline ini. File cloudbuild.yaml yang sudah disertakan dalam kode adalah konfigurasi pipeline.

Arsitektur

  1. Di Konsol Cloud, buka Cloud Build > Triggers.
  2. Klik Create Trigger
  3. Di kolom Name, ketik hello-cloudbuild.
  4. Di bagian Event, pilih Push to a branch.
  5. Di bagian Source, pilih hello-cloudbuild-app sebagai Repository dan .* (cabang apa pun) sebagai Branch.
  6. Di bagian Build configuration, pilih Cloud Build configuration file.
  7. Di kolom Cloud Build configuration file location, ketik cloudbuild.yaml setelah /.
  8. Klik Create.

Create Trigger

Setelah pemicu dibuat, kembali ke Cloud Shell. Kini Anda perlu mengirim kode aplikasi ke Cloud Source Repositories 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 Konsol Cloud, buka Cloud Build > Dashboard.

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

Dashboard

Klik Check my progress untuk memverifikasi tujuan. Membuat Pipeline Continuous Integration (CI)

Tugas 5. Membuat Lingkungan Pengujian dan pipeline CD

Cloud Build juga digunakan 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 Kubernetes Engine Developer serta Identity and Access Management.

  1. Di Cloud Shell, jalankan perintah berikut:
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 memulai 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. Repositori tersebut masih kosong.

  1. Di Cloud Shell, jalankan perintah berikut:
cd ~ gcloud source repos clone hello-cloudbuild-env cd ~/hello-cloudbuild-env git checkout -b production
  1. Selanjutnya, Anda perlu menyalin file cloudbuild-delivery.yaml yang tersedia di repositori hello-cloudbuild-app dan meng-commit perubahan:
cd ~/hello-cloudbuild-env cp ~/hello-cloudbuild-app/cloudbuild-delivery.yaml ~/hello-cloudbuild-env/cloudbuild.yaml git add . git commit -m "Create cloudbuild.yaml for deployment"

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

  • Cloud Build menerapkan manifes di cluster GKE.
  • Jika berhasil, Cloud Build menyalin manifes di cabang produksi.
  1. Buat cabang kandidat dan kirim cabang agar tersedia di Cloud Source Repositories:
git checkout -b candidate git push origin production git push origin candidate
  1. Berikan peran Source Repository Writer IAM ke akun layanan Cloud Build untuk repositori hello-cloudbuild-env:
PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} \ --format='get(projectNumber)')" cat >/tmp/hello-cloudbuild-env-policy.yaml <<EOF bindings: - members: - serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com role: roles/source.writer EOF gcloud source repos set-iam-policy \ hello-cloudbuild-env /tmp/hello-cloudbuild-env-policy.yaml

Membuat pemicu untuk pipeline continuous delivery

  1. Di Konsol Cloud, buka Cloud Build > Triggers.
  2. Klik Create Trigger.
  3. Di kolom Name, ketik hello-cloudbuild-deploy.
  4. Di bagian Event, pilih Push to a branch.
  5. Di bagian Source, pilih hello-cloudbuild-env sebagai Repository dan ^candidate$ sebagai Branch.
  6. Di bagian Build configuration, pilih Cloud Build configuration file.
  7. Di kolom Cloud Build configuration file location, ketik cloudbuild.yaml setelah /.
  8. Klik Create.

Create Trigger

Ubah pipeline continuous integration untuk memicu pipeline continuous delivery.

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

  1. Salin file cloudbuild.yaml versi yang diperluas untuk app repository:
cd ~/hello-cloudbuild-app cp cloudbuild-trigger-cd.yaml cloudbuild.yaml

cloudbuild-trigger-cd.yaml adalah file cloudbuild.yaml versi yang diperluas. File tersebut menambahkan langkah-langkah di bawah: menghasilkan manifes Kubernetes baru dan memicu pipeline continuous delivery.

Pipeline ini menggunakan sed simpel untuk merender template manifes. Pada kenyataannya, Anda akan mendapatkan manfaat dari penggunaan alat khusus seperti kustomize atau skaffold. Alat ini memberi Anda lebih banyak kontrol terhadap proses rendering template manifes.
  1. Lakukan commit pada modifikasi dan kirimkan ke Cloud Source Repositories:
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 Check my progress untuk memverifikasi tujuan. Membuat Lingkungan Pengujian dan Pipeline CD

Tugas 6. Meninjau Pipeline Cloud Build

  1. Di Konsol Cloud, buka Cloud Build > Dashboard.
  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.

Build History

  1. Kembali ke Dashboard utama.
  2. Anda akan melihat build yang sedang berjalan atau baru saja selesai untuk repositori hello-cloudbuild-env. Anda dapat mengklik build untuk mengikuti eksekusinya dan memeriksa log-nya.

Cloud Build Dashboard

Tugas 7. Menguji pipeline yang lengkap

Pipeline CI/CD lengkap kini dikonfigurasi. Uji pipeline secara end-to-end.

  1. Di Konsol Cloud, buka Kubernetes Engine > Gateways, Services & Ingress.

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 dimulai. Klik Refresh untuk memperbarui halaman jika diperlukan.

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 Cloud Source Repositories:
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 Hellow Cloud Build!

Tugas 8. Menguji rollback

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

  1. Di Konsol Cloud, buka Cloud Build > Dashboard.
  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: 26 Januari 2024

Lab Terakhir Diuji: 19 Januari 2024

Hak cipta 2024 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.