Ringkasan

Cloud Service Mesh menyediakan kemampuan jaringan layanan untuk aplikasi, termasuk pengelolaan traffic, kemampuan observasi, dan keamanan tingkat lanjut. Namun, mengonfigurasi dan mengoperasikan mesh layanan merupakan tugas yang kompleks. Halaman ini menjelaskan cara mengonfigurasi Cloud Service Mesh dengan Kubernetes Gateway API. API ini didesain untuk menyederhanakan dan meningkatkan mesh Anda secara keseluruhan konfigurasi standar.

Kubernetes Gateway API untuk Mesh memungkinkan Anda mengonfigurasi Cloud Service Mesh untuk baik deployment proxy Envoy maupun gRPC tanpa proxy. Gateway API untuk model Mesh memberikan beberapa manfaat utama:

  • Gateway API menyediakan satu antarmuka yang konsisten untuk mengelola kedua traffic masuk traffic (north-south) dan service mesh (east-west) dalam Kubernetes Anda .
  • Mesh layanan memungkinkan pola pemilihan rute traffic lanjutan. Gateway API mengizinkan Anda untuk merancang dan mengelola aturan {i>routing<i} yang kompleks.
  • Dengan Gateway API, developer dapat berfokus pada penetapan aturan pemilihan rute tingkat tinggi dan kebijakan ke microservice tanpa memerlukan pengetahuan mendalam tentang implementasi mesh layanan yang mendasarinya.
  • API ini dirancang agar dapat diperluas, memungkinkan peningkatan dan untuk protokol dan kasus penggunaan baru.
  • Gateway API memiliki dukungan komunitas yang kuat dan didukung oleh penyedia dan alat mesh layanan.

Inisiatif GAMMA berfungsi untuk kasus penggunaan mesh layanan pendukung telah menjadi bagian dari Saluran Standar sejak v1.1.0 dan dianggap sebagai GA.

Spesifikasi mengusulkan bahwa pemilik aplikasi harus mengonfigurasi aturan traffic untuk mesh layanan dengan mengonfigurasi Route resource (terkadang disebut sebagai xRoute) dengan resource Service Kubernetes sebagai parentRef. Pendekatan ini tergantung pada "Frontend" Service Kubernetes dan "backend" peran seperti yang ditentukan dalam GEP-1324: Service Mesh di Gateway API, yang mana “frontend” digunakan sebagai parentRef dan "backend" peran Service digunakan sebagai backendRef. Implementasi yang sesuai menggunakan Nama Service agar cocok dengan traffic dan endpoint backendRef untuk IP kanonis untuk alamat internal dan eksternal.

Gateway API untuk Mesh

Gateway API, Kubernetes , berfokus pada perutean Lapisan 4 dan 7 dalam Kubernetes. Perintah ini berhasil untuk Ingress, Load Balancing, dan Service Mesh API. Didesain agar serbaguna, deskriptif, dan berpusat pada peran, konfigurasinya terutama ada di lapisan {i>Routing<i}. Resource khusus protokol seperti HTTPRoute dan GRPCRoute mengaktifkan traffic masuk dan perutean mesh.

GAMMA Initiative (Gateway API untuk Service Mesh) menentukan cara Gateway API juga dapat digunakan untuk antar-layanan atau traffic Timur/Barat dalam cluster yang sama. GAMMA bertujuan untuk menetapkan cara menggunakan Gateway API untuk mengonfigurasi mesh layanan dengan modifikasi minimal pada Gateway API sekaligus mempertahankan berorientasi pada peran alam. GAMMA juga menekankan pentingnya mendorong konsistensi di antara berbagai implementasi mesh layanan Gateway API, teknologi atau {i>proxy<i} yang mendasarinya.

GAMMA memanfaatkan titik ekstensibilitas yang ada dalam spesifikasi Gateway API, yang mengharuskan tidak ada perubahan API atau resource baru. Hal ini dilakukan dengan memperluas resource rute (GRPCRoute) atau HTTPRoute di Gateway API) untuk menandai kasus penggunaan mesh layanan, khususnya dengan mengaitkan resource rute dengan resource Service seperti yang dijelaskan dalam Gateway API untuk Service Mesh.

Contoh berikut mengilustrasikan kasus penggunaan mesh dalam penggunaan HTTPRoute:

apiVersion:  gateway.networking.k8s.io
kind: HTTPRoute
metadata:
  name: echo-route
spec:
  parentRefs:
  - kind: Service
    group: ""
    name: echo-service
  rules:
  - backendRefs:
    - name: echo-v1
      port: 80
      weight: 9
  - backendRefs:
    - name: echo-v2
      port: 80
      weight: 1

Diagram HTTPRoute

HTTPRoute mereferensikan Service sebagai parentRef-nya, yang menunjukkan bahwa Rute HTTPRoute dikonfigurasi untuk kasus penggunaan mesh layanan. Pada contoh sebelumnya, Layanan echo-service ditetapkan sebagai parentRef, yang berarti HTTPRoute dilampirkan ke frontend echo-service. Setiap lalu lintas yang dikirim ke {i>echo-service<i} oleh klien diarahkan sesuai dengan echo-route di HTTPRoute.

GRPCRoute adalah resource Kubernetes Gateway API lainnya, yang digunakan untuk merutekan Traffic gRPC ke layanan Kubernetes. Pengguna memilih untuk menggunakan GRPCRoute, bukan HTTPRoute saat mereka ingin secara khusus merutekan traffic gRPC dan memanfaatkan fitur yang disesuaikan untuk gRPC, seperti metode gRPC dan pencocokan layanan.

Contoh berikut mengilustrasikan penggunaan GRPCRoute:

apiVersion:  gateway.networking.k8s.io
kind: GRPCRoute
metadata:
  name: echo-route
spec:
  parentRefs:
  - kind: Service
    group: ""
    name: echo-service
  rules:
   - matches:
    - method:
        service:echo_basic.grpcecho.GrpcEcho
        method: Echo
    backendRefs:
    - name: grpc-infra-backend-v1
      port: 8080
  - matches:
    - method:
        service:echo_basic.grpcecho.GrpcEcho
        method: EchoTwo
    backendRefs:
    - name: grpc-infra-backend-v2
      port: 8080

Diagram GRPCRoute

Sama seperti contoh HTTPRoute, GRPCRoute ini dikonfigurasi untuk mesh layanan kasus penggunaan. Semua traffic yang dikirim ke xds:///echo-service.default.svc.cluster.local:8080 oleh klien gRPC tanpa proxy diarahkan sesuai dengan echo-route GRPCRoute. Tujuan aturan rute dalam contoh ini cocok dengan metode gRPC dan mengarahkan traffic ke backendRef spesifik. GRPCRoutes juga dapat digunakan untuk merutekan permintaan dari klien yang di-proxy-kan dengan injeksi file bantuan, seperti Envoy, dengan awalan xds:/// akan menurun.

Diagram mesh cluster tunggal

Langkah selanjutnya