We are using helm to deploy neo4j on a kubernetes cluster starting with this repo:
And i wonder if the applications/drivers need 'direct' access to read replicas (to distribute reads) or only core servers that then use read replicas to process and return queries to apps ?
because they do not seems to be accessible from apps outside of the namespace, when advertising: "bolt://neo4j-replica-3562563584-sckr8:7687"in the routing table.
Thanks for your help,
Typically you want apps to be able to talk to read replicas so that bolt+routing can route a read query to a replica if need be. There are special cases where this isn't desirable though. Read-only workloads for example which use a lot of CPU and memory you might want to never hit the core nodes and only go to the read replicas.
There are special considerations for bolt+routing in kubernetes though, make sure to have a look:
So, read replicas should advertised a fqdn in the k8s cluster, like:
bolt://neo4j-replica-3562563584-sckr8.neo4j-replicas.neo4j.svc.cluster.local:7687, like the cores do, right ? (to be available for apps outside of the neo4j namespace), not just:
Correct. FQDN will make those DNS entries available to anything running in kubernetes (or should). But of course those FQDNs are not resolveable outside of kubernetes, which is something to keep in mind.