首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助用Kubernetes连接节点到Neo4j数据库

需要帮助用Kubernetes连接节点到Neo4j数据库
EN

Stack Overflow用户
提问于 2017-07-19 21:45:51
回答 1查看 394关注 0票数 1

目前,我正在获取节点无法连接到数据库的ECONNREFUSED。我不知道数据库主机应该在哪里结束。我应该使用localhost:7474127.0.0.1:74740.0.0.0:7474,还是应该使用某些主机,这些主机是在我得到可以传入的Kubernetes吊舱时生成的呢?比如$(minikube ip) = 192.168.90.100:7474,但是我的数据库呢?是否有一个ENV包含的数据库主机,我应该从某个地方?

代码语言:javascript
复制
const neo4jDatabase = connect({
  server: 'http://<what goes here!?>:7474',
  user: process.env.DB_USER,
  pass: process.env.DB_PASS,
});

我似乎已经开始运行豆荚与下面的.yml吐露,但我不确定是否neo4j一是正确的。

代码语言:javascript
复制
NAME                     READY     STATUS    RESTARTS   AGE
neo4j-4166717986-8qbwq   1/1       Running   0          41m
node-481322091-g27md     1/1       Running   0          11m

node.yml

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: node
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: node
        tier: backend
        track: stable
    spec:
      containers:
        - name: node
          image: "myapp"
          ports:
            - name: nodeport
              containerPort: 8080
          env:
           - name: DB_USER
             valueFrom:
               configMapKeyRef:
                 name: config
                 key: db_user
           - name: DB_PASS
             valueFrom:
               configMapKeyRef:
                 name: config
                 key: db_pass
---
apiVersion: v1
kind: Service
metadata:
  name: node
spec:
  selector:
    app: node
    tier: backend
  ports:
    - protocol: TCP
      port: 80
      targetPort:
  type: LoadBalancer

neo4j.yml

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: neo4j
spec:
  template:
    metadata:
      labels:
        run: neo4j
    spec:
      containers:
        - name: neo4j
          image: "my-neo4j"
          ports:
            - containerPort: 7474
---
apiVersion: v1
kind: Service
metadata:
  name: neo4j
  labels:
    run: neo4j
spec:
  selector:
    run: neo4j
  ports:
    - port: 7474
      targetPort: 7474
      protocol: TCP
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-21 08:47:45

也许Kubernetes的一个鲜为人知的特性是在运行的豆荚中注入了一些神奇的环境变量。

在您的特殊情况下,pods为名称空间中的每个服务都有一个环境变量。格式如下:

代码语言:javascript
复制
<your service>_SERVICE_HOST
<your service name>_SERVICE_PORT_EXPOSED_PORT

您可以通过使用kubectl exec -ti <your pod id> sh附加到运行中的吊舱并发出一个printenv命令来验证这一点。

请注意,如果服务是在吊舱之后创建的,则必须删除带有kubectl delete pod <your pod id>的吊舱,以强制重新创建(和注入)环境变量。

在您的示例中,最终代码如下所示:

代码语言:javascript
复制
const serviceHost = process.ENV.NEO4J_SERVICE_HOST;
const servicePort = process.ENV.NEO4J_SERVICE_PORT_EXPOSED_PORT;
const neo4jDatabase = connect({
  server: `http://${serviceHost}:${servicePort}`,
  user: process.env.DB_USER,
  pass: process.env.DB_PASS,
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45201586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档