kumahq / kuma

🐻 The multi-zone service mesh for containers, Kubernetes and VMs. Built with Envoy. CNCF Sandbox Project.
https://kuma.io/install
Apache License 2.0
3.61k stars 331 forks source link

MeshExternalService should aggregate different services into one #11221

Open lukidzi opened 4 weeks ago

lukidzi commented 4 weeks ago

Description

Let's say we have Redis instances in zone-a (K8s), zone-b (K8s), and zone-c (universal). If we want to aggregate all these Redis instances from different zones, we can't achieve this with the current MeshExternalService. Once added on global, specific MeshExternalService will work on k8s but not universal. Allowing users to aggregate many different MeshExternalServices into one would be nice.

Use case:

type: MeshExternalService
name: redis
mesh: default
spec:
  match:
    type: HostnameGenerator
    port: 6379
    protocol: tcp
  endpoints:
    - address: redis.db.svc.cluster.local

Ideas:

jakubdyszkiewicz commented 3 weeks ago

Triage: It's about fallback of multiple MeshExternalServices. A couple of ideas 1) Improve MeshLoadbalancingStrategy to accept multiple different MeshExternalServices 2) Aggregate multiple MeshExternalServices into MeshMultiZoneService using meshExternalService selectors 3) MeshMultiZoneExternalService