Neo4j docker-compose 到 kubernetes

cry*_*net 5 neo4j docker kubernetes docker-compose kompose

我想从 docker-compose 转到 kubernetes。我已经有一个 docker-compose 和 docker 镜像,工作得很好。现在我很难将它部署到 kubernetes,特别是使用 neo4j...

这是我的docker-compose.yaml

version: '3'

services:
    neo4j:
        image: neo4j
        ports:
            - '7474:7474'
            - '7687:7687'
        environment:
            - NEO4J_AUTH=${NEO4J_USERNAME}/${NEO4J_PASSWORD}
        volumes:
            - neo4j_data:/data

    overseen:
        image: cryxnet/crawnet-overseen
        ports:
            - '5000:5000'
        environment:
            - NEO4J_USERNAME=${NEO4J_USERNAME}
            - NEO4J_PASSWORD=${NEO4J_PASSWORD}
            - NEO4J_CONNECTION_URI=${NEO4J_CONNECTION_URI}
            - FLASK_APP=${FLASK_APP}
            - FLASK_DEBUG=${FLASK_DEBUG}
        depends_on:
            - neo4j

    dashboard:
        image: cryxnet/crawnet-dashboard
        ports:
            - '3000:3000'
        environment:
            - FLASK_APP_URL=${FLASK_APP_URL}
        depends_on:
            - overseen

volumes:
    neo4j_data:
Run Code Online (Sandbox Code Playgroud)

我用kompose转换了上面的 compose 。

API 和仪表板工作得很好,但 Neo4j 总是失败。

我做到了kubectl logs neo4j,这就是我得到的:

Failed to read config: Unrecognized setting. No declared setting with name: PORT.7687.TCP.PORT. Cleanup the config or disable 'server.config.strict_validation.enabled' to continue.
Run with '--verbose' for a more detailed error message.
Run Code Online (Sandbox Code Playgroud)

Joh*_*han 4

Kubernetes 以环境变量的形式在每个容器中存储有关其命名空间中的服务的各种信息。此信息包括服务端口等,其环境变量的形式为<svc-name>_PORT_<d+>_TCP_PORT

由于您的服务名为,因此会创建neo4j一个环境变量,但 Neo4J 会将所有以 开头的环境变量解释为配置参数。因此它抱怨不存在这样的设置。NEO4J_PORT_7687_TCP_PORTNEO4J_

解决方案是:

  • 传递 env-varNEO4J_server_config_strict__validation_enabled=false来停止这些严格检查(如错误消息中所述)
  • 将您的服务重命名为neo4j其他名称,这将避免触发此检查