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
- Neo4j-Helm User Guide
- Neo4j Considerations in Orchestration Environments
- How to backup Neo4j Running in Kubernetes
- External Exposure of Neo4j Clusters
Originally published at RTFM: Linux, DevOps и системное администрирование.
Top comments (0)