This repository contains a Helm chart that starts Neo4j >= 4.0 Enterprise Edition clusters in Kubernetes.
Check the releases page and copy the URL of the tgz package. Make sure to note the correct version of Neo4j.
$ helm install mygraph RELEASE_URL --set core.standalone=true --set acceptLicenseAgreement=yes --set neo4jPassword=mySecretPassword
$ helm install mygraph RELEASE_URL --set acceptLicenseAgreement=yes --set neo4jPassword=mySecretPassword
When you're done: helm uninstall mygraph
.
The User Guide contains all the documentation for this helm chart.
The Neo4j Community Site is a great place to go for discussion and questions about Neo4j & Kubernetes.
Additional instructions, general documentation, and operational facets are covered in the following articles:
- Architectural Documentation describing how the helm chart is put together
- External exposure of Neo4j clusters on Kubernetes - how to use tools like Neo4j Browser and cypher-shell from clients originating outside of Kubernetes
- Neo4j Considerations in Orchestration Environments which covers how the smart-client routing protocol that Neo4j uses interacts with Kubernetes networking. Make sure to read this if you are trying to expose the Neo4j database outside of Kubernetes
- How to Backup Neo4j Running in Kubernetes
- How to Restore Neo4j Backups on Kubernetes
Neo4j is a highly scalable native graph database that leverages data relationships as first-class entities, helping enterprises build intelligent applications to meet today’s evolving data challenges.
This chart bootstraps a Neo4j deployment on a Kubernetes cluster using the Helm package manager.
This package is fairly similar to the Neo4j-maintained GKE Marketplace entry, which is also built on helm. This package tries to avoid Kubernetes distribution-specific features to be general, while the other is tailored specifically to GKE.
The versioning of this helm chart will follow Neo4j versions for simplicity.
- Version 4.0.X-Y of the helm chart is compatible with Neo4j EE v4.0.*
- Version 4.1.X-Y of the helm chart is compatible with Neo4j EE v4.1.*
- (and so on)
The charts in this repository are for Neo4j 4.0 going forward. There are previous available charts for the Neo4j 3.5 series, but there are substantial differences between the two versions. Careful upgrade planning is advised before attempting to upgrade an existing chart.
Consult the upgrade guide and expect that additional configuration of this chart will be necessary.
This chart contains a standard set of helm chart tests, which can be run after a deploy is ready, like this:
helm test mygraph
To see what helm will actually deploy based on the templates:
helm template --name tester --set acceptLicenseAgreement=yes --set neo4jPassword=mySecretPassword . > expanded.yaml
The following mini-script will provision a test cluster, monitor it for rollout, test it, report test results, and teardown / destroy PVCs.
Please use the tools/test/provision-k8s.sh
, and customize your Google Cloud
project ID.
Standalone forms faster so we can manually lower the liveness/readiness timeouts.
export NAME=a
export NAMESPACE=default
helm install $NAME . --set acceptLicenseAgreement=yes --set neo4jPassword=mySecretPassword --set core.standalone=true --set readinessProbe.initialDelaySeconds=20 --set livenessProbe.initialDelaySeconds=20 && \
kubectl rollout status --namespace $NAMESPACE StatefulSet/$NAME-neo4j-core --watch && \
helm test $NAME --logs | tee testlog.txt
helm uninstall $NAME
sleep 20
for idx in 0 1 2 ; do
kubectl delete pvc datadir-$NAME-neo4j-core-$idx ;
done
export NAME=a
export NAMESPACE=default
helm install $NAME . --set acceptLicenseAgreement=yes --set neo4jPassword=mySecretPassword --set readReplica.numberOfServers=1 && \
kubectl rollout status --namespace $NAMESPACE StatefulSet/$NAME-neo4j-core --watch && \
helm test $NAME --logs | tee testlog.txt
helm uninstall $NAME
sleep 20
for idx in 0 1 2 ; do
kubectl delete pvc datadir-$NAME-neo4j-core-$idx ;
done
This repo contains internal tooling containers for backup, restore, and test of the helm chart.
If you want to push your own docker containers, make sure that the registry in the Makefile is set to somewhere you have permissions on.
cd tools
make docker_build
make docker_push