1

我已经从谷歌云市场安装了 neo4j 企业,它可以从 Kubernetes 网络中访问,但我想从不在同一网络上的外部应用程序访问它。按照Neo4j 的这个指南,我可以使用端口转发连接浏览器;

MY_CLUSTER_LEADER_POD=mygraph-neo4j-core-0
kubectl port-forward $MY_CLUSTER_LEADER_POD 7687:7687 7474:7474

在用户指南中,他们建议我不应该在服务器端使用负载平衡器。我应该分别公开集群中的每个 pod,并bolt+routing从我的应用程序中使用它来处理请求路由。这在指南的限制部分中进行了描述。

它应该被暴露使用Nodeports,但我无法正确地做到这一点。我试过这样做;

kubectl expose pod neo-cluster-neo4j-core-0 --port=7687 --name=neo-leader-pod

但是我无法使用这个暴露的 IP 进行连接。我不擅长云技术,所以我不知道我做错了什么。

我浏览了这篇文章Neo4j Considerations in Orchestration Environments,告诉我应该做什么,而不是如何做。它假定事先了解 gcloud/kubernaties。

任何人都可以指导我正确的方向吗?谢谢

4

1 回答 1

0

如果我没记错的话,你为 neo4j 企业创建了一个 GKE 集群。

它在集群网络内部完美运行,但不能从外部运行。

检查您是否为这些端口打开了防火墙。

要创建规则或查看现有规则:

  1. 转到 cloud.google.com

  2. 转到我的控制台

  3. 选择您的项目

  4. 选择网络 > VPC 网络

  5. 选择“防火墙规则”

  6. 如果不存在,请选择“创建防火墙规则”以创建规则。

  7. 要将规则应用于选择 VM 实例,请选择 Targets > “Specified target tags”,然后在“Target tags”中输入标签名称。此标签将用于将新的防火墙规则应用于您想要的任何实例。然后,确保实例应用了网络标签。

  8. 例如,要允许传入 TCP 连接到端口 7687,在“协议和端口”中输入 tcp:7687

  9. 单击创建

查看 GKE 文档以获得更好的线索:

https://cloud.google.com/solutions/prep-kubernetes-engine-for-prod

https://cloud.google.com/kubernetes-engine/docs/how-to/network-policy

https://cloud.google.com/kubernetes-engine/docs/how-to/exposing-apps

:)

于 2019-10-07T08:45:27.107 回答