Diagram berikut menunjukkan arsitektur tingkat tinggi yang di-deploy oleh blueprint untuk satu lingkungan. Anda men-deploy arsitektur ini di tiga lingkungan terpisah: produksi, non-produksi, dan pengembangan.
Diagram ini mencakup hal berikut:
- Cloud Load Balancing mendistribusikan traffic aplikasi di seluruh region ke objek layanan Kubernetes. Di balik setiap layanan terdapat pengelompokan logis pod terkait.
- Cloud Service Mesh memungkinkan layanan Kubernetes berkomunikasi satu sama lain.
- Layanan Kubernetes dikelompokkan ke dalam tenant, yang direpresentasikan sebagai namespace Kubernetes. Tenant adalah abstraksi yang mewakili beberapa pengguna dan workload yang beroperasi di cluster, dengan RBAC terpisah untuk kontrol akses. Setiap tenant juga memiliki projectnya sendiri untuk resource cloud khusus tenant seperti database, bucket penyimpanan, dan langganan Pub/Sub.
- Namespace dengan identitasnya sendiri untuk mengakses layanan peer dan resource cloud. Identitas konsisten di seluruh namespace yang sama di cluster yang berbeda karena Workload Identity Federation for GKE. Setiap lingkungan memiliki workload identity pool terpisah untuk mengurangi eskalasi hak istimewa antar-lingkungan.
- Setiap layanan memiliki pipeline khusus yang mem-build dan men-deploy layanan tersebut. Pipeline yang sama digunakan untuk men-deploy layanan ke lingkungan pengembangan, lalu men-deploy layanan ke lingkungan non-produksi, dan akhirnya men-deploy layanan ke lingkungan produksi.
Keputusan arsitektur utama untuk platform developer
Tabel berikut menjelaskan keputusan arsitektur yang diterapkan oleh blueprint.
Area keputusan | keputusan | Alasan |
---|---|---|
Men-deploy di beberapa region. |
Mengizinkan ketersediaan aplikasi selama pemadaman layanan di wilayah. |
|
Men-deploy di atas blueprint dasar-dasar perusahaan. |
Gunakan struktur organisasi dan kontrol keamanan yang disediakan oleh foundation. |
|
Gunakan tiga folder lingkungan yang disiapkan di foundation:
|
Berikan isolasi untuk lingkungan yang memiliki kontrol akses yang berbeda. |
|
Memaketkan dan men-deploy aplikasi sebagai container. |
Mendukung pemisahan tanggung jawab, operasi yang efisien, dan portabilitas aplikasi. |
|
Menjalankan aplikasi di cluster GKE. |
Gunakan layanan penampung terkelola yang dibuat oleh perusahaan yang memprakarsai penampung. |
|
Replikasi dan jalankan penampung aplikasi dalam konfigurasi aktif-aktif. |
Mencapai ketersediaan yang lebih tinggi dan peluncuran progresif yang cepat, sehingga meningkatkan kecepatan pengembangan. |
|
Sediakan lingkungan produksi dengan dua cluster GKE di dua region yang berbeda. |
Mencapai ketersediaan yang lebih tinggi daripada satu region cloud. |
|
Sediakan lingkungan non-produksi dengan dua cluster GKE di dua region yang berbeda. |
Lakukan staging perubahan pada setelan lintas region, seperti load balancer, sebelum deployment ke produksi. |
|
Sediakan lingkungan pengembangan dengan satu instance cluster GKE. |
Membantu mengurangi biaya. |
|
Konfigurasikan bidang kontrol yang sangat tersedia untuk setiap cluster GKE. |
Pastikan panel kontrol cluster tersedia selama upgrade dan perubahan ukuran. |
|
Gunakan konsep kesamaan di seluruh namespace, layanan, dan identitas di setiap cluster GKE. |
Pastikan objek Kubernetes dengan nama yang sama di cluster yang berbeda diperlakukan sebagai hal yang sama. Normalisasi ini dilakukan untuk mempermudah pengelolaan resource armada. |
|
Aktifkan ruang alamat IP pribadi untuk cluster GKE melalui akses Private Service Connect ke bidang kontrol dan kumpulan node pribadi. |
Membantu melindungi API cluster Kubernetes dari serangan pemindaian. |
|
Aktifkan akses administratif ke cluster GKE melalui gateway Connect. |
Gunakan satu perintah untuk mengambil kredensial guna mengakses beberapa cluster. Gunakan grup dan penyedia identitas pihak ketiga untuk mengelola akses cluster. |
|
Gunakan Cloud NAT untuk memberi pod GKE akses ke resource dengan alamat IP publik. |
Meningkatkan postur keamanan cluster secara keseluruhan, karena pod tidak terekspos langsung ke internet, tetapi masih dapat mengakses resource yang menghadap internet. |
|
Konfigurasikan node untuk menggunakan Container-Optimized OS dan Node GKE yang Terlindungi. |
Batasi permukaan serangan node. |
|
Kaitkan setiap lingkungan dengan fleet GKE. |
Mengizinkan pengelolaan kumpulan cluster GKE sebagai satu unit. |
|
Gunakan pipeline infrastruktur dasar untuk men-deploy factory aplikasi, pipeline cakupan armada, dan pipeline infrastruktur multi-tenant. |
Menyediakan mekanisme yang dapat dikontrol, diaudit, dan berulang untuk men-deploy infrastruktur aplikasi. |
|
Konfigurasikan cluster GKE menggunakan fitur pengelolaan kebijakan dan konfigurasi GKE Enterprise. |
Menyediakan layanan yang memungkinkan konfigurasi sebagai kode untuk cluster GKE. |
|
Gunakan factory aplikasi untuk men-deploy pipeline CI/CD aplikasi yang digunakan dalam blueprint. |
Berikan pola yang dapat diulang untuk men-deploy pipeline aplikasi dengan lebih mudah. |
|
Gunakan pipeline CI/CD aplikasi untuk mem-build dan men-deploy komponen aplikasi blueprint. |
Berikan mekanisme yang dapat dikontrol, diaudit, dan diulang untuk men-deploy aplikasi. |
|
Konfigurasikan pipeline CI/CD aplikasi untuk menggunakan Cloud Build, Cloud Deploy, dan Artifact Registry. |
Gunakan layanan build dan deployment terkelola untuk mengoptimalkan keamanan, skalabilitas, dan kemudahan. |
|
Gunakan container yang tidak dapat diubah di seluruh lingkungan, dan tanda tangani container dengan Otorisasi Biner. |
Berikan asal kode yang jelas dan pastikan kode telah diuji di seluruh lingkungan. |
|
Gunakan Google Cloud Observability, yang mencakup Cloud Logging dan Cloud Monitoring. |
Sederhanakan operasi dengan menggunakan layanan terkelola terintegrasi Google Cloud. |
|
Aktifkan Container Threat Detection (layanan di Security Command Center) untuk memantau integritas container. |
Gunakan layanan terkelola yang meningkatkan keamanan dengan terus memantau penampung. |
|
Kontrol akses ke cluster GKE dengan kontrol akses berbasis peran (RBAC) Kubernetes, yang didasarkan pada Google Grup untuk GKE. |
Tingkatkan keamanan dengan menautkan kontrol akses ke identitas Google Cloud. |
|
Gunakan akun layanan Kubernetes unik untuk setiap layanan Kubernetes. Akun ini bertindak sebagai akun layanan IAM melalui penggunaan Workload Identity Federation untuk GKE. |
Tingkatkan keamanan dengan meminimalkan izin yang perlu diberikan oleh setiap layanan. |
|
Mengekspos layanan melalui GKE Gateway API. |
Menyederhanakan pengelolaan konfigurasi dengan menyediakan pendekatan berbasis deklaratif dan berbasis resource untuk mengelola aturan masuk dan konfigurasi load-balancing. |
|
Menjalankan layanan sebagai layanan terdistribusi melalui penggunaan Cloud Service Mesh dengan Certificate Authority Service. |
Memberikan keamanan yang lebih baik melalui penerapan autentikasi antara layanan dan juga memberikan toleransi error otomatis dengan mengalihkan traffic dari layanan yang tidak sehat. |
|
Gunakan replikasi lintas wilayah untuk AlloyDB untuk PostgreSQL. |
Menyediakan ketersediaan tinggi di lapisan database. |
|
Instance VPC Bersama dikonfigurasi di setiap lingkungan dan cluster GKE dibuat di project layanan. |
VPC Bersama menyediakan pengelolaan konfigurasi jaringan terpusat sekaligus mempertahankan pemisahan lingkungan. |
|
Gunakan Cloud Load Balancing dalam konfigurasi multi-cluster, multi-region. |
Berikan satu alamat IP anycast untuk mengakses cluster GKE regional untuk layanan ketersediaan tinggi dan latensi rendah. |
|
Gunakan koneksi HTTPS untuk akses klien ke layanan. Alihkan permintaan HTTP klien ke HTTPS. |
Membantu melindungi data sensitif dalam pengiriman dan membantu mencegah serangan man-in-the-middle. |
|
Gunakan Pengelola Sertifikat untuk mengelola sertifikat publik. |
Mengelola sertifikat dengan cara terpadu. |
|
Lindungi antarmuka web dengan Google Cloud Armor. |
Tingkatkan keamanan dengan melindungi dari kerentanan aplikasi web umum dan serangan volumetrik. |
Keputusan Anda mungkin berbeda dari blueprint. Untuk informasi tentang alternatif, lihat Alternatif untuk rekomendasi default.
Langkah berikutnya
- Baca kontrol platform developer (dokumen berikutnya dalam rangkaian ini).