Metodologi penerapan

Last reviewed 2024-12-13 UTC

Blueprint aplikasi perusahaan di-deploy melalui serangkaian sistem dan pipeline otomatis. Setiap pipeline men-deploy aspek tertentu dari cetak biru. Pipeline menyediakan mekanisme yang dapat dikontrol, diaudit, dan diulang untuk membuat cetak biru. Diagram berikut menunjukkan interaksi berbagai pipeline, repositori, dan persona.

Pipeline cetak biru.

Blueprint menggunakan pipeline berikut:

  • Pipeline infrastruktur fondasi (bagian dari cetak biru fondasi perusahaan) men-deploy factory aplikasi, pipeline infrastruktur multi-tenant, dan pipeline cakupan armada.
  • Pipeline infrastruktur multi-tenant men-deploy cluster GKE, dan layanan terkelola lainnya yang menjadi dasar cetak biru aplikasi perusahaan.
  • Pipeline cakupan fleet mengonfigurasi cakupan fleet, namespace, dan peran serta binding RBAC.
  • Application factory menyediakan mekanisme untuk men-deploy pipeline aplikasi baru melalui proses yang dibuat menggunakan template.
  • Pipeline CI/CD aplikasi menyediakan pipeline CI/CD untuk men-deploy layanan ke dalam cluster GKE.
  • Config Sync men-deploy dan mempertahankan konfigurasi Kubernetes tambahan, termasuk batasan Pengontrol Kebijakan.

Repositori, kontributor repositori, dan pemberi persetujuan perubahan repositori

Pipeline cetak biru dipicu melalui perubahan pada repositori Git. Tabel berikut menjelaskan repositori yang digunakan di seluruh cetak biru, siapa yang berkontribusi ke repositori, siapa yang menyetujui perubahan pada repositori, pipeline mana yang menggunakan repositori, dan deskripsi tentang isi repositori.

Repositori Kontributor repositori Pemberi persetujuan perubahan repositori Pipeline Deskripsi

infra

Developer platform developer

Administrator platform developer

Pipeline infrastruktur fondasi

Repositori yang berisi kode untuk men-deploy pipeline infrastruktur multi-tenant, aplikasi, dan pipeline cakupan armada

eab-infra

Developer platform developer

Administrator platform developer

Infrastruktur multi-tenant

Modul Terraform yang digunakan oleh tim platform developer saat mereka membuat infrastruktur

fleet-scope

Developer platform developer

Administrator platform developer

Cakupan fleet

Repositori yang menentukan cakupan dan namespace tim armada di fleet

app-factory

Developer platform developer

Administrator platform developer

Factory aplikasi

Kode yang menentukan repositori aplikasi dan mereferensikan modul di repositori terraform-modules

app-template

Developer aplikasi

Operator aplikasi

Factory aplikasi

Kode dasar yang ditempatkan di repositori app-code saat repositori pertama kali dibuat

terraform-modules

Developer platform developer

Administrator platform developer

Factory aplikasi

Infrastruktur multi-tenant

Modul Terraform yang menentukan aplikasi dan infrastruktur

app-code

Developer aplikasi

Operator aplikasi

CI/CD Aplikasi

Kode aplikasi yang di-deploy ke cluster GKE

config-policy

Developer platform developer

Administrator platform developer

Config Sync

Kebijakan yang digunakan oleh cluster GKE untuk mempertahankan konfigurasinya

Pipeline otomatis membantu membangun keamanan, audit, keterlacakan, pengulangan, pengontrolan, dan kepatuhan ke dalam proses deployment. Dengan menggunakan sistem berbeda yang memiliki izin berbeda dan menempatkan orang yang berbeda ke dalam grup operasi yang berbeda, Anda menciptakan pemisahan tanggung jawab dan mengikuti prinsip hak istimewa terendah.

Pipeline infrastruktur fondasi

Pipeline infrastruktur dasar dijelaskan dalam blueprint dasar-dasar perusahaan dan digunakan sebagai titik entri umum untuk deployment resource lebih lanjut. Tabel berikut menjelaskan komponen yang dibuat oleh pipeline.

Komponen Deskripsi

Pipeline infrastruktur multi-tenant

Membuat infrastruktur bersama yang digunakan oleh semua tenant platform developer.

Pipeline cakupan armada

Membuat namespace dan binding peran RBAC.

Factory aplikasi

Membuat pipeline CI/CD aplikasi yang digunakan untuk men-deploy layanan.

Pipeline infrastruktur multi-tenant

Pipeline infrastruktur multi-tenant men-deploy fleet, cluster GKE, dan resource bersama terkait. Diagram berikut menunjukkan komponen pipeline infrastruktur multi-tenant.

Komponen pipeline infrastruktur.

Tabel berikut menjelaskan komponen yang dibangun oleh pipeline infrastruktur multi-tenant.

Komponen Deskripsi

Cluster GKE

Menyediakan hosting untuk layanan aplikasi dalam container.

Pengontrol Kebijakan

Menyediakan kebijakan yang membantu memastikan konfigurasi yang tepat dari cluster dan layanan GKE.

Config Sync

Menerapkan kebijakan Pengontrol Kebijakan ke cluster dan mempertahankan penerapan kebijakan yang konsisten.

Kunci Cloud Key Management Service (Cloud KMS)

Membuat kunci enkripsi yang didasarkan pada kunci enkripsi yang dikelola pelanggan (CMEK) untuk GKE, AlloyDB for PostgreSQL, dan Secret Manager.

Secret Manager secret

Menyediakan penyimpanan rahasia untuk pasangan kunci RSA yang digunakan untuk autentikasi pengguna dengan Token Web JSON (JWT).

Kebijakan keamanan Cloud Armor

Menyediakan kebijakan yang digunakan oleh firewall aplikasi web Cloud Armor.

Pipeline cakupan fleet

Pipeline cakupan fleet bertanggung jawab untuk mengonfigurasi namespace dan binding RBAC di cluster GKE fleet. Tabel berikut menjelaskan komponen yang dibangun oleh pipeline cakupan armada.

Komponen Deskripsi

Namespace

Mendefinisikan cluster logis dalam cluster fisik.

RBAC (peran dan binding)

Menentukan otorisasi yang dimiliki akun layanan Kubernetes di tingkat cluster atau tingkat namespace.

Factory aplikasi

Factory aplikasi di-deploy oleh pipeline infrastruktur dasar dan digunakan untuk membuat infrastruktur bagi setiap aplikasi baru. Infrastruktur ini mencakup project Google Cloud yang menyimpan pipeline CI/CD aplikasi.

Seiring dengan berkembangnya organisasi engineering, tim aplikasi dapat mengaktifkan aplikasi baru menggunakan factory aplikasi. Penskalaan memungkinkan pertumbuhan dengan menambahkan pipeline CI/CD aplikasi diskrit dan mendukung infrastruktur untuk men-deploy aplikasi baru dalam arsitektur multi-tenant. Diagram berikut menunjukkan factory aplikasi.

Komponen factory aplikasi.

Factory aplikasi memiliki komponen berikut:

  • Repositori factory aplikasi: Repositori Git yang menyimpan definisi aplikasi deklaratif.
  • Pipeline untuk membuat aplikasi: Pipeline yang memerlukan Cloud Build untuk menyelesaikan hal berikut:
    • Buat definisi aplikasi deklaratif dan simpan di katalog aplikasi.
    • Terapkan definisi aplikasi deklaratif untuk membuat resource aplikasi.
  • Repositori template aplikasi awal: Template untuk membuat aplikasi sederhana (misalnya, microservice Python, Golang, atau Java).
  • Modul bersama: Modul Terraform yang dibuat dengan praktik standar dan digunakan untuk berbagai tujuan, termasuk aktivasi dan deployment aplikasi.

Tabel berikut mencantumkan komponen yang dibuat oleh factory aplikasi untuk setiap aplikasi.

Komponen Deskripsi

Repositori kode sumber aplikasi

Berisi kode sumber dan konfigurasi terkait yang digunakan untuk membangun dan men-deploy aplikasi tertentu.

Pipeline CI/CD aplikasi

Pipeline berbasis Cloud Build yang digunakan untuk terhubung ke repositori kode sumber dan menyediakan pipeline CI/CD untuk men-deploy layanan aplikasi.

Pipeline CI/CD aplikasi

Pipeline CI/CD aplikasi memungkinkan build dan deployment otomatis aplikasi berbasis container. Pipeline ini terdiri dari langkah-langkah continuous integration (CI) dan continuous deployment (CD). Arsitektur pipeline didasarkan pada blueprint CI/CD yang aman.

Pipeline CI/CD aplikasi menggunakan image container yang tidak dapat diubah di seluruh lingkungan Anda. Image container yang tidak dapat diubah membantu memastikan bahwa image yang sama di-deploy di semua lingkungan dan tidak diubah saat container sedang berjalan. Jika Anda harus mengupdate kode aplikasi atau menerapkan patch, Anda harus membuat image baru dan men-deploy-nya ulang. Penggunaan image container yang tidak dapat diubah mengharuskan Anda untuk mengeksternalkan konfigurasi container sehingga informasi konfigurasi dibaca selama waktu proses.

Untuk menjangkau cluster GKE melalui jalur jaringan pribadi dan mengelola autentikasi kubeconfig, pipeline CI/CD aplikasi berinteraksi dengan cluster GKE melalui gateway Connect. Pipeline ini juga menggunakan kumpulan pribadi untuk lingkungan CI/CD.

Setiap repositori kode sumber aplikasi mencakup konfigurasi Kubernetes. Konfigurasi ini memungkinkan aplikasi berhasil berjalan sebagai layanan Kubernetes di GKE. Tabel berikut menjelaskan jenis konfigurasi Kubernetes yang diterapkan oleh pipeline CI/CD aplikasi.

Komponen Deskripsi

Deployment

Menentukan set pod (container) yang diskalakan.

Layanan

Membuat deployment dapat dijangkau melalui jaringan cluster.

Layanan virtual

Membuat layanan menjadi bagian dari mesh layanan.

Aturan tujuan

Menentukan cara peer di mesh layanan harus menjangkau layanan virtual. Digunakan dalam cetak biru untuk mengonfigurasi load balancing lokalitas untuk traffic timur-barat.

Kebijakan otorisasi

Menetapkan kontrol akses antara workload di mesh layanan.

Akun layanan Kubernetes

Menentukan identitas yang digunakan oleh layanan Kubernetes. Workload Identity Federation for GKE menentukan akun layanan Google Cloud yang digunakan untuk mengakses resourceGoogle Cloud .

Gateway

Mengizinkan traffic masuk eksternal untuk menjangkau layanan. Gateway hanya diperlukan oleh deployment yang menerima traffic eksternal.

GCPBackendPolicy

Konfigurasi SSL, Cloud Armor, afinitas sesi, dan pengurasan koneksi untuk deployment yang menerima traffic eksternal. GCPBackendPolicy hanya digunakan oleh deployment yang menerima traffic eksternal.

PodMonitoring

Mengonfigurasi pengumpulan metrik Prometheus yang diekspor oleh aplikasi.

Continuous integration

Diagram berikut menunjukkan proses integrasi berkelanjutan.

Proses continuous integration cetak biru.

Prosesnya adalah sebagai berikut:

  1. Developer melakukan commit kode aplikasi ke repositori sumber aplikasi. Operasi ini memicu Cloud Build untuk memulai pipeline integrasi.
  2. Cloud Build membuat image container, mengirimkan image container ke Artifact Registry, dan membuat ringkasan image.
  3. Cloud Build melakukan pengujian otomatis untuk aplikasi. Bergantung pada bahasa aplikasi, paket pengujian yang berbeda dapat dilakukan.
  4. Cloud Build melakukan pemindaian berikut pada image container:
    1. Cloud Build menganalisis container menggunakan framework Pengujian Struktur Container. Framework ini menjalankan pengujian perintah, pengujian keberadaan file, pengujian konten file, dan pengujian metadata.
    2. Cloud Build menggunakan vulnerability scanning untuk mengidentifikasi kerentanan dalam image container terhadap database kerentanan yang dikelola oleh Google Cloud.
  5. Cloud Build menyetujui image untuk melanjutkan pipeline setelah hasil pemindaian berhasil.
  6. Otorisasi Biner menandatangani image. Otorisasi Biner adalah layanan di Google Cloud yang menyediakan keamanan software supply-chain untuk aplikasi berbasis container dengan menggunakan kebijakan, aturan, catatan, pengesahan, attestor, dan penanda tangan. Pada waktu deployment, penerapan kebijakan Otorisasi Biner membantu memastikan provenance container sebelum mengizinkan container di-deploy.
  7. Cloud Build membuat rilis di Cloud Deploy untuk memulai proses deployment.

Untuk melihat informasi keamanan build, buka panel Insight keamanan. Insight ini mencakup kerentanan yang terdeteksi menggunakan Analisis Artefak, dan tingkat jaminan keamanan build yang ditunjukkan oleh panduan SLSA.

Deployment berkelanjutan

Diagram berikut menunjukkan proses deployment berkelanjutan.

Proses deployment berkelanjutan blueprint.

Prosesnya adalah sebagai berikut:

  1. Di akhir proses build, pipeline CI/CD aplikasi membuat rilis Cloud Deploy baru untuk meluncurkan image container yang baru dibangun secara progresif ke setiap lingkungan.
  2. Cloud Deploy memulai peluncuran ke lingkungan pertama pipeline deployment, yang biasanya adalah pengembangan. Setiap tahap deployment dikonfigurasi untuk memerlukan persetujuan manual.
  3. Pipeline Cloud Deploy menggunakan deployment berurutan untuk men-deploy image ke setiap cluster dalam lingkungan secara berurutan.
  4. Di akhir setiap tahap deployment, Cloud Deploy memverifikasi fungsi container yang di-deploy. Langkah-langkah ini dapat dikonfigurasi dalam konfigurasi Skaffold untuk aplikasi.

Men-deploy aplikasi baru

Diagram berikut menunjukkan cara kerja pipeline CI/CD aplikasi dan factory aplikasi bersama-sama untuk membuat dan men-deploy aplikasi baru.

Proses men-deploy aplikasi.

Proses untuk menentukan aplikasi baru adalah sebagai berikut:

  1. Operator aplikasi menentukan aplikasi baru dalam tenantnya dengan mengeksekusi pemicu Cloud Build untuk membuat definisi aplikasi.
  2. Pemicu menambahkan entri baru untuk aplikasi di Terraform dan melakukan perubahan ke repositori factory aplikasi.
  3. Perubahan yang di-commit memicu pembuatan project dan repositori khusus aplikasi.
  4. Cloud Build menyelesaikan hal berikut:
    1. Membuat dua repositori Git baru untuk menghosting kode sumber dan IaC aplikasi.
    2. Mendorong manifes Kubernetes untuk kebijakan jaringan, dan Workload Identity Federation untuk GKE ke repositori Pengelolaan konfigurasi.
    3. Membuat project CI/CD aplikasi dan pemicu IaC Cloud Build.
  5. Pemicu IaC Cloud Build untuk aplikasi membuat pipeline CI/CD aplikasi dan repositori Artifact Registry di project CI/CD aplikasi.
  6. Config Sync men-deploy kebijakan jaringan dan konfigurasi Workload Identity Federation untuk GKE ke cluster GKE multi-tenant.
  7. Pipeline pembuatan cakupan fleet membuat cakupan fleet dan namespace untuk aplikasi di cluster GKE multi-tenant.
  8. Pipeline CI/CD aplikasi melakukan deployment awal aplikasi ke cluster GKE.
  9. Secara opsional, tim aplikasi menggunakan pemicu IaC Cloud Build untuk men-deploy project dan resource tambahan (misalnya, database dan layanan terkelola lainnya) ke project khusus single-tenant, satu untuk setiap lingkungan.

Pengelolaan konfigurasi dan kebijakan GKE Enterprise

Dalam cetak biru, administrator platform developer menggunakan Config Sync untuk membuat konfigurasi tingkat cluster di setiap lingkungan. Config Sync terhubung ke repositori Git yang berfungsi sebagai sumber tepercaya untuk status konfigurasi cluster yang dipilih. Config Sync terus memantau status konfigurasi yang sebenarnya di cluster dan merekonsiliasi setiap perbedaan dengan menerapkan update untuk memastikan kepatuhan terhadap status yang dipilih, meskipun ada perubahan manual. Konfigurasi diterapkan ke lingkungan (pengembangan, non-produksi, dan produksi) dengan menggunakan strategi percabangan di repositori.

Dalam cetak biru ini, Config Sync menerapkan batasan Policy Controller. Konfigurasi ini menentukan kontrol keamanan dan kepatuhan sebagaimana ditentukan oleh administrator platform developer untuk organisasi. Cetak biru ini mengandalkan pipeline lain untuk menerapkan konfigurasi lain: pipeline CI/CD aplikasi menerapkan konfigurasi khusus aplikasi, dan pipeline cakupan armada membuat namespace dan binding peran terkait.

Langkah berikutnya