The MeshMultiZoneService resource represents a group of MeshServices in a multi-zone deployment.
MeshMultiZoneService is assigned zone-agnostic hostnames and can load balance the traffic to multiple MeshServices.
For example, a MeshService named redis in zone east accessible through redis.svc.east.mesh.local and a MeshService named redis in zone west
accessible through redis.svc.west.mesh.local can be aggregated into one MeshMultiZoneService accessible through redis.mzsvc.mesh.local.
The most common use case for using MeshMultiZoneService is to group MeshServices that spawn across multiple clusters with failover to another cluster in case of unavailability in the local cluster.
Contrary to MeshService, MeshMultiZoneService is not autogenerated, it has to be defined on the global control plane.
To group services, you need to select them by their labels. Each MeshService has a set of labels. Some of them are added automatically:
-
kuma.io/display-name: The original name of the MeshService from the zone where it was created. -
k8s.kuma.io/namespace: The original namespace of the MeshService from the zone where it was created.
Here’s an example of the MeshMultiZoneService configuration:
The MeshMultiZoneService represents a destination for traffic from elsewhere in the mesh. It defines which MeshService objects serve this traffic as well as what ports are available. It also holds information about which IPs and hostnames can be used to reach this destination.