DEV Community 👩‍💻👨‍💻

Arseny Zinchenko
Arseny Zinchenko

Posted on • Originally published at itnext.io on

Neo4j: running in Kubernetes

In the previous post — Neo4j: graph database — run with Docker and Cypher QL examples — we’ve run the Neo4j database with в Docker.

The next task is to run it in the Kubernetes cluster.

Will use the Neo4j Community Edition, which will be running as a single-node instance as cluster ability for the Neo4j is available in the Enterprise version which is costs about 190.000 USD/year.

For the Community Edition, we can apply a Helm chart — neo4j-community.

Add its repository:

$ helm repo add equinor-charts [https://equinor.github.io/helm-charts/charts/](https://equinor.github.io/helm-charts/charts/)
“equinor-charts” has been added to your repositories

$ helm repo update
Hang tight while we grab the latest from your chart repositories…
…Successfully got an update from the “equinor-charts” chart repository
…Successfully got an update from the “stable” chart repository
Update Complete. ⎈ Happy Helming!

Deploy to a custom namespace, in this example, it’s eks-dev-1-neo4j.

With the --set accept its license, and add values for the StorageClass of its PersistentVolume, and add a password for the administrator access:

$ helm upgrade — install — namespace eks-dev-1-neo4j — create-namespace neo4j-community equinor-charts/neo4j-community — set acceptLicenseAgreement=yes — set neo4jPassword=mySecretPassword — set persistentVolume.storageClass=gp2
Release “neo4j-community” does not exist. Installing it now.
NAME: neo4j-community
LAST DEPLOYED: Fri Jul 31 15:27:38 2020
NAMESPACE: eks-dev-1-neo4j
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
We’ll need to wait a few seconds for Neo4j to start.
We need to see this line in our pod log:
> Remote interface available at Remote interface available at [http://localhost:7474/](http://localhost:7474/)
We can see the content of the logs by running the following command:
kubectl logs -l “app=neo4j-community”

Okay -  it’s deployed, check pods:

$ kk -n eks-dev-1-neo4j get pod
NAME READY STATUS RESTARTS AGE
neo4j-community-neo4j-community-0 1/1 Running 0 29s

Check its PersistentVolumeClaim:

$ kk -n eks-dev-1-neo4j get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
datadir-neo4j-community-neo4j-community-0 Bound pvc-29c5d6a0–34b7–4b5c-94d2–778139790a2d 10Gi RWO gp2 15m

Check the corresponding PersistentVolume — pay attention, that we’ve created that PVC in the dynamic way, so it has the Reclaim policy set to Delete:

$ kk -n eks-dev-1-neo4j get pv pvc-29c5d6a0–34b7–4b5c-94d2–778139790a2d
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-29c5d6a0–34b7–4b5c-94d2–778139790a2d 10Gi RWO Delete Bound eks-dev-1-neo4j/datadir-neo4j-community-neo4j-community-0 gp2 16m

Now, run port-forwarding to access the Neo4j server from your workstation:

$ kubectl -n eks-dev-1-neo4j port-forward neo4j-community-neo4j-community-0 7474:7474
Forwarding from 127.0.0.1:7474 -> 7474
Forwarding from [::1]:7474 -> 7474

Check connection:

$ curl [http://localhost:7474/db/data/](http://localhost:7474/db/data/)
{
“errors” : [ {
“code” : “Neo.ClientError.Security.Unauthorized”,
“message” : “No authentication header supplied.”
} ]
}

The server is ready for work.

Useful links

Originally published at RTFM: Linux, DevOps и системное администрирование.


Top comments (0)

Stop sifting through your feed.

Find the content you want to see.

Change your feed algorithm by adjusting your experience level and give weights to the tags you follow.