Hi,
We have a multi-DC cluster running on regular EC2 instances, and don't plan to change that. However, we want to run Consul on the kubernetes pods aswell.
The use-case right now is to expose Consul UI and rest api using Kubernetes pods via (https-secured) ingresses so we can lock down the Consul servers themselves (we use the Consul rest api extensively).
I'm struggling with getting this stable, and I guess it's down to my lack of understanding of the Consul networking stuff. I know that all consul agents (also those running in "client mode") are forming a mesh and talk to each other, but that queries eventually get proxied/forwarded to the nodes running in "server mode".
During startup of our Consul pods, we're getting the host ip of the underlying host using ec2-metadata, and inject that into the configuration like this:
"advertise_addr": "${HOST_IP}"
However, it looks like the "mesh" part of Consul's settings is controlled by a different set of config parameters, (the "serf*" options).
It would be SO helpful to have a clear and understandable diagram of how consul nodes (both clients and servers) communicate, which ports/ip addresses are used and the config flags to control those.
For example, I tried adjusting the "serf-bind" parameter, but since Consul isn't able to physically bind to the underlying host ip that failed. I guess I'm a bit stumped if this is gonna work at all, and looking to discuss with someone who's done a "hybrid" setup where the "server mode" nodes are outside of Kubernetes.
Right now the Consul pods are running, but they're flapping so it's not a good situation.