我是 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
最佳答案
有几件事需要检查:
- Pod 应该可用(所有容器都已准备好,所有探测器均已通过等)
- NodeJS 服务器必须监听 0.0.0.0 地址(不是本地主机)
OpenShift 服务应转发 8080 端口,并且其选择器会识别所需的 pod,例如:
kind: Service ... spec: selector: app: xxx ports: - name: 8080-tcp port: 8080 protocol: TCP targetPort: 8080
路由必须映射到所需的 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/