Как настроить маршрут для приложения OpenShift с nodeJS и express - PullRequest
1 голос
/ 26 января 2020

Я новичок в OpenShift, и мне нужна помощь для настройки маршрута для моего приложения в OpenShift.

Это мой порт и конфигурация ip в приложении NodeJS - Express, которое Я пытаюсь развернуть:

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}`);
});

С точно такой же конфигурацией приложение успешно работает в localhost:5000 в Heroku. Мы будем благодарны за любую помощь.

ОБНОВЛЕНИЕ :

Я изменил порт и 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 Ответ

2 голосов
/ 26 января 2020

Необходимо проверить пару вещей:

  1. Модуль должен быть доступен (все контейнеры готовы, все зонды пройдены и т. Д. c)
  2. NodeJS сервер должен прослушивать адрес 0.0.0.0 (не localhost)
  3. Служба OpenShift должна переадресовать порт 8080, а его селектор определяет необходимый модуль, например:

    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
        ...
    

Затем вы можете использовать хост маршрута, чтобы добраться до модуля.

...