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.
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 |
---|---|---|---|---|
|
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 |
|
Developer platform developer |
Administrator platform developer |
Infrastruktur multi-tenant |
Modul Terraform yang digunakan oleh tim platform developer saat mereka membuat infrastruktur |
|
Developer platform developer |
Administrator platform developer |
Cakupan fleet |
Repositori yang menentukan cakupan tim dan namespace fleet di fleet |
|
Developer platform developer |
Administrator platform developer |
Factory aplikasi |
Kode yang menentukan repositori aplikasi dan mereferensikan
modul di repositori |
|
Developer aplikasi |
Operator aplikasi |
Factory aplikasi |
Kode dasar yang ditempatkan di repositori |
|
Developer platform developer |
Administrator platform developer |
Factory aplikasi Infrastruktur multi-tenant |
Modul Terraform yang menentukan aplikasi dan infrastruktur |
|
Developer aplikasi |
Operator aplikasi |
CI/CD Aplikasi |
Kode aplikasi yang di-deploy ke cluster GKE |
|
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 |
---|---|
Membuat infrastruktur bersama yang digunakan oleh semua tenant platform developer. |
|
Membuat namespace dan binding peran RBAC. |
|
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.
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. |
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 |
---|---|
Mendefinisikan cluster logis dalam cluster fisik. |
|
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.
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 |
---|---|
Menentukan kumpulan pod (penampung) yang diskalakan. |
|
Membuat deployment dapat dijangkau melalui jaringan cluster. |
|
Membuat layanan menjadi bagian dari mesh layanan. |
|
Menentukan cara peer di mesh layanan menjangkau layanan virtual. Digunakan dalam blueprint untuk mengonfigurasi load balancing lokalitas untuk traffic east-west. |
|
Menetapkan kontrol akses antar-workload di mesh layanan. |
|
Menentukan identitas yang digunakan oleh layanan Kubernetes. Workload Identity Federation untuk GKE menentukan akun layanan Google Cloud yang digunakan untuk mengakses resource Google Cloud. |
|
Mengizinkan traffic masuk eksternal untuk menjangkau layanan. Gateway hanya diperlukan oleh deployment yang menerima traffic eksternal. |
|
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. |
|
Mengonfigurasi pengumpulan metrik Prometheus yang diekspor oleh aplikasi. |
Continuous integration
Diagram berikut menunjukkan proses integrasi berkelanjutan.
Prosesnya adalah sebagai berikut:
- Developer melakukan commit kode aplikasi ke repositori sumber aplikasi. Operasi ini memicu Cloud Build untuk memulai pipeline integrasi.
- Cloud Build membuat image container, mengirimkan image container ke Artifact Registry, dan membuat ringkasan image.
- Cloud Build melakukan pengujian otomatis untuk aplikasi. Bergantung pada bahasa aplikasi, paket pengujian yang berbeda dapat dilakukan.
- Cloud Build melakukan pemindaian berikut pada image container:
- Cloud Build menganalisis container menggunakan framework Pengujian Struktur Container. Framework ini menjalankan pengujian perintah, pengujian keberadaan file, pengujian konten file, dan pengujian metadata.
- Cloud Build menggunakan vulnerability scanning untuk mengidentifikasi kerentanan dalam image container terhadap database kerentanan yang dikelola oleh Google Cloud.
- Cloud Build menyetujui image untuk melanjutkan di pipeline setelah hasil pemindaian berhasil.
- 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.
- 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.
Prosesnya adalah sebagai berikut:
- 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.
- Cloud Deploy memulai peluncuran ke lingkungan pertama pipeline deployment, yang biasanya adalah pengembangan. Setiap tahap deployment dikonfigurasi agar memerlukan persetujuan manual.
- Pipeline Cloud Deploy menggunakan deployment berurutan untuk men-deploy image ke setiap cluster dalam lingkungan secara berurutan.
- 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 menentukan aplikasi baru adalah sebagai berikut:
- Operator aplikasi menentukan aplikasi baru dalam tenant mereka dengan menjalankan pemicu Cloud Build untuk membuat definisi aplikasi.
- Pemicu menambahkan entri baru untuk aplikasi di Terraform dan melakukan commit terhadap perubahan ke repositori factory aplikasi.
- Perubahan yang di-commit memicu pembuatan repositori dan project khusus aplikasi.
- Cloud Build menyelesaikan hal berikut:
- Membuat dua repositori Git baru untuk menghosting kode sumber dan IaC aplikasi.
- Mendorong manifes Kubernetes untuk kebijakan jaringan, dan Workload Identity Federation untuk GKE ke repositori Pengelolaan konfigurasi.
- Membuat project CI/CD aplikasi dan pemicu IaC Cloud Build.
- Pemicu IaC Cloud Build untuk aplikasi membuat pipeline CI/CD aplikasi dan repositori Artifact Registry di project CI/CD aplikasi.
- Config Sync men-deploy kebijakan jaringan dan konfigurasi Workload Identity Federation untuk GKE ke cluster GKE multi-tenant.
- Pipeline pembuatan cakupan fleet membuat cakupan fleet dan namespace untuk aplikasi di cluster GKE multi-tenant.
- Pipeline CI/CD aplikasi melakukan deployment awal aplikasi ke cluster GKE.
- 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
- Baca tentang arsitektur aplikasi Cymbal Bank (dokumen berikutnya dalam seri ini).