如何使用 nodeJS 和 express 为 OpenShift 应用程序配置路由
How to configure a route for an OpenShift app with nodeJS and express
我是 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了。
我是 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了。