Metodologi penerapan

Last reviewed 2023-12-20 UTC

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

Pipeline blueprint.

Blueprint menggunakan pipeline berikut:

  • Pipeline infrastruktur dasar (bagian dari blueprint fondasi perusahaan) men-deploy factory aplikasi, pipeline infrastruktur multi-tenant, dan pipeline cakupan fleep.
  • Pipeline infrastruktur multi-tenant men-deploy cluster GKE, dan layanan terkelola lainnya yang diandalkan oleh 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 selama blueprint, yang berkontribusi pada repositori, yang menyetujui perubahan pada repositori, pipeline mana yang menggunakan repositori, dan deskripsi isi repositori.

Repositori Kontributor repositori Pemberi persetujuan perubahan repositori Pipeline Deskripsi

infra

Developer platform developer

Administrator platform developer

Pipeline infrastruktur dasar

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

eab-infra

Developer platform developer

Administrator platform developer

Infrastruktur multi-tenant

Modul Terraform yang digunakan oleh tim platform developer saat membuat infrastruktur

fleet-scope

Developer platform developer

Administrator platform developer

Cakupan armada

Repositori yang menentukan cakupan dan namespace tim fleet dalam fleet

app-factory

Developer platform developer

Administrator platform developer

Factory aplikasi

Kode yang menentukan repositori aplikasi dan merujuk 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 mengelola konfigurasinya

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

Pipeline infrastruktur dasar

Pipeline infrastruktur dasar dijelaskan dalam blueprint fondasi perusahaan dan digunakan sebagai titik masuk 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 fleet

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 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.

Rahasia Secret Manager

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

Kebijakan keamanan Google Cloud Armor

Menyediakan kebijakan yang digunakan oleh firewall aplikasi web Google 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 di-build oleh pipeline cakupan fleet.

Komponen Deskripsi

Namespace

Mendefinisikan cluster logis dalam cluster fisik.

RBAC (peran dan binding)

Menentukan otorisasi yang dimiliki akun layanan Kubernetes pada level cluster atau level namespace.

Factory aplikasi

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

Seiring penskalaan organisasi teknik, tim aplikasi dapat mengaktivasi 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-hal berikut:
    • Membuat definisi aplikasi deklaratif dan menyimpannya dalam 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 aplikasi yang dibuat oleh factory 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 Secure CI/CD.

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, build image baru dan deploy ulang. Penggunaan image container yang tidak dapat diubah mengharuskan Anda untuk mengeksternalkan konfigurasi container sehingga informasi konfigurasi dibaca selama waktu proses.

Untuk mencapai 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. Dengan konfigurasi ini, aplikasi dapat berhasil dijalankan sebagai layanan Kubernetes di GKE. Tabel berikut ini menjelaskan jenis-jenis konfigurasi Kubernetes yang diterapkan oleh pipeline CI/CD aplikasi.

Komponen Deskripsi

Deployment

Menentukan kumpulan pod yang diskalakan (container).

Layanan

Membuat deployment dapat dijangkau melalui jaringan cluster.

Layanan virtual

Membuat bagian layanan dari mesh layanan.

Aturan tujuan

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

Kebijakan otorisasi

Menetapkan kontrol akses antar-beban kerja di mesh layanan.

Akun layanan Kubernetes

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

Gateway

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

GCPBackendPolicy

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

PodMonitoring

Mengonfigurasi kumpulan metrik Prometheus yang diekspor oleh aplikasi.

Continuous integration

Diagram berikut menunjukkan proses continuous integration.

Proses blueprint continuous integration.

Prosesnya adalah sebagai berikut:

  1. Developer meng-commit kode aplikasi ke repositori sumber aplikasi. Operasi ini memicu Cloud Build untuk memulai pipeline integrasi.
  2. Cloud Build membuat image container, mengirim image container ke Artifact Registry, dan membuat ringkasan gambar.
  3. Cloud Build melakukan pengujian otomatis untuk aplikasi. Bergantung pada bahasa aplikasi, paket pengujian yang berbeda dapat dijalankan.
  4. Cloud Build melakukan pemindaian berikut pada image container:
    1. Cloud Build menganalisis container menggunakan framework Pengujian Struktur Container. Framework ini melakukan pengujian perintah, pengujian keberadaan file, pengujian konten file, dan pengujian metadata.
    2. Cloud Build menggunakan pemindaian kerentanan untuk mengidentifikasi kerentanan apa pun 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 supply chain software untuk aplikasi berbasis container dengan menggunakan kebijakan, aturan, catatan, attestations, pengacara, dan penandatanganan. Pada waktu deployment, pelaksana kebijakan Otorisasi Biner membantu memastikan keberadaan 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 Artifact Analysis, dan level jaminan keamanan build yang ditunjukkan oleh panduan SLSA.

Saat membangun aplikasi, Anda harus mengikuti praktik terbaik untuk membangun container.

Deployment berkelanjutan

Diagram berikut menunjukkan proses deployment berkelanjutan.

Proses blueprint continuous deployment.

Prosesnya adalah sebagai berikut:

  1. Di akhir proses build, pipeline CI/CD aplikasi 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 merupakan pengembangan. Setiap tahap deployment dikonfigurasi untuk mewajibkan persetujuan manual.
  3. Pipeline Cloud Deploy menggunakan deployment berurutan untuk men-deploy image ke setiap cluster dalam lingkungan secara berurutan.
  4. Pada akhir setiap tahap deployment, Cloud Deploy verifies fungsi container 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 bekerja sama untuk membuat dan men-deploy aplikasi baru.

Proses untuk men-deploy aplikasi.

Proses untuk menetapkan aplikasi baru adalah sebagai berikut:

  1. Operator aplikasi menentukan aplikasi baru dalam tenantnya dengan menjalankan pemicu Cloud Build untuk membuat definisi aplikasi.
  2. Pemicu ini menambahkan entri baru untuk aplikasi di Terraform dan meng-commit 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. Mengirim manifes Kubernetes untuk kebijakan jaringan, dan Workload Identity ke repositori Configuration management.
    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 pada project CI/CD aplikasi.
  6. Config Sync men-deploy kebijakan jaringan dan konfigurasi Workload Identity ke cluster GKE multi-tenant.
  7. Pipeline pembuatan cakupan fleet membuat cakupan dan namespace fleet 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 Cloud Build IaC untuk men-deploy project dan resource tambahan (misalnya, database dan layanan terkelola lainnya) ke project tenant tunggal khusus, satu untuk setiap lingkungan.

Konfigurasi dan pengelolaan kebijakan GKE Enterprise

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

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

Langkah selanjutnya