fabiolb / fabio

Consul Load-Balancing made simple
https://fabiolb.net
MIT License
7.26k stars 616 forks source link

Consul Sync K8S service not routable on FabioLB #848

Open webmutation opened 2 years ago

webmutation commented 2 years ago

I am currently trying to put in place a Consul + FabioLB service to allow for hybrid service discovery and routing... we use a mix of VMs and K8S for services.

I am currently being blocked by Consul K8S sync health check issue https://github.com/hashicorp/consul-k8s/issues/29

Since having valid health checks seems not possible, I am looking for a workaround at Fabio level, perhaps via tagging to allow a route to be created to a Consul K8s Synced service.

Is there such a possibility in FabioLB? To allow the creation of routes without a health check... since the health check is being done a K8S level.

tristanmorgan commented 2 years ago

Kinda hacky, but Consul-Terraform-Sync could manage static mappings by writing the services with a template to the Consul KV at "fabio/config"

resource "consul_keys" "fabio_config" {
  key {
    path = "fabio/config"
    value = templatefile("${path.module}/fabio_config.tpl",
      {
        service = local.consul_services
      }
    )
  }
}
webmutation commented 2 years ago

@tristanmorgan its an interesting idea, but that defeats a bit the purpose of having consul in the first place for us... we wanted to take advantage of the auto-discovery features.

Having a CRON job doing that every 60 seconds is also something to consider... as a fallback workaround.

After reading the documentation I was not able to see any flag to disable the healthcheck, TLS seems possible but no skipthealthcheck option... I will take a look at the code and see how much effort it would be to have this in place.