node.js - 如何使用 NodeJS 和 Express 为 OpenShift 应用程序配置路由

标签 node.js express deployment openshift

我是 OpenShift 新手,我需要一些帮助来在 OpenShift 上配置我的应用程序的路由。

这是我尝试部署的 NodeJS - Express 应用程序中的端口和 IP 配置:

const server_port = process.env.OPENSHIFT_NODEJS_PORT ||  process.env.OPENSHIFT_INTERNAL_PORT || process.env.PORT || 5000;
const server_ip = process.env.OPENSHIFT_NODEJS_IP || process.env.OPENSHIFT_INTERNAL_IP || '0.0.0.0';

server.listen(server_port, server_ip, () => {
  console.log(`Server running on port ${server_port}`);
});

使用完全相同的配置,应用程序在 Heroku 的 localhost:5000 中成功运行。任何帮助将不胜感激。

更新:

我更改了项目的端口和 IP,如上所示,这是我的路由 YAML:

kind: Route
apiVersion: route.openshift.io/v1
metadata:
  name: *****-gitlab-io-be
  namespace: *****gitlabiobe
  selfLink: >-
    /apis/route.openshift.io/v1/namespaces/*****gitlabiobe/routes/*****-gitlab-io-be
  uid: 34fef86d-4051-11ea-bd30-0a580a810070
  resourceVersion: '155488429'
  creationTimestamp: '2020-01-26T15:33:31Z'
  labels:
    app: *****-gitlab-io-be
    app.kubernetes.io/component: *****-gitlab-io-be
    app.kubernetes.io/instance: *****-gitlab-io-be
    app.kubernetes.io/name: nodejs
    app.kubernetes.io/part-of: *****-gitlab-io-be
    app.openshift.io/runtime: nodejs
    app.openshift.io/runtime-version: latest
  annotations:
    app.openshift.io/vcs-ref: master
    app.openshift.io/vcs-uri: 'https://gitlab.com/*****/*****.gitlab.io.be.git'
    openshift.io/host.generated: 'true'
spec:
  host: >-
    ************gitlabiobe.apps.ca-central-1.starter.openshift-online.com
  subdomain: ''
  to:
    kind: Service
    name: *****-gitlab-io-be
    weight: 100
  port:
    targetPort: 5000-tcp
  wildcardPolicy: None
status:
  ingress:
    - host: >-
        *****gitlabiobe.apps.ca-central-1.starter.openshift-online.com
      routerName: default
      conditions:
        - type: Admitted
          status: 'True'
          lastTransitionTime: '2020-01-26T15:33:31Z'
      wildcardPolicy: None
      routerCanonicalHostname: apps.ca-central-1.starter.openshift-online.com

最佳答案

有几件事需要检查:

  1. Pod 应该可用(所有容器都已准备好,所有探测器均已通过等)
  2. NodeJS 服务器必须监听 0.0.0.0 地址(不是本地主机)
  3. OpenShift 服务应转发 8080 端口,并且其选择器会识别所需的 pod,例如:

    kind: Service
    ...
    spec:
      selector:
        app: xxx
      ports:
        - name: 8080-tcp
          port: 8080
          protocol: TCP
          targetPort: 8080
    
  4. 路由必须映射到所需的 OpenShift 服务及其目标端口,例如:

    kind: Route
    ...
    spec:
      port:
        targetPort: 8080-tcp
      to:
        kind: Service
        name: xxx
        ...
    

然后您可以使用路由的主机来到达 Pod。

关于node.js - 如何使用 NodeJS 和 Express 为 OpenShift 应用程序配置路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59920939/

相关文章:

java - weblogic中如何配置集群地址

reactjs - 将构建的 React 应用程序静态文件部署到 Cloud Foundry 似乎认为它是一个 Node 部署,即使使用 buildpack

node.js - cpanel node.js 无法获取应用程序的锁 : app

node.js - 在 ReactJS 上使用 GET 调用下载文件

node.js - 在 Docker 镜像中创建 Let's Encrypt 证书和 Certbot

node.js - 从 Zapier 创建文件

node.js - Restful Api Express postgres 数据库

node.js - 如果 .ejs 文件包含 else 语句,则不会呈现

caching - 如何在 Express - Node.js 上激活缓存?

javascript - 预期 "payload"是一个普通对象 : MEAN