I’m trying to set up a multi-network multi-primary mesh in EKS between two regions. Per Multi-Cluster/Multi-Network - Cannot use a hostname-based gateway for east-west traffic · Issue #29359 · istio/istio · GitHub, I am setting up EIPs strapped onto my EW NLB and notifying Istio about them via the istio cm. When I add workloads following the multi cluster verify runbook though, envoy gets very mad at the config Istio is sending it:
2021-09-23T13:08:01.396294Z warn ads ADS:EDS: ACK ERROR sleep-557747455f-8mtxg.sample-105 Internal:Proto constraint validation failed (ClusterLoadAssignmentValidationError.Endpoints[0]: embedded message failed validation | caused by LocalityLbEndpointsValidationError.LbEndpoints[1]: embedded message failed validation | caused by LbEndpointValidationError.LoadBalancingWeight: value must be greater than or equal to 1): cluster_name: "outbound|80||sleep.sample.svc.cluster.local"
endpoints {
locality {
region: "us-east-1"
zone: "us-east-1a"
}
lb_endpoints {
endpoint {
address {
socket_address {
address: "US-EAST-1A-IP"
port_value: 15443
}
}
}
metadata {
filter_metadata {
key: "envoy.transport_socket_match"
value {
fields {
key: "tlsMode"
value {
string_value: "istio"
}
}
}
}
filter_metadata {
key: "istio"
value {
fields {
key: "workload"
value {
string_value: ";;;;us-west-2-cluster"
}
}
}
}
}
load_balancing_weight {
value: 1
}
}
lb_endpoints {
endpoint {
address {
socket_address {
address: "US-EAST-1B-IP"
port_value: 15443
}
}
}
metadata {
filter_metadata {
key: "envoy.transport_socket_match"
value {
fields {
key: "tlsMode"
value {
string_value: "istio"
}
}
}
}
filter_metadata {
key: "istio"
value {
fields {
key: "workload"
value {
string_value: ";;;;us-west-2-cluster"
}
}
}
}
}
load_balancing_weight {
}
}
...
Clearly, the load balancing weight is in fact omitted – but I haven’t done anything here other than add the EKS workaround to multi-primary multi-network vanilla stuff.
My config map fwiw:
kubectl get cm -n istio-system istio -ojsonpath='{.data.meshNetworks}' | sed -f sedscript
networks:
vpc-0295cb78f0beb68e6:
endpoints:
- fromRegistry: us-east-1-cluster
gateways:
- address: US-EAST-1A-IP
port: 15443
- address: US-EAST-1B-IP
port: 15443
- address: US-EAST-1C-IP
port: 15443
vpc-0384b42480762c56a:
endpoints:
- fromRegistry: us-west-2-cluster
gateways:
- address: US-WEST-2A-IP
port: 15443
- address: US-WEST-2B-IP
port: 15443
- address: US-WEST-2C-IP
port: 15443
Given the relatively few changes I’ve made, it seems like this might be a bug in Istio?
istio 1.11.2
k8s 1.20