Arsitektur layanan

Last reviewed 2023-12-20 UTC

Layanan Kubernetes adalah abstraksi yang memungkinkan Anda mengekspos kumpulan pod sebagai satu entity. Layanan adalah elemen penyusun dasar untuk mengekspos dan mengelola aplikasi dalam container di cluster Kubernetes. Layanan dalam blueprint ini dirancang dengan cara standar dengan mempertimbangkan ruang nama, identitas, eksposur layanan, dan komunikasi antarlayanan.

Namespace

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

Eksposur layanan

Layanan terekspos ke internet melalui pengontrol Gateway GKE. Pengontrol Gateway GKE membuat load balancer menggunakan Cloud Load Balancing dalam konfigurasi multi-cluster dan multi-region. Cloud Load Balancing menggunakan infrastruktur jaringan Google untuk menyediakan layanan dengan alamat IP anycast yang memungkinkan akses latensi 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 lebih dilindungi oleh Cloud Armour dan Cloud CDN. Diagram berikut menunjukkan cara layanan diekspos ke internet.

Layanan cetak biru yang terekspos ke internet.

Anthos Service Mesh

Blueprint menggunakan Anthos Service Mesh untuk autentikasi dan otorisasi bersama bagi semua komunikasi antarlayanan. Untuk deployment ini, Anthos Service Mesh menggunakan CA Service untuk menerbitkan sertifikat TLS guna mengautentikasi pembanding dan membantu memastikan bahwa hanya klien yang diotorisasi yang dapat mengakses layanan. Penggunaan mutual TLS (mTLS) untuk autentikasi juga membantu memastikan bahwa semua komunikasi TCP antar-layanan dienkripsi saat dalam pengiriman. Untuk traffic masuk layanan ke mesh layanan, blueprint menggunakan pengontrol Gateway GKE.

Layanan terdistribusi

Layanan terdistribusi adalah abstraksi dari layanan Kubernetes yang berjalan di namespace yang sama di beberapa cluster. Layanan terdistribusi tetap tersedia meskipun satu atau beberapa cluster GKE tidak tersedia, selama cluster responsif yang tersisa dapat melayani beban. Untuk membuat layanan terdistribusi di seluruh cluster, Anthos Service Mesh menyediakan konektivitas Lapisan 4 dan Lapisan 7 di antara layanan aplikasi pada semua cluster di lingkungan. Konektivitas ini memungkinkan layanan Kubernetes di beberapa cluster untuk bertindak 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 dengan layanan tersebut. Blueprint mengonfigurasi Workload Identity agar akun layanan Kubernetes dapat berfungsi sebagai akun layanan Google 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 diotentikasi sebagai akun layanan Google Cloud. Setiap layanan hanya memiliki izin minimal yang diperlukan agar layanan dapat beroperasi.

Langkah selanjutnya