ignore this....
why httpbin1 has the dest port 80, not httpbin2? both dont have the service selector definition matching.
- indeed, only http1 having the pod_ip_80 listener.
- before, no tls context
- after adding endpoints, yes, added.
- after swapping to httpbin2, no.
Pilot has different logic of two:
- No endpoints associated with a service, 0 -> 1. trigger full push.
- Endpoints exist, but updated. 1 -> 2. trigger only eds push.
why we have virtualInboud for destination port filter chain as well as other listener? redudant?
- seems added from the service listeners.
Service Entry as a solution
- Define service entry beforehand to get the listener.
- When swapping the endpoints, working fine.
If modify SE afterwards, endpoints swapping makes those envoy unable to serve traffic, causing 503. Normally, pod is marked "ready" only after receiving desired LDS config, then kube-api server populated endpoints with ready endpoints.
Alternative TCP proxy pass through works, but lame...