Cara kerja fleet

Halaman ini memberikan penjelasan lebih mendalam tentang cara fleet membantu Anda mengelola deployment multi-cluster, termasuk beberapa terminologi dan konsep fleet utama. Fleet adalah konsep Google Cloud untuk mengatur cluster dan resource lainnya secara logis, serta memungkinkan Anda menggunakan dan mengelola kemampuan multi-cluster serta menerapkan kebijakan yang konsisten di seluruh sistem Anda. Fleet membentuk bagian penting dari cara kerja fungsi multi-cluster perusahaan di Google Cloud.

Panduan ini dirancang untuk pembaca teknis, termasuk arsitek sistem, operator platform, dan operator layanan, yang ingin memanfaatkan beberapa cluster dan infrastruktur terkait. Konsep ini berguna di mana pun organisasi Anda menjalankan beberapa cluster, baik di Google Cloud, di beberapa penyedia cloud, maupun di lokal.

Anda harus memahami konsep dasar Kubernetes seperti cluster dan namespace; jika belum, lihat dasar-dasar Kubernetes, dokumentasi GKE, dan Menyiapkan aplikasi untuk Cloud Service Mesh.

Jika Anda ingin mempelajari lebih lanjut platform GKE Enterprise dan komponen yang menggunakan fleet, lihat ringkasan teknis GKE Enterprise dan tutorial Menjelajahi GKE Enterprise. Namun, Anda tidak perlu memahami GKE Enterprise untuk mengikuti panduan ini.

Terminologi

Berikut adalah beberapa istilah penting yang kami gunakan saat membahas fleet.

Resource yang mengetahui fleet

Resource yang mengetahui fleet adalah resource project Google Cloud yang dapat dikelompokkan dan dikelola secara logis sebagai fleet. Saat ini, hanya cluster Kubernetes yang dapat menjadi anggota fleet.

Project host fleet

Penerapan fleet, seperti banyak resource Google Cloud lainnya, berakar pada project Google Cloud, yang kami sebut sebagai project host fleet. Project Google Cloud tertentu hanya dapat memiliki satu fleet (atau tidak ada fleet) yang terkait dengannya. Batasan ini memperkuat penggunaan project Google Cloud untuk memberikan isolasi yang lebih kuat antara resource yang tidak diatur atau digunakan bersama.

Mengelompokkan infrastruktur

Konsep penting pertama dari fleet adalah konsep pengelompokan—yaitu, memilih bagian resource yang terkait dengan fleet-aware yang harus dijadikan bagian dari fleet. Keputusan tentang apa yang akan dikelompokkan bersama memerlukan jawaban atas pertanyaan berikut:

  • Apakah resource saling terkait?
    • Resource yang memiliki komunikasi lintas layanan dalam jumlah besar akan mendapatkan manfaat terbesar jika dikelola bersama dalam satu grup.
    • Resource di lingkungan deployment yang sama (misalnya, lingkungan produksi Anda) harus dikelola bersama dalam satu fleet.
  • Siapa yang mengelola resource?
    • Memiliki kontrol terpadu (atau setidaknya saling dipercaya) atas resource sangat penting untuk memastikan integritas inventaris.

Untuk mengilustrasikan hal ini, pertimbangkan organisasi yang memiliki beberapa lini bisnis (LOB). Dalam hal ini, layanan jarang berkomunikasi di seluruh batas LOB, layanan di LOB yang berbeda dikelola secara berbeda (misalnya, siklus upgrade berbeda di antara LOB), dan layanan tersebut bahkan mungkin memiliki kumpulan administrator yang berbeda untuk setiap LOB. Dalam hal ini, sebaiknya Anda memiliki fleet per LOB. Setiap LOB juga kemungkinan mengadopsi beberapa fleet untuk memisahkan layanan produksi dan non-produksi.

Saat konsep fleet lainnya dibahas di bagian berikut, Anda mungkin menemukan alasan lain untuk membuat beberapa fleet saat mempertimbangkan kebutuhan organisasi tertentu.

Kesamaan

Konsep penting dalam fleet adalah konsep kesamaan. Artinya, saat Anda menggunakan fitur tertentu yang diaktifkan untuk fleet, beberapa objek Kubernetes seperti namespace yang memiliki nama yang sama di cluster yang berbeda akan diperlakukan seolah-olah objek tersebut sama. Normalisasi ini dilakukan untuk mempermudah pengelolaan resource armada. Jika Anda menggunakan fitur yang memanfaatkan kesamaan, asumsi kesamaan ini memberikan beberapa panduan yang kuat tentang cara menyiapkan namespace, layanan, dan identitas. Namun, hal ini juga mengikuti apa yang kami temukan bahwa sebagian besar organisasi telah menerapkannya sendiri.

Berbagai jenis kesamaan memberikan manfaat yang berbeda, seperti yang ditunjukkan dalam tabel berikut:

Properti kesamaan Memungkinkan Anda...
Namespace dianggap sama di beberapa cluster.
  • Memberikan akses kepada pengguna di seluruh cluster.
  • Metrik agregat dan log di seluruh cluster.
Kombinasi namespace dan nama layanan dianggap sama di beberapa cluster. Layanan dengan nama yang sama di namespace yang sama menggunakan pemilih label yang sama.
  • Arahkan traffic dalam dan di seluruh cluster menggunakan Cloud Service Mesh.
  • Gunakan Layanan multi-cluster GKE untuk membuat layanan secara otomatis di beberapa cluster.
  • Gunakan Multi Cluster Ingress dan Gateway multi-cluster untuk menargetkan Multi Cluster Service.
Kombinasi namespace dan akun layanan (identitas) dianggap sama di beberapa cluster.
  • Tulis kebijakan IAM satu kali untuk sekumpulan beban kerja yang berjalan di cluster.
  • Tulis kebijakan otorisasi Cloud Service Mesh satu kali untuk serangkaian beban kerja yang berjalan di cluster.
  • Lakukan autentikasi ke peer di mesh layanan menggunakan sertifikat SPIFFE tanpa perbedaan di antara beban kerja dalam cluster.

Seperti yang ditunjukkan, fitur armada yang berbeda mengandalkan jenis kesamaan yang berbeda. Sejumlah kecil fitur tidak menggunakan kesamaan sama sekali. Anda dapat mempelajari lebih lanjut hal ini di Fitur mana yang menggunakan kesamaan?, termasuk fitur yang dapat Anda gunakan tanpa harus mempertimbangkan kesamaan di seluruh fleet dan fitur yang mungkin memerlukan perencanaan yang lebih cermat.

Kesamaan namespace

Contoh dasar kesamaan dalam fleet adalah kesamaan namespace. Namespace dengan nama yang sama di cluster yang berbeda dianggap sama oleh banyak fitur fleet. Cara lain untuk memahami properti ini adalah bahwa namespace ditentukan secara logis di seluruh fleet, meskipun pembuatan instance namespace hanya ada di sebagian resource fleet.

Perhatikan contoh namespace backend berikut. Meskipun instance namespace hanya dibuat di Cluster A dan B, namespace tersebut secara implisit dicadangkan di Cluster C (hal ini memungkinkan layanan di namespace backend juga dijadwalkan ke Cluster C jika diperlukan). Artinya, namespace dialokasikan untuk seluruh fleet, bukan per cluster. Dengan demikian, kesamaan namespace memerlukan kepemilikan namespace yang konsisten di seluruh fleet.

Diagram yang menggambarkan kesamaan namespace dalam fleet
Kesamaan namespace dalam fleet

Kesamaan layanan

Cloud Service Mesh dan Multi Cluster Ingress menggunakan konsep kesamaan layanan dalam namespace. Seperti kesamaan namespace, hal ini menyiratkan bahwa layanan dengan namespace dan nama layanan yang sama dianggap sebagai layanan yang sama.

Endpoint layanan dapat digabungkan di seluruh mesh dalam kasus Cloud Service Mesh. Dengan Multi Cluster Ingress, resource MultiClusterService (MCS) membuat penggabungan endpoint lebih eksplisit; namun, sebaiknya gunakan praktik serupa terkait penamaan. Oleh karena itu, penting untuk memastikan bahwa layanan yang bernama sama dalam namespace yang sama sebenarnya adalah hal yang sama.

Pada contoh berikut, traffic internet di-load balance di seluruh layanan bernama sama dalam namespace frontend yang ada di Cluster B dan C. Demikian pula, dengan menggunakan properti service mesh dalam fleet, layanan di namespace frontend dapat menjangkau layanan dengan nama yang sama di namespace auth yang ada di Cluster A dan C.

Diagram yang menggambarkan kesamaan layanan dalam grup perangkat
Kesamaan layanan dalam grup perangkat

Kesamaan identitas saat mengakses resource eksternal

Dengan Workload Identity Federation fleet, layanan dalam fleet dapat memanfaatkan identitas umum saat keluar untuk mengakses resource eksternal seperti layanan Google Cloud, object store, dan sebagainya. Identitas umum ini memungkinkan layanan dalam armada untuk mengakses resource eksternal satu kali, bukan per cluster.

Untuk mengilustrasikan hal ini lebih lanjut, pertimbangkan contoh berikut. Cluster A, B, dan C terdaftar dalam identitas umum dalam fleet mereka. Saat layanan di namespace backend mengakses resource Google Cloud, identitasnya akan dipetakan ke akun layanan Google Cloud umum yang disebut back. Akun layanan Google Cloud back dapat diberi otorisasi di sejumlah layanan terkelola, mulai dari Cloud Storage hingga Cloud SQL. Saat resource fleet baru seperti cluster ditambahkan di namespace backend, resource tersebut akan otomatis mewarisi properti kesamaan identitas beban kerja.

Karena kesamaan identitas, semua resource dalam fleet harus dipercaya dan dikelola dengan baik. Melihat kembali contoh sebelumnya, jika Cluster C dimiliki oleh tim terpisah yang tidak tepercaya, mereka juga dapat membuat namespace backend dan mengakses layanan terkelola seolah-olah mereka adalah backend di Cluster A atau B.

Diagram yang menggambarkan kesamaan identitas yang mengakses resource di luar fleet
Kesamaan identitas yang mengakses resource di luar fleet

Kesamaan identitas dalam fleet

Dalam fleet, kesamaan identitas digunakan dengan cara yang sama seperti kesamaan identitas eksternal yang telah kita bahas sebelumnya. Sama seperti layanan fleet yang diberi otorisasi satu kali untuk layanan eksternal, layanan tersebut juga dapat diberi otorisasi secara internal.

Dalam contoh berikut, kita menggunakan Cloud Service Mesh untuk membuat mesh layanan multi-cluster tempat frontend memiliki akses ke backend. Dengan Cloud Service Mesh dan armada, kita tidak perlu menentukan bahwa frontend di cluster B dan C dapat mengakses backend di Cluster A dan B. Sebagai gantinya, kita hanya menentukan bahwa frontend dalam fleet dapat mengakses backend dalam fleet. Properti ini tidak hanya membuat otorisasi lebih sederhana, tetapi juga membuat batas resource lebih fleksibel; sekarang workload dapat dengan mudah dipindahkan dari cluster ke cluster tanpa memengaruhi cara otorisasinya. Seperti kesamaan identitas beban kerja, tata kelola atas resource armada sangat penting untuk memastikan integritas komunikasi layanan ke layanan.

Diagram yang menggambarkan kesamaan identitas di dalam fleet
Kesamaan identitas di dalam grup

Fitur mana yang menggunakan kesamaan?

Sejumlah fitur fleet tidak bergantung pada kesamaan sama sekali, dan dapat diaktifkan serta digunakan tanpa harus mempertimbangkan apakah Anda ingin mengasumsikan bentuk kesamaan apa pun di seluruh fleet. Fitur lain (termasuk Config Sync dan Policy Controller) dapat menggunakan kesamaan - misalnya, jika Anda ingin memilih namespace di beberapa cluster anggota fleet untuk konfigurasi dari satu sumber tepercaya - tetapi tidak memerlukannya untuk semua kasus penggunaan. Terakhir, ada fitur seperti Multi Cluster Ingress dan Federasi Workload Identity seluruh fleet yang selalu mengasumsikan beberapa bentuk kesamaan di seluruh cluster, dan mungkin harus diterapkan dengan hati-hati bergantung pada kebutuhan Anda dan workload yang ada.

Beberapa fitur armada (seperti Workload Identity Federation armada) mengharuskan seluruh armada Anda siap untuk asumsi kesamaan yang digunakannya. Fitur lain seperti pengelolaan tim memungkinkan Anda secara bertahap memilih untuk menggunakan kesamaan di tingkat namespace atau cakupan tim.

Tabel berikut menunjukkan fitur yang require satu atau beberapa konsep kesamaan yang dijelaskan di bagian ini.

Fitur Mendukung penerapan kesamaan bertahap Bergantung pada kesamaan namespace Bergantung pada kesamaan layanan Bergantung pada kesamaan identitas
Fleet T/A Tidak Tidak Tidak
Otorisasi Biner T/A Tidak Tidak Tidak
Enkripsi transparan antar-node T/A Tidak Tidak Tidak
Kebijakan Jaringan Berbasis Nama Domain yang Memenuhi Syarat Sepenuhnya T/A Tidak Tidak Tidak
Menghubungkan gateway T/A Tidak Tidak Tidak
Config Sync T/A Tidak Tidak Tidak
Pengontrol Kebijakan T/A Tidak Tidak Tidak
Postur Keamanan GKE T/A Tidak Tidak Tidak
Advanced Vulnerability Insights T/A Tidak Tidak Tidak
Postur Kepatuhan T/A Tidak Tidak Tidak
Pengurutan peluncuran T/A Tidak Tidak Tidak
Pengelolaan tim Ya Ya Ya Tidak
Multi Cluster Ingress Ya Ya Ya Ya
Layanan Multi-Cluster Ya Ya Ya Ya
Workload Identity Federation Flotte Tidak Ya Ya Ya
Mesh Layanan Cloud Tidak Ya Ya Ya

Eksklusivitas

Resource yang mengetahui fleet hanya dapat menjadi anggota satu fleet pada waktu tertentu, yaitu batasan yang diterapkan oleh alat dan komponen Google Cloud. Batasan ini memastikan bahwa hanya ada satu sumber tepercaya yang mengatur cluster. Tanpa eksklusivitas, bahkan komponen yang paling sederhana sekalipun akan menjadi rumit untuk digunakan, sehingga organisasi Anda harus memahami dan mengonfigurasi cara beberapa komponen dari beberapa fleet akan berinteraksi.

Kepercayaan tinggi

Kesamaan layanan, kesamaan identitas beban kerja, dan kesamaan identitas mesh dibangun berdasarkan prinsip kepercayaan tinggi di antara anggota fleet. Kepercayaan ini memungkinkan peningkatan pengelolaan resource ini ke fleet, bukan mengelola resource per resource (yaitu, cluster per cluster untuk resource Kubernetes), dan pada akhirnya membuat batas cluster menjadi kurang penting.

Dengan kata lain, dalam fleet, cluster memberikan perlindungan dari masalah radius ledakan, ketersediaan (baik bidang kontrol maupun infrastruktur yang mendasarinya), tetangga yang berisik, dan sebagainya. Namun, batasan ini bukan merupakan batas isolasi yang kuat untuk kebijakan dan tata kelola karena administrator anggota apa pun dalam grup berpotensi memengaruhi operasi layanan di anggota grup lainnya.

Oleh karena itu, sebaiknya cluster yang tidak dipercaya oleh administrator fleet ditempatkan di fleet mereka sendiri agar tetap terisolasi. Kemudian, jika diperlukan, setiap layanan dapat diberi otorisasi di seluruh batas armada.

Cakupan tim

Cakupan tim adalah mekanisme untuk membagi lebih lanjut fleet Anda menjadi grup cluster, sehingga Anda dapat menentukan resource yang mengetahui fleet yang ditetapkan ke tim aplikasi tertentu. Bergantung pada kasus penggunaan Anda, setiap cluster anggota fleet dapat dikaitkan dengan tidak ada tim, satu tim, atau beberapa tim, sehingga beberapa tim dapat berbagi cluster. Anda juga dapat menggunakan cakupan tim untuk mengurutkan peluncuran upgrade cluster di seluruh fleet, meskipun hal ini mengharuskan setiap cluster hanya dikaitkan dengan satu tim.

Cakupan tim dapat memiliki namespace armada yang ditentukan secara eksplisit yang terkait dengannya, dengan namespace dianggap sama di seluruh cakupan. Hal ini memberi Anda kontrol yang lebih terperinci atas namespace dibandingkan kesamaan namespace default yang disediakan oleh fleet saja.

Komponen yang mendukung Fleet

Semua komponen GKE Enterprise dan GKE berikut memanfaatkan konsep fleet seperti kesamaan namespace dan identitas untuk memberikan cara yang lebih sederhana untuk menggunakan cluster dan layanan Anda. Untuk persyaratan atau batasan saat ini terkait penggunaan fleet dengan setiap komponen, lihat persyaratan komponen.

  • Workload identity pool
    Flot menawarkan workload identity pool umum yang dapat digunakan untuk melakukan autentikasi dan memberikan otorisasi pada beban kerja secara seragam dalam mesh layanan dan ke layanan eksternal.

  • Cloud Service Mesh
    Cloud Service Mesh adalah serangkaian alat yang membantu Anda memantau dan mengelola mesh layanan yang andal di Google Cloud, lokal, dan lingkungan yang didukung lainnya. Anda dapat membentuk mesh layanan di seluruh cluster yang merupakan bagian dari fleet yang sama.

  • Config Sync
    Config Sync memungkinkan Anda men-deploy dan memantau paket konfigurasi deklaratif untuk sistem yang disimpan di sumber tepercaya pusat, seperti repositori Git, yang memanfaatkan konsep inti Kubernetes seperti namespace, label, dan anotasi. Dengan Config Sync, konfigurasi ditentukan di seluruh armada, tetapi diterapkan dan diberlakukan secara lokal di setiap resource anggota.

  • Pengontrol Kebijakan
    Pengontrol Kebijakan memungkinkan Anda menerapkan dan menegakkan kebijakan deklaratif untuk cluster Kubernetes. Kebijakan ini berfungsi sebagai pembatasan dan dapat membantu pengelolaan praktik terbaik, keamanan, dan kepatuhan cluster dan fleet Anda.

  • Multi Cluster Ingress
    Multi Cluster Ingress menggunakan fleet untuk menentukan kumpulan cluster dan endpoint layanan yang dapat di-load balance oleh traffic, sehingga memungkinkan layanan dengan latensi rendah dan ketersediaan tinggi.

  • Penayangan Knative
    Penayangan Knative adalah platform developer Knative yang dikelola dan didukung Google yang memisahkan kompleksitas infrastruktur yang mendasarinya, sehingga memudahkan pembuatan, deployment, dan pengelolaan aplikasi dan layanan di seluruh cluster dalam armada Anda.

Apa langkah selanjutnya?