webapi部署 自托管
我已经创建了一些视频,介绍如何将Neo4J群集和独立实例部署到托管的Kubernetes群集。 在运行数据库或任何涉及持久性的服务时,我们需要考虑更多因素,最重要的是如何实现持久性存储以及自动化过程(例如备份)。
在下面的视频中,我将通过官方Helm Chart解释如何部署具有3个节点的Neo4J集群。
我已经分叉并修改了Helm图表,使其仅使用ClusterIP
Kubernetes服务,并将结果推送到此GitHub存储库下 。
当您在托管的Kubernetes环境(例如IBM Cloud Kubernetes Service)上运行示例时,存储类提供程序将为您创建持久卷,如视频所示。
自己尝试
要自己尝试一下,请运行以下步骤。 如果您首先需要访问托管的Kubernetes环境,则可以遵循本指南来访问IKS集群。 您将需要v3.x
版的v3.x
。
cd /tmp/ git clone https: //github.com/sdaschner/neo4j-helm cd neo4j-helm/ helm template graphdb \
--set acceptLicenseAgreement=yes \
--set neo4jPassword=mySecretPassword . \
> /tmp/neo4j.yaml kubectl apply -f /tmp/neo4j.yaml
现在,Kubernetes将提供包括卷声明的资源,您的云提供商将创建持久卷。
kubectl get pvc NAME STATUS [...] STORAGECLASS AGE datadir-graphdb-neo4j-core- 0 Pending ibmc-file-gold 13s datadir-graphdb-neo4j-core- 1 Pending ibmc-file-gold 13s datadir-graphdb-neo4j-core- 2 Pending ibmc-file-gold 13s
一段时间后,将配置您的持久卷:
kubectl get pvc NAME STATUS VOLUME STORAGECLASS AGE datadir-graphdb-neo4j-core- 0 Bound pvc-8c0ae307-[...] ibmc-file-gold 2m24s datadir-graphdb-neo4j-core- 1 Bound pvc-9a1a6f3c-[...] ibmc-file-gold 2m24s datadir-graphdb-neo4j-core- 2 Bound pvc-2f742c13-[...] ibmc-file-gold 2m24s
在这种情况下,有状态集提供的Neo4J Pod应该处于运行状态:
kubectl get pods NAME READY STATUS RESTARTS AGE graphdb-neo4j-core- 0 1 / 1 Running 0 4m13s graphdb-neo4j-core- 1 1 / 1 Running 0 4m13s graphdb-neo4j-core- 2 1 / 1 Running 0 4m13s
测试连接
为了测试可以使用直接连接到的Neo4j接入cypher-shell
命令行,在本地,通过端口转发的端口7474
, 7687
,以及7473
到localhost
,或通过直接在运行吊舱执行命令:
kubectl exec -t -i graphdb-neo4j-core- 0 /bin/bash cypher-shell -u neo4j -p mySecretPassword
要么:
kubectl port-forward graphdb-neo4j-core- 0 7474 : 7474 7687 : 7687 7473 : 7473
在新终端中:
-u neo4j -p mySecretPassword cypher-shell -a localhost: 7687 -u neo4j -p mySecretPassword
咖啡豆应用示例
为了测试我在上一个视频中显示的Quarkus应用程序,请运行以下命令:
cd /tmp/ git clone https: //github.com/sdaschner/quarkus-playground --branch neo4j cd quarkus-playground/
然后,您可以使用提供的Cypher脚本创建示例数据集:
cat src/test/resources/test-data.cypher | cypher-shell \
-a localhost: 7687 \
-u neo4j \
-p mySecretPassword \
--format verbose
然后我们可以部署我们的咖啡示例:
kubectl apply -f deployment/
一旦应用程序启动并运行,您就可以在/beans/
或/beans/special
下访问端点。
为了访问该应用程序,您将需要使用Kubernetes入口,Istio网关,负载平衡器或类似方式。 出于测试目的,我们还可以转发coffee-shop-XX
pod的端口8080
:
kubectl port-forward coffee-shop-XX 8080 : 8080 curl localhost: 8080 /beans/ | jq . /beans/ | jq .
翻译自: https://www.javacodegeeks.com/2020/06/deploying-a-neo4j-cluster-on-managed-kubernetes.html
webapi部署 自托管