Great article! In addition to David's last post, these were some of the best quality overviews of Neo4j cluster internals/ops out there
I'm wondering if Google’s latest GKE networking features could promote any better solutions in regards to routing with Neo4j clusters on Kubernetes.
The newer VPC-native/Alias IP cluster options via Network Endpoint Groups (NEGs) seem to indicate that there's a revised architecture in the ingress routing setup that could be a step towards a simpler, more integrated approach to the current networking complications listed in the article.
Check out their release page where they introduce the new concepts for "container-native" load balancing...
Thanks for this suggestion! I'll check it out, and I'm not familiar with these new GKE features just yet. One of the things I'm looking for is the ability to advertise the right address within Neo4j, and also to be able to dynamically change the routing structure depending on cluster topology changes. I need to spend a bit of time researching this to see if I can combine these primitives to make that happen.
I have deployed neo4j in my kubernetes cluster using helm chart the incubator/neo4j version. For driver I am using neo4jrestclient which is a python driver. My driver code is a seperate service in kubernetes. Now I have two questions
- I think my driver will be able to connect to the neo4j cluster using the dns provided by the helm chart. but whether or not bolt is configured properly i dont know because it hasn't given me a bolt dns.
- I want to access the browser from the outside. So, I was thinking of deploying neo4j-browser as a seperate service which can then connect to the neo4j cluster internally while having only itself exposed. Would that be the right way to go?
I am a beginner so please help.
hi @gaurav.tripathi.che1 - on your first question, you can use the same DNS to connect via either HTTP or Bolt when your application is also inside of kubernetes. If you are using a cluster, I recommend using bolt+routing or neo4j:// as the connection scheme (neo4j:// in only for version 4). Bolt is properly configured inside of kubernetes.
In terms of access for the browser from outside -- this is a lot trickier because of how bolt+routing works. There are instructions on approaches for how you can do this in the first article linked at the very top of the thread.
What would be your thought to use hostIP and hostPort; since host info can be added to external DNS; which external client can use it to resolve hostname in route table? This way implied host provision is also part of the neo4j cluster creation process; which hostname can be inject into the helm chart instead of static name/IP.