Pipeline CI/CD untuk mengembangkan dan mengirimkan aplikasi dalam container

Last reviewed 2022-11-18 UTC

Dokumen ini menjelaskan serangkaian alat terintegrasi Google Cloud guna menyiapkan sistem untuk pengembangan, untuk continuous integration (CI), dan continuous delivery (CD) yang dapat Anda gunakan untuk mengembangkan dan men-deploy aplikasi keGoogle Kubernetes Engine (GKE). Dokumen arsitektur referensi ini ditujukan untuk developer software dan operator. Hal ini mengasumsikan bahwa Anda dapat menjalankan gcloud perintah di Google Cloud dan men-deploy container aplikasi ke GKE.

Arsitektur

Diagram berikut menunjukkan referensi yang digunakan dalam arsitektur ini:

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

Arsitektur ini mencakup komponen berikut:

  1. Cloud Code sebagai ruang kerja pengembangan. Sebagai bagian dari ruang kerja ini, Anda dapat melihat perubahan dalam cluster pengembangan, yang berjalan di minikube. Anda menjalankan Cloud Code dan cluster minikube di Cloud Shell. Cloud Shell adalah lingkungan pengembangan online yang dapat diakses dari browser Anda. Platform ini memiliki resource komputasi, memori, lingkungan pengembangan terintegrasi, (IDE), dan juga memiliki Cloud Code terinstal.
  2. Cloud Build untuk membangun dan menguji aplikasi—bagian "CI" pada pipeline

    Bagian pipeline ini mencakup tindakan berikut:

    • Cloud Build memantau perubahan pada repositori sumber, menggunakan pemicu Cloud Build.
    • Saat perubahan di-commit ke cabang utama, pemicu Cloud Build akan melakukan hal berikut:
      • Membangun ulang container aplikasi.
      • Menempatkan artefak build di bucket Cloud Storage.
      • Menempatkan container aplikasi di Artifact Registry.
      • Menjalankan pengujian pada container.
      • Memanggil Cloud Deploy untuk men-deploy container ke lingkungan staging. Dalam contoh ini, lingkungan staging adalah cluster Google Kubernetes Engine.
    • Jika build dan pengujian berhasil, Anda dapat menggunakan Cloud Deploy untuk mempromosikan container dari staging ke produksi.
  3. Cloud Deploy untuk mengelola deployment—bagian "CD" dari pipeline. Di bagian pipeline ini, Cloud Deploy melakukan hal-hal berikut:

    • Mendaftarkan pipeline pengiriman dan target. Targetnya mewakili klaster staging dan produksi.
    • Membuat bucket Cloud Storage serta menyimpan sumber rendering Skaffold dan manifes yang dirender di bucket tersebut.
    • Menghasilkan rilis baru untuk setiap perubahan kode sumber.
    • Men-deploy aplikasi ke lingkungan produksi. Untuk deployment ke produksi, operator (atau orang lain yang ditunjuk) akan menyetujui deployment secara manual. Dalam arsitektur ini, lingkungan produksi adalah cluster Google Kubernetes Engine.

Dalam arsitektur ini, konfigurasi dibagikan bersama oleh lingkungan pengembangan, staging, dan produksi melalui Skaffold, yakni alat command line yang memfasilitasi pengembangan berkelanjutan untuk Kubernetes- aplikasi native.

Google Cloud menyimpan kode sumber aplikasi di GitHub.

Arsitektur ini menggunakan produk Google Cloud untuk sebagian besar sistem komponen, dengan Skaffold yang mengaktifkan integrasi sistem. Karena Skaffold bersifat open source, Anda dapat menggunakan prinsip-prinsip ini untuk membuat sistem serupa menggunakan kombinasi komponen Google Cloud, internal, dan komponen pihak ketiga. Modularitas solusi ini berarti bahwa Anda dapat mengadopsinya secara bertahap sebagai bagian dari pipeline pengembangan dan deployment Anda.

Kasus penggunaan

Berikut adalah fitur utama dari sistem terintegrasi ini:

  • Kembangkan dan deploy lebih cepat.

    Loop pengembangan sangat efisien karena Anda dapat memvalidasi perubahan di ruang kerja developer. Deployment berjalan cepat karena sistem CI/CD otomatis dan peningkatan paritas di seluruh lingkungan memungkinkan Anda mendeteksi lebih banyak masalah saat men-deploy perubahan ke produksi.

  • Manfaat dari peningkatan paritas dalam pengembangan, staging, dan produksi.

    Komponen sistem ini menggunakan serangkaian umum dari alat Google Cloud.

  • Menggunakan kembali konfigurasi di berbagai lingkungan.yang berbeda.

    Penggunaan ulang ini dilakukan dengan Skaffold, yang memungkinkan format konfigurasi umum untuk lingkungan yang berbeda. Hal ini juga memungkinkan developer dan operator mengupdate dan menggunakan konfigurasi yang sama.

  • Terapkan tata kelola di awal alur kerja.

    Sistem ini menerapkan pengujian validasi untuk tata kelola pada produksi serta dalam sistem CI dan lingkungan pengembangan. Menerapkan tata kelola di lingkungan pengembangan memungkinkan masalah ditemukan dan diperbaiki lebih awal.

  • Izinkan alat yang tidak sesuai mengelola pengiriman software Anda.

    Continuous delivery terkelola sepenuhnya, sehingga memisahkan tahapan pipeline CD dari detail rendering dan deployment.

Deployment

Untuk men-deploy arsitektur ini, Kembangkan dan deploy aplikasi dalam container menggunakan pipeline CI/CD.

Langkah selanjutnya