Metodologi penerapan

Last reviewed 2024-04-19 UTC

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

Membuat blueprint pipeline.

Blueprint menggunakan pipeline berikut:

  • Pipeline infrastruktur fondasi (bagian dari blueprint 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 blueprint aplikasi perusahaan.
  • Pipeline cakupan fleet mengonfigurasi cakupan fleet, namespace, serta peran dan binding RBAC.
  • Factory aplikasi menyediakan mekanisme untuk men-deploy pipeline aplikasi baru melalui proses dengan template.
  • Pipeline CI/CD aplikasi menyediakan pipeline CI/CD untuk men-deploy layanan ke cluster GKE.
  • Config Sync men-deploy dan mengelola konfigurasi Kubernetes tambahan, termasuk batasan Pengontrol Kebijakan.

Repositori, kontributor repositori, dan pemberi persetujuan perubahan repositori

Pipeline blueprint dipicu melalui perubahan pada repositori Git. Tabel berikut menjelaskan repositori yang digunakan di seluruh blueprint, siapa yang berkontribusi pada repositori, siapa yang menyetujui perubahan pada repositori, pipeline mana yang menggunakan repositori, dan deskripsi konten 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 tim dan namespace fleet 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 yang berbeda yang memiliki izin berbeda dan menempatkan orang yang berbeda ke dalam grup operasi yang berbeda, Anda akan menciptakan pemisahan tanggung jawab dan mengikuti prinsip hak istimewa terendah.

Pipeline infrastruktur fondasi

Pipeline infrastruktur foundation dijelaskan dalam blueprint foundation perusahaan dan digunakan sebagai titik entri generik untuk deployment resource lebih lanjut. Tabel berikut menjelaskan komponen yang dibuat 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 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 dibuat oleh pipeline infrastruktur multi-tenant.

Komponen Deskripsi

Cluster GKE

Menyediakan hosting untuk layanan aplikasi dalam container.

Pengontrol Kebijakan

Memberikan kebijakan yang membantu memastikan konfigurasi cluster dan layanan GKE yang tepat.

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 untuk PostgreSQL, dan Secret Manager.

Secret Secret Manager

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

Kebijakan keamanan Google Cloud Armor

Memberikan kebijakan yang digunakan oleh firewall aplikasi web Google Cloud Armor.

Pipeline cakupan fleet

Pipeline cakupan armada bertanggung jawab untuk mengonfigurasi namespace dan binding RBAC di cluster GKE armada. Tabel berikut menjelaskan komponen yang di-build 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 foundation dan digunakan untuk membuat infrastruktur untuk setiap aplikasi baru. Infrastruktur ini mencakup project Google Cloud yang menyimpan pipeline CI/CD aplikasi.

Seiring organisasi engineering diskalakan, tim aplikasi dapat melakukan aktivasi aplikasi baru menggunakan factory aplikasi. Penskalaan memungkinkan pertumbuhan dengan menambahkan pipeline CI/CD aplikasi terpisah 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 beberapa 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 mem-build 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 berjalan. Jika 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 mengeksternalkan konfigurasi container sehingga informasi konfigurasi dibaca selama runtime.

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 menyertakan 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 kumpulan pod (penampung) 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 menjangkau layanan virtual. Digunakan dalam blueprint untuk mengonfigurasi load balancing lokalitas untuk traffic east-west.

Kebijakan otorisasi

Menetapkan kontrol akses antar-workload di mesh layanan.

Akun layanan Kubernetes

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

Gateway

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

GCPBackendPolicy

Konfigurasikan SSL, Google Cloud Armor, afinitas sesi, dan pemborosan 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 blueprint.

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 di pipeline setelah hasil pemindaian berhasil.
  6. Otorisasi Biner menandatangani image. Otorisasi Biner adalah layanan di Google Cloud yang menyediakan keamanan supply chain software untuk aplikasi berbasis container dengan menggunakan kebijakan, aturan, catatan, pengesahan, attestor, dan penanda tangan. Pada waktu deployment, penegak kebijakan Binary Authorization 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 analisis 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 akan membuat rilis Cloud Deploy baru untuk meluncurkan image container yang baru dibuat secara bertahap ke setiap lingkungan.
  2. Cloud Deploy memulai peluncuran ke lingkungan pertama pipeline deployment, yang biasanya adalah pengembangan. Setiap tahap deployment dikonfigurasi agar 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 penampung yang di-deploy. Langkah-langkah ini dapat dikonfigurasi dalam konfigurasi Skaffold untuk aplikasi.

Men-deploy aplikasi baru

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

Proses untuk men-deploy aplikasi.

Proses untuk menentukan aplikasi baru adalah sebagai berikut:

  1. Operator aplikasi menentukan aplikasi baru dalam tenant mereka dengan menjalankan pemicu Cloud Build untuk membuat definisi aplikasi.
  2. Pemicu menambahkan entri baru untuk aplikasi di Terraform dan melakukan commit terhadap perubahan ke repositori factory aplikasi.
  3. Perubahan yang di-commit memicu pembuatan repositori dan project 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 single-tenant khusus, satu untuk setiap lingkungan.

Pengelolaan kebijakan dan konfigurasi GKE Enterprise

Dalam blueprint, 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 sebenarnya dari konfigurasi di cluster dan merekonsiliasi perbedaan apa pun 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 cabang di repositori.

Dalam blueprint ini, Config Sync menerapkan batasan Policy Controller. Konfigurasi ini menentukan kontrol keamanan dan kepatuhan seperti yang ditentukan oleh administrator platform developer untuk organisasi. Blueprint ini mengandalkan pipeline lain untuk menerapkan konfigurasi lainnya: pipeline CI/CD aplikasi menerapkan konfigurasi khusus aplikasi, dan pipeline cakupan fleet membuat namespace dan binding peran terkait.

Langkah selanjutnya