Mengembangkan dan men-deploy aplikasi dalam kontainer menggunakan pipeline CI/CD

Last reviewed 2022-11-18 UTC

Panduan deployment ini menjelaskan cara menyiapkan dan menggunakan sistem pengembangan, continuous integration (CI), dan continuous delivery (CD) menggunakan serangkaian alat Google Cloud yang terintegrasi. Anda dapat menggunakan sistem ini untuk mengembangkan dan men-deploy aplikasi ke Google Kubernetes Engine (GKE).

Panduan ini menunjukkan kepada Anda cara membuat arsitektur yang dijelaskan dalam pipeline deployment untuk mengembangkan dan mengirimkan aplikasi dalam container.

Panduan deployment ini ditujukan untuk developer dan operator software. Anda akan memainkan peran berikut saat menyelesaikannya:

  • Pertama, Anda bertindak sebagai operator untuk menyiapkan pipeline CI/CD. Komponen utama dari pipeline ini adalah Cloud Build, Artifact Registry, dan Cloud Deploy.
  • Kemudian, Anda bertindak sebagai developer untuk mengubah aplikasi menggunakan Cloud Code. Saat bertindak sebagai developer, Anda akan melihat pengalaman terintegrasi yang diberikan pipeline ini.
  • Terakhir, Anda bertindak sebagai operator dan melakukan langkah-langkah untuk men-deploy aplikasi ke dalam produksi.

Panduan deployment ini menganggap Anda telah memahami perintah gcloud di Google Cloud dan men-deploy container aplikasi ke GKE.

Arsitektur

Diagram berikut menunjukkan resource yang digunakan dalam panduan deployment ini:

Kembangkan dan deploy sistem dengan Cloud Code, Cloud Build, Artifact Registry, Cloud Deploy, dan GKE

Untuk mengetahui detail tentang komponen yang digunakan dalam arsitektur ini, lihat Pipeline deployment untuk mengembangkan dan mengirimkan aplikasi dalam container.

Tujuan

Sebagai operator, Anda melakukan tindakan berikut:

  • Menyiapkan pipeline CI dan pipeline CD. Penyiapan ini mencakup hal berikut:
    • Menyiapkan perizinan yang diperlukan.
    • Membuat cluster GKE untuk lingkungan staging dan produksi.
    • Membuat repositori di Cloud Source Repositories untuk kode sumber.
    • Membuat repositori di Artifact Registry untuk container aplikasi.
    • Membuat pemicu Cloud Build di repositori utama GitHub.
    • Membuat target dan pipeline pengiriman Cloud Deploy. Targetnya adalah lingkungan staging dan produksi.
  • Mulai proses CI/CD untuk men-deploy ke staging, lalu promosikan ke produksi.

Sebagai developer, Anda membuat perubahan pada aplikasi. Untuk melakukannya, lakukan langkah berikut:

  • Membuat clone repositori untuk bekerja dengan lingkungan pengembangan yang telah dikonfigurasi sebelumnya.
  • Membuat perubahan pada aplikasi dalam ruang kerja developer Anda.
  • Buat dan uji perubahannya. Pengujian ini mencakup pengujian validasi untuk tata kelola.
  • Melihat dan memvalidasi perubahan di cluster developer. Cluster ini berjalan di minikube.
  • Commit perubahan ke repositori utama.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  3. Enable the Artifact Registry, Cloud Build, Cloud Deploy, Cloud Source Repositories, Google Kubernetes Engine, Resource Manager, and Service Networking APIs.

    Enable the APIs

  4. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

Menyiapkan lingkungan Anda

Di bagian ini, Anda bertindak sebagai operator aplikasi dan melakukan hal berikut:

  • Menyiapkan perizinan yang diperlukan.
  • Membuat cluster GKE untuk lingkungan staging dan produksi.
  • Meng-clone repositori sumber.
  • Membuat repositori di Cloud Source Repositories untuk kode sumber.
  • Membuat repositori di Artifact Registry untuk container aplikasi.

Menyiapkan perizinan

Di bagian ini, Anda memberikan izin yang diperlukan untuk menyiapkan pipeline CI/CD.

  1. Jika Anda menggunakan instance Editor Cloud Shell baru, tentukan project yang akan digunakan untuk panduan deployment ini:

    gcloud config set project PROJECT_ID
    

    Ganti PROJECT_ID dengan ID project yang Anda pilih atau buat untuk panduan deployment ini.

    Jika sebuah dialog ditampilkan, klik Authorize

  2. Pastikan akun layanan Compute Engine default memiliki izin yang memadai untuk menjalankan tugas di Cloud Deploy dan mengambil container dari Artifact Registry. Cloud Build dan Cloud Deploy menggunakan akun layanan default ini.

    Akun layanan ini mungkin sudah memiliki izin yang diperlukan. Langkah ini memastikan izin yang diperlukan sudah diberikan untuk project yang menonaktifkan pemberian peran otomatis untuk akun layanan default.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role="roles/clouddeploy.jobRunner"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role="roles/artifactregistry.reader"
    
  3. Berikan hak istimewa akun layanan Cloud Build untuk memanggil deployment dengan Cloud Deploy dan untuk memperbarui pipeline pengiriman serta definisi target:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")@cloudbuild.gserviceaccount.com \
        --role="roles/clouddeploy.operator"
    

    Untuk mengetahui informasi selengkapnya tentang peran IAM ini, lihat peran clouddeploy.operator.

  4. Berikan hak istimewa akun layanan Cloud Build dan Cloud Deploy untuk men-deploy ke GKE:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --role="roles/container.admin"
    

    untuk mengetahui detail selengkapnya tentang peran IAM ini, lihat peran peran container.admin.

  5. Beri akun layanan Cloud Build izin yang diperlukan untuk memanggil operasi Cloud Deploy:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")@cloudbuild.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
    

    Saat Cloud Build memanggil Cloud Deploy, Cloud Build menggunakan akun layanan Compute Engine untuk membuat rilis. Itulah sebabnya izin ini diperlukan.

    Untuk detail selengkapnya tentang peran IAM ini, lihat peran iam.serviceAccountUser.

Anda sekarang telah memberikan izin yang diperlukan untuk pipeline CI/CD.

Membuat cluster GKE

Di bagian ini, Anda akan membuat lingkungan staging dan produksi yang merupakan komponen dari cluster GKE. (Anda tidak perlu menyiapkan cluster pengembangan di sini, karena cluster tersebut menggunakan minikube.)

  1. Membuat cluster staging dan produksi dalam GKE:

    gcloud container clusters create-auto staging \
        --region us-central1 \
        --project=$(gcloud config get-value project) \
        --async
    
    gcloud container clusters create-auto prod \
        --region us-central1 \
        --project=$(gcloud config get-value project) \
        --async
    

    Cluster staging adalah tempat Anda menguji perubahan pada kode. Setelah Anda memverifikasi bahwa deployment dalam staging tidak berdampak negatif pada aplikasi, lakukan deployment ke produksi.

  2. Jalankan perintah berikut dan pastikan outputnya memiliki STATUS: RUNNING untuk cluster staging dan produksi:

    gcloud container clusters list
    
  3. Ambil kredensial ke file kubeconfig Anda untuk cluster staging dan produksi.

    gcloud container clusters get-credentials staging --region us-central1
    
    gcloud container clusters get-credentials prod --region us-central1
    

    Anda menggunakan kredensial ini untuk berinteraksi dengan cluster GKE. Misalnya, untuk memeriksa apakah aplikasi berjalan dengan benar.

Sekarang Anda telah membuat cluster GKE untuk lingkungan staging dan production.

Membuka IDE dan meng-clone repositori

Untuk meng-clone repositori dan melihat aplikasi di lingkungan pengembangan Anda, lakukan hal berikut:

  1. Lakukan clone repositori GitHub ke Cloud Shell.

    Buka di Cloud Shell

  2. Klik Confirm.

    Cloud Shell Editor akan terbuka dan meng-clone repositori sampel.

    Sekarang Anda dapat melihat kode aplikasi di Cloud Shell Editor.

  3. Tentukan project yang akan digunakan untuk panduan deployment ini:

    gcloud config set project PROJECT_ID
    

    Jika sebuah dialog ditampilkan, klik Authorize

Anda kini memiliki kode sumber untuk aplikasi di lingkungan pengembangan.

Repositori sumber ini mencakup file Cloud Build dan Cloud Deploy yang diperlukan untuk pipeline CI/CD.

Membuat repositori untuk kode sumber dan untuk container

Di bagian ini, Anda akan menyiapkan repositori di Cloud Source Repositories untuk kode sumber, dan repositori di Artifact Registry untuk menyimpan container yang dibangun oleh pipeline CI/CD.

  1. Buat repositori di Cloud Source Repositories untuk menyimpan kode sumber dan menautkannya dengan proses CI/CD:

    gcloud source repos create cicd-sample
    
  2. Pastikan konfigurasi Cloud Deploy menargetkan project yang ditentukan:

    sed -i s/project-id-placeholder/$(gcloud config get-value project)/g deploy/*
    git config --global credential.https://source.developers.google.com.helper gcloud.sh
    git remote add google https://source.developers.google.com/p/$(gcloud config get-value project)/r/cicd-sample
    
  3. Kirim kode sumber Anda ke repositori:

    git push --all google
    
  4. Buat repositori gambar di Artifact Registry:

    gcloud artifacts repositories create cicd-sample-repo \
        --repository-format=Docker \
        --location us-central1
    

Sekarang Anda memiliki repositori untuk kode sumber di Cloud Source Repositories dan repositori untuk container aplikasi di Artifact Registry. Dengan repositori Cloud Source Repositories, Anda dapat meng-clone kode sumber dan menghubungkannya ke pipeline CI/CD.

Mengonfigurasi pipeline CI/CD

Di bagian ini, Anda bertindak sebagai operator aplikasi dan mengonfigurasi pipeline CI/CD. Pipeline ini menggunakan Cloud Build untuk CI dan Cloud Deploy untuk CD. Langkah-langkah pipeline ditentukan dalam pemicu Cloud Build.

  1. Buat bucket Cloud Storage untuk Cloud Build guna menyimpan file artifacts.json (yang melacak artifacts yang dihasilkan oleh Skaffold untuk setiap build):

    gsutil mb gs://$(gcloud config get-value project)-gceme-artifacts/
    

    Menyimpan setiap file artifacts.json build di tempat yang sama adalah hal yang sebaiknya dilakukan karena memberikan kemampuan untuk melacak, sehingga memudahkan pemecahan masalah.

  2. Tinjau file cloudbuild.yaml, yang menentukan pemicu Cloud Build dan sudah dikonfigurasi di repositori sumber yang sudah Anda clone.

    File ini menentukan pemicu yang dipanggil setiap kali ada push baru ke cabang utama dari repositori kode sumber.

    Langkah-langkah berikut untuk pipeline CI/CD ditentukan dalam file cloudbuild.yaml:

    • Cloud Build menggunakan Skaffold untuk membangun container aplikasi.

    • Cloud Build menempatkan file artifacts.json build di bucket Cloud Storage.

    • Cloud Build menempatkan container aplikasi di Artifact Registry.

    • Cloud Build menjalankan pengujian pada container aplikasi.

    • Perintah gcloud deploy apply mendaftarkan file berikut dengan layanan Cloud Deploy:

      • deploy/pipeline.yaml, yang merupakan pipeline pengiriman
      • deploy/staging.yaml dan deploy/prod.yaml, yang merupakan file target

      Saat file didaftarkan, Cloud Deploy akan membuat pipeline dan target jika belum ada. Jika konfigurasi berubah, Cloud Deploy akan membuat ulang pipeline. Targetnya adalah lingkungan staging dan produksi.

    • Cloud Deploy membuat rilis baru untuk pipeline pengiriman.

      Rilis ini merujuk pada container aplikasi yang dibangun dan diuji dalam proses CI.

    • Cloud Deploy men-deploy rilis ke lingkungan staging.

    Pipeline dan target pengiriman dikelola oleh Cloud Deploy dan dipisahkan dari kode sumber. Pemisahan ini bertujuan agar Anda tidak perlu memperbarui pipeline pengiriman dan file target saat perubahan dilakukan pada kode sumber aplikasi.

  3. Buat pemicu Cloud Build:

    gcloud beta builds triggers create cloud-source-repositories \
        --name="cicd-sample-main" \
        --repo="cicd-sample" \
        --branch-pattern="main" \
        --build-config="cloudbuild.yaml"
    

    Pemicu ini memberi tahu Cloud Build untuk mengawasi repositori sumber dan menggunakan file cloudbuild.yaml untuk bereaksi terhadap perubahan apa pun pada repositori. Pemicu ini dipanggil setiap kali ada push baru ke cabang utama.

  4. Buka halaman Cloud Build di Google Cloud Console.

    Buka Cloud Build

    Perhatikan bahwa tidak ada build untuk aplikasi.

Anda sekarang telah menyiapkan pipeline CI dan CD, serta membuat pemicu pada cabang utama repositori.

Buat perubahan pada aplikasi Anda di dalam ruang kerja developer

Di bagian ini, Anda bertindak sebagai developer aplikasi.

Saat mengembangkan aplikasi, Anda akan membuat dan memverifikasi perubahan secara terus-menerus pada aplikasi menggunakan Cloud Code sebagai ruang kerja pengembangan:

  • Membuat perubahan pada aplikasi.
  • Membangun dan menguji kode baru.
  • Men-deploy aplikasi ke cluster minikube dan memverifikasi perubahan yang ditampilkan kepada pengguna.
  • Mengirim perubahan ke repositori utama.

Saat perubahan tersebut di-commit ke repositori utama, pemicu Cloud Build akan memulai pipeline CI/CD.

Membuat, menguji, dan menjalankan aplikasi.

Di bagian ini, Anda akan membangun, menguji, men-deploy, dan mengakses aplikasi.

Gunakan instance Editor Cloud Shell yang sama dengan yang Anda gunakan di bagian sebelumnya. Jika Anda menutup editor, akses Cloud Shell Editor di browser dengan membuka ide.cloud.google.com.

  1. Dari terminal, mulai minikube:

    minikube start
    

    minikube menyiapkan cluster Kubernetes lokal di Cloud Shell Anda. Penyiapan ini memerlukan waktu beberapa menit untuk dijalankan. Setelah selesai, proses minikube akan berjalan di latar belakang pada instance Cloud Shell.

  2. Pada panel di bagian bawah Cloud Shell Editor, pilih Cloud Code.

  3. Di panel tipis yang muncul di antara terminal dan editor, pilih Jalankan di Kubernetes.

    Jika Anda melihat perintah yang bertuliskan Use current context (minikube) to run the app?, klik Ya.

    Perintah ini membangun kode sumber dan menjalankan pengujian. Proses ini memerlukan waktu beberapa menit. Pengujian ini mencakup pengujian unit dan langkah validasi yang telah dikonfigurasi sebelumnya yang memeriksa aturan yang ditetapkan untuk lingkungan deployment. Dengan begitu, Anda akan mendapatkan peringatan tentang masalah deployment meskipun Anda sedang bekerja di lingkungan pengembangan.

    Tab Output menampilkan progres Skaffold saat membangun dan men-deploy aplikasi Anda.

    Biarkan tab ini tetap terbuka sepanjang bagian ini.

    Setelah build dan pengujian selesai, tab Output akan menampilkan Update succeeded, dan menampilkan dua URL.

    Saat Anda membangun dan menguji apl, Cloud Code akan melakukan streaming kembali log dan URL di tab Output. Saat membuat perubahan dan menjalankan pengujian di lingkungan pengembangan, Anda dapat melihat versi aplikasi di lingkungan pengembangan dan verifikasi apakah aplikasi berjalan dengan benar.

    Output-nya juga akan menampilkan Watching for changes..., yang berarti mode smartwatch diaktifkan. Saat Cloud Code berada dalam mode smartwatch, layanan akan mendeteksi setiap perubahan yang tersimpan di repositori Anda dan otomatis membangun ulang dan men-deploy ulang aplikasi dengan perubahan terbaru.

  4. Di terminal Cloud Code, tahan kursor ke URL pertama dalam output (http://localhost:8080).

  5. Di tips alat yang muncul, pilih Buka Pratinjau Web.

    Di latar belakang, Cloud Code secara otomatis meneruskan traffic ke layanan cicd-sample yang berjalan di minikube.

  6. Di browser, muat ulang halaman.

    Angka di samping Counter akan bertambah, yang menunjukkan bahwa aplikasi merespons refresh Anda.

    Di browser, biarkan halaman ini tetap terbuka sehingga Anda dapat melihat aplikasi saat membuat perubahan apa pun di lingkungan lokal.

Anda telah membangun dan menguji aplikasi di lingkungan pengembangan. Anda telah men-deploy aplikasi ke dalam cluster pengembangan yang berjalan di minikube, dan melihat perilaku aplikasi yang dilihat pengguna.

Membuat perubahan

Di bagian ini, Anda akan membuat perubahan pada aplikasi dan melihat perubahan saat aplikasi berjalan di cluster pengembangan.

  1. Di Cloud Shell Editor, buka file index.html.

  2. Telusuri string Sample App Info, lalu ubah menjadi sample app info, sehingga judul sekarang menggunakan huruf kecil.

    File disimpan secara otomatis, sehingga memicu build ulang penampung aplikasi.

    Cloud Code mendeteksi perubahan dan secara otomatis men-deploy ulang-nya. Tab Output menampilkan Update initiated. Deployment ulang ini memerlukan waktu beberapa menit untuk dijalankan.

    Fitur deploy ulang otomatis ini tersedia untuk aplikasi apa pun yang berjalan di cluster Kubernetes.

  3. Setelah build selesai, buka browser tempat aplikasi dibuka, lalu muat ulang halaman.

    Saat Anda memuat ulang, lihat teks kini menggunakan huruf kecil.

Penyiapan ini memungkinkan Anda memuat ulang secara otomatis untuk arsitektur apa pun, dengan komponen apa pun. Saat Anda menggunakan Cloud Code dan minikube, semua hal yang berjalan di Kubernetes memiliki fungsi hot code ini.

Anda dapat men-debug aplikasi yang di-deploy ke cluster Kubernetes di Cloud Code. Langkah-langkah ini tidak dibahas dalam panduan deployment ini, tetapi untuk mengetahui detailnya, lihat Men-debug aplikasi Kubernetes.

Commit kode

Setelah melakukan perubahan pada aplikasi, Anda dapat meng-commit kode.

  1. Konfigurasi identitas git Anda:

    git config --global user.email "YOU@EXAMPLE.COM"
    git config --global user.name "NAME"
    

    Ganti kode berikut:

    • YOU@EXAMPLE.COM: alamat email yang terhubung ke akun GitHub Anda.
    • NAME: nama yang terhubung ke akun GitHub Anda.
  2. Dari terminal, commit kode:

    git add .
    git commit -m "use lowercase for: sample app info"
    

    Anda tidak perlu menjalankan perintah git push di sini. Itu nanti.

Karena bekerja di lingkungan pengembangan, Anda kini telah membuat perubahan pada aplikasi, membangun dan menguji perubahan, serta memverifikasi perilaku yang dilihat pengguna dari perubahan tersebut. Pengujian di lingkungan pengembangan mencakup pemeriksaan tata kelola, yang memungkinkan Anda memperbaiki hal yang menyebabkan masalah di lingkungan produksi.

Dalam panduan deployment ini, saat meng-commit kode ke repositori utama, Anda tidak akan melalui peninjauan kode. Namun, peninjauan kode atau persetujuan perubahan adalah proses yang direkomendasikan untuk pengembangan software.

Untuk informasi selengkapnya tentang praktik terbaik persetujuan perubahan, lihat Menyederhanakan persetujuan perubahan.

Men-deploy perubahan ke produksi

Di bagian ini, Anda bertindak sebagai operator aplikasi dan melakukan hal berikut:

  • Memicu pipeline CI/CD, yang men-deploy rilis ke lingkungan staging.
  • Mempromosikan dan menyetujui rilis ke produksi.

Memulai pipeline CI/CD dan men-deploy ke staging

Di bagian ini, Anda akan memulai pipeline CI/CD dengan memanggil pemicu Cloud Build. Pemicu ini dipanggil setiap kali ada perubahan yang di-commit ke repositori utama. Anda juga dapat memulai sistem CI dengan pemicu manual.

  1. Di Cloud Shell Editor, jalankan perintah berikut untuk memicu build:

    git push google
    

    Build ini mencakup perubahan yang Anda buat pada cicd-sample.

  2. Kembali ke dasbor Cloud Build dan lihat bahwa ada build yang telah dibuat.

  3. Klik Running: cicd-sample - cicd-sample-main di log build di sebelah kanan, lalu cari teks biru yang menunjukkan awal dan akhir setiap langkah.

    Langkah 0 menunjukkan output petunjuk skaffold build dan skaffold test dari file cloudbuild.yaml. Tugas build dan uji di Langkah 0 (bagian CI dari pipeline) lulus, sehingga tugas deployment Langkah 1 (bagian CD dari {i>pipelines<i}) sekarang berjalan.

    Langkah ini diakhiri dengan pesan berikut:

    Created Cloud Deploy rollout ROLLOUT_NAME in target staging

  4. Buka halaman delivery pipeline Cloud Deploy dan klik pipeline cicd-sample delivery.

    Aplikasi di-deploy dalam staging, tetapi tidak dalam produksi.

  5. Verifikasi bahwa aplikasi berhasil berjalan dalam staging:

    kubectl proxy --port 8001 --context gke_$(gcloud config get-value project)_us-central1_staging
    

    Perintah ini menyiapkan proxy kubectl untuk mengakses aplikasi.

  6. Akses aplikasi dari Cloud Shell:

    1. Di Cloud Shell Editor, buka tab terminal baru.

    2. Kirim permintaan ke localhost untuk menambahkan penghitung:

      curl -s http://localhost:8001/api/v1/namespaces/default/services/cicd-sample:8080/proxy/ | grep -A 1 Counter
      

      Anda dapat menjalankan perintah ini beberapa kali dan melihat kenaikan jumlah penghitung setiap waktu.

      Saat Anda melihat aplikasi, perhatikan bahwa teks yang Anda ubah ada di dalam versi aplikasi yang Anda deploy pada staging.

    3. Tutup tab kedua ini.

    4. Pada tab pertama, tekan Control+C untuk menghentikan proxy.

Anda sekarang telah memanggil pemicu Cloud Build untuk memulai proses CI, yang mencakup membangun aplikasi, men-deploy-nya ke lingkungan staging, dan menjalankan pengujian untuk memverifikasi bahwa aplikasi berjalan dalam staging.

Proses CI berhasil jika build dan pengujian kode lulus di lingkungan staging. Keberhasilan proses CI kemudian memulai sistem CD di Cloud Deploy.

Mempromosikan rilis ke produksi

Di bagian ini, Anda akan mempromosikan rilis dari staging hingga produksi. Target produksi telah dikonfigurasi sebelumnya untuk mewajibkan persetujuan, sehingga Anda akan menyetujuinya secara manual.

Untuk pipeline CI/CD Anda sendiri, sebaiknya gunakan strategi deployment yang meluncurkan deployment secara bertahap sebelum melakukan deployment sepenuhnya ke dalam produksi. Peluncuran deployment secara bertahap dapat mempermudah pendeteksian masalah dan, jika diperlukan, memulihkan rilis sebelumnya.

Untuk mempromosikan rilis ke produksi, lakukan hal berikut:

  1. Buka ringkasan pipeline pengiriman Cloud Deploy dan pilih pipeline cicd-sample.

  2. Promosikan deployment dari staging ke produksi. Untuk mulai melakukannya, lakukan hal berikut:

    1. Dalam diagram pipeline di bagian atas halaman, klik tombol Promosikan berwarna biru di kotak staging.

    2. Di jendela yang terbuka, klik tombol Promosikan di bagian bawah.

    Deployment belum berjalan dalam produksi. File tersebut menunggu persetujuan secara manual yang diperlukan.

  3. Menyetujui deployment secara manual:

    1. Dalam visualisasi pipeline, klik tombol Tinjau di antara kotak staging dan produksi.

    2. Di jendela yang terbuka, klik tombol Tinjau.

    3. Di jendela berikutnya, klik Setujui.

    4. Kembali ke Ringkasan pipeline pengiriman Cloud Deploy dan pilih pipeline cicd-sample.

  4. Setelah visualisasi pipeline menampilkan kotak produksi berwarna hijau (artinya peluncuran berhasil), verifikasi bahwa aplikasi berjalan dalam produksi dengan menyiapkan proxy kubectl yang Anda gunakan untuk mengakses aplikasi:

    kubectl proxy --port 8002 --context gke_$(gcloud config get-value project)_us-central1_prod
    
  5. Akses aplikasi dari Cloud Shell:

    1. Di Cloud Shell Editor, buka tab terminal baru.

    2. Menambahkan penghitung:

      curl -s http://localhost:8002/api/v1/namespaces/default/services/cicd-sample:8080/proxy/ | grep -A 1 Counter
      

      Anda dapat menjalankan perintah ini beberapa kali dan melihat kenaikan jumlah penghitung setiap waktu.

    3. Tutup tab terminal kedua ini.

    4. Pada tab pertama, tekan Control+C untuk menghentikan proxy.

Anda telah mempromosikan dan menyetujui deployment produksi. Aplikasi dengan perubahan terbaru Anda sekarang berjalan dalam produksi.

Pembersihan

Agar tidak dikenai biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam panduan ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Opsi 1: menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Opsi 2: menghapus setiap resource

  1. Hapus pipeline Cloud Deploy:

    gcloud deploy delivery-pipelines delete cicd-sample --region=us-central1 --force
    
  2. Hapus pemicu Cloud Build:

    gcloud beta builds triggers delete cicd-sample-main
    
  3. Hapus cluster staging dan produksi:

    gcloud container clusters delete staging
    
    gcloud container clusters delete prod
    
  4. Hapus repositori di Cloud Source Repositories:

    gcloud source repos delete cicd-sample
    
  5. Hapus bucket Cloud Storage:

    `gsutil rm -r gs://$(gcloud config get-value project)-gceme-artifacts/
    
     gsutil rm -r gs://$(gcloud config get-value project)_clouddeploy/
     ```
    
  6. Hapus repositori di Artifact Registry:

    gcloud artifacts repositories delete cicd-sample-repo \
        --location us-central1
    

Langkah selanjutnya