Arsitektur layanan

Last reviewed 2024-12-13 UTC

Layanan Kubernetes adalah abstraksi yang memungkinkan Anda mengekspos sekumpulan pod sebagai satu entitas. Layanan adalah elemen penyusun dasar untuk mengekspos dan mengelola aplikasi dalam container di cluster Kubernetes. Layanan dalam blueprint ini dirancang dengan cara yang standar dengan mempertimbangkan namespace, identitas, eksposur layanan, dan komunikasi layanan ke layanan.

Setiap namespace memiliki kumpulan resource-nya sendiri, seperti pod, layanan, dan deployment. Namespace memungkinkan Anda mengatur aplikasi dan mengisolasinya satu sama lain. Blueprint menggunakan namespace untuk mengelompokkan layanan berdasarkan tujuannya. Misalnya, Anda dapat membuat namespace untuk semua layanan frontend dan namespace untuk layanan backend. Pengelompokan ini mempermudah pengelolaan layanan Anda dan mengontrol akses ke layanan tersebut.

Eksposur layanan

Layanan diekspos ke internet melalui GKE Gateway Controller. Pengontrol Gateway GKE membuat load balancer menggunakan Cloud Load Balancing dalam konfigurasi multi-cluster, multi-region. Cloud Load Balancing menggunakan infrastruktur jaringan Google untuk menyediakan layanan dengan alamat IP anycast yang memungkinkan akses berlatensi rendah ke layanan. Akses klien ke layanan dilakukan melalui koneksi HTTPS dan permintaan HTTP klien dialihkan ke HTTPS. Load balancer menggunakan Pengelola Sertifikat untuk mengelola sertifikat publik. Layanan dilindungi lebih lanjut oleh Cloud Armor dan Cloud CDN. Diagram berikut menunjukkan cara layanan diekspos ke internet.

Layanan Blueprint yang terekspos ke internet.

Mesh Layanan Cloud

Blueprint ini menggunakan Cloud Service Mesh untuk autentikasi timbal balik dan otorisasi untuk semua komunikasi antar-layanan. Untuk deployment ini, Cloud Service Mesh menggunakan Layanan CA untuk menerbitkan sertifikat TLS guna mengautentikasi peer dan membantu memastikan bahwa hanya klien yang diotorisasi yang dapat mengakses layanan. Menggunakan TLS bersama (mTLS) untuk autentikasi juga membantu memastikan bahwa semua komunikasi TCP antarlayanan dienkripsi saat transit. Untuk traffic masuk layanan ke dalam mesh layanan, blueprint menggunakan pengontrol GKE Gateway.

Layanan terdistribusi

Layanan terdistribusi adalah abstraksi layanan Kubernetes yang berjalan di namespace yang sama di beberapa cluster. Layanan terdistribusi tetap tersedia meskipun satu atau beberapa cluster GKE tidak tersedia, asalkan cluster yang responsif dapat melayani beban. Untuk membuat layanan terdistribusi di seluruh cluster, Cloud Service Mesh menyediakan konektivitas Lapisan 4 dan Lapisan 7 antara layanan aplikasi di semua cluster dalam lingkungan. Konektivitas ini memungkinkan layanan Kubernetes di beberapa cluster berfungsi sebagai satu layanan logis. Traffic antar-cluster hanya dirutekan ke region lain jika traffic intra-region tidak dapat terjadi karena kegagalan regional.

Service identity

Layanan yang berjalan di GKE memiliki identitas yang terkait dengannya. Blueprint mengonfigurasi Workload Identity Federation untuk GKE agar akun layanan Kubernetes dapat bertindak sebagai akun layananGoogle Cloud . Setiap instance layanan terdistribusi dalam lingkungan yang sama memiliki identitas umum yang menyederhanakan pengelolaan izin. Saat mengakses Google Cloud API, layanan yang berjalan sebagai akun layanan Kubernetes akan otomatis melakukan autentikasi sebagai akun layanan Google Cloud . Setiap layanan hanya memiliki izin minimal yang diperlukan agar layanan dapat beroperasi.

Langkah selanjutnya