Neo4j作为领先的图数据库,在AI领域尤其在知识图谱、RAG(Retrieval-Augmented Generation)和复杂推荐系统中扮演着核心角色。为了在生产环境中稳定、高效地运行Neo4j,我们通常需要将其部署到Kubernetes集群上。Helm Charts是K8s生态中最常用的包管理工具,能够极大地简化Neo4j的部署和管理。
本文将指导您如何使用官方Helm Chart部署一个生产级别的高可用(HA)Neo4j集群。
Contents
前提条件
您需要确保拥有以下工具和环境:
- 一个正在运行的Kubernetes集群(例如EKS, GKE, 或本地的Minikube)。
- kubectl 命令行工具,并配置好集群访问权限。
- 已安装最新版本的 helm。
步骤一:添加Neo4j Helm仓库
首先,我们需要将Neo4j官方提供的Helm Chart仓库添加到本地配置中。
1
2 helm repo add neo4j https://neo4j-contrib.github.io/neo4j-helm
helm repo update
步骤二:准备部署所需的 values.yaml 文件
对于生产环境,我们不能使用默认设置。必须配置持久化存储、高可用(HA)模式以及适当的资源限制。以下是一个推荐的生产环境配置模板 (values-prod.yaml)。
注意: 您必须替换 storageClass 和 auth 密码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 # values-prod.yaml
# 1. 认证信息:部署必需项,必须设置
auth:
password: "YourStrongSecretPassword123"
# 2. 高可用配置:设置3个核心(Core)实例实现HA
core:
replicas: 3
# 设定资源限制,确保集群稳定性
resources:
requests:
cpu: "2000m"
memory: "4Gi"
limits:
cpu: "4000m"
memory: "8Gi"
# 3. 持久化存储配置
persistence:
enabled: true
# 替换为您K8s集群中可用的StorageClass名称
storageClass: "gp2"
# 推荐的存储大小
storageSize: "100Gi"
# 4. 禁用默认Browser Service (通常通过Ingress或NodePort访问)
neo4jAdmin:
enabled: false
# 5. 许可证 (如果是企业版)
# license:
# edition: "enterprise"
步骤三:执行高可用集群部署
使用准备好的 values-prod.yaml 文件部署Neo4j集群。我们将其命名为 neo4j-ha-prod。
1
2 # 确保您在当前目录下创建了 values-prod.yaml
helm install neo4j-ha-prod neo4j/neo4j -f values-prod.yaml
部署完成后,Helm会输出相关信息。您可以使用以下命令检查部署状态:
1 kubectl get pods -l app.kubernetes.io/instance=neo4j-ha-prod
您应该能看到三个以 neo4j-ha-prod-core 开头的 Pod 处于 Running 状态。
1
2
3
4
5 # 示例输出
NAME READY STATUS RESTARTS AGE
neo4j-ha-prod-core-0 1/1 Running 0 5m
neo4j-ha-prod-core-1 1/1 Running 0 4m
neo4j-ha-prod-core-2 1/1 Running 0 4m
步骤四:访问和验证Neo4j服务
Neo4j Chart默认创建了一个ClusterIP Service用于内部访问。要从外部访问数据库或Neo4j Browser,您可以使用 kubectl port-forward 进行临时访问,或者配置一个Ingress。
使用 Port-Forward 临时访问 (例如访问Browser/Bolt端口):
- 查找核心服务的名称:
1
2kubectl get svc | grep neo4j-ha-prod-core
# 假设服务名为 neo4j-ha-prod-core - 端口转发(Bolt 7687,Browser/HTTP 7474):
1
2# 将K8s集群内部的7474端口映射到本地的7474
kubectl port-forward svc/neo4j-ha-prod-core 7474:7474 &
现在,您可以通过浏览器访问 http://localhost:7474,使用用户名 neo4j 和您在 values-prod.yaml 中设置的密码进行登录。您已成功部署了一个高可用的Neo4j集群,为您的AI应用提供了强大的图数据基础设施支持。
清理资源
当测试或项目结束需要删除部署时,使用 Helm 可以轻松清理所有相关的K8s资源(包括StatefulSet, Services, PVCs等)。
1 helm uninstall neo4j-ha-prod
汤不热吧