Service discovery

Hello, I am considering to build a kind of simple discovery service inside my platform to let my services dynamically know how to contact other services internally.

Has someone build something like that ? Do you think this a good idea or do you have advice on how to handle internal traffic throught HTTP on your platform without using unpredictable variables such as QOVERY_CONTAINER_ZXXXXX_HOST_INTERNAL ?

Thank you

Hi @qvdp,

There is an already built-in service discovery inside Kubernetes. We don’t make application IDs predictable because we have had too many issues with this in the past. Anyway, we could consider a way to do it without too much effort, I think.

To answer also your question regarding what exists in terms of service discovery, there is Consul as well. But once again, in our case, we shouldn’t need this as it’s supported by Kubernetes.

Let me discuss with @a_carrano to see in terms of priority how we could deal with this and we’ll get back to you.

Thanks

Hi @Pierre_Mavro,

Thank you for your fast answer. A native way of handling this is totally suitable & preferable for me, I gave a try a few days ago to consul but it seems to be a pain to maintain and to automatise.

Do you have any advices / resources on how to use k8s way to solve this problem ?

$ env | grep HOST_INTERNAL
QOVERY_CONTAINER_Z${A}_HOST_INTERNAL=container-z${A}
QOVERY_CONTAINER_Z${B}_HOST_INTERNAL=container-z${B}
QOVERY_CONTAINER_Z${C}_HOST_INTERNAL=container-z${C}

Please correct me if I am wrong, but as far as I understand there is no current way in Qovery to predict services internal hosts, isn’it ? For now, I have to specify to my service A (throught hard code or env var for exemple), ids of service B & C if I want service A to be able to ping service B & C.

Exactly. No predictable way today. Another solution would be to use Qovery API to get them before your app starts. When you create on Qovery, it doesn’t deploy but generates everything you need. You can update everything you want, then run your complete environment. Hope it will help you

1 Like

Ok thank you for your answer and your advice @Pierre_Mavro. It has helped me :slight_smile:

I will give a try to the API way, it seems to be lighter way to achieve the same goal, I could implement a kind of resolver relying on the Qovery API on each of my services !

1 Like