почтовый запрос не работает в приложении express, развернутом в кубернетах локально с помощью minikube - PullRequest
0 голосов
/ 26 мая 2020

, когда я запрашиваю обработчик сообщений в приложении express, он возвращает Cannot POST /, но обработчик сообщений определяется там. Когда это приложение запускается через docker, оно идеально подходит, но не в кластере Kubernetes с помощью minikube. Вот код приложения express.

const keys = require('./keys');

// Express App Setup
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();
app.use(cors());
app.use(bodyParser.json());



// Postgres Client Setup
const { Pool, Client } = require('pg');
const pgClient = new Pool({
  user: keys.pgUser,
  host: keys.pgHost,
  database: keys.pgDatabase,
  password: keys.pgPassword,
  port: keys.pgPort
});
pgClient.on('error', () => console.log('Lost PG connection'));

pgClient
  .query('CREATE TABLE IF NOT EXISTS values (number INT)')
  .catch(err => console.log(err));

// Redis Client Setup
const redis = require('redis');
const redisClient = redis.createClient({
  host: keys.redisHost,
  port: keys.redisPort,
  retry_strategy: () => 1000
});
const redisPublisher = redisClient.duplicate();

// Express route handlers

app.get('/', (req, res) => {
  res.send('Hi');
});

app.get('/values/all', async (req, res) => {

  const {rows} = await pgClient.query('SELECT * from values');
  console.log('DATA IN POSTGRES', rows)

  res.send(rows);
});

app.get('/values/current', async (req, res) => {
  redisClient.hgetall('values', (err, values) => {
    res.send(values);
  });
});


app.post('/data', (req,res) => {
  res.send(req.body.data)
})

app.post('/values', (req, res) => {

  console.log("FORM DATA", req.body)

  const index = req.body.index;

  if (parseInt(index) > 40) {
    return res.status(422).send('Index too high');
  }

  redisClient.hset('values', index, 'Nothing yet!');
  redisPublisher.publish('insert', index);
  pgClient.query('INSERT INTO values(number) VALUES($1)', [index], (err,ress) => {
    if(err){
      console.log("PG ERROR ON INSERT")
    } else {
      console.log('PG DATA', ress.rows[0])
      res.send({ working: true });
    }
  });


});

app.listen(5000, err => {
  console.log('Listening');
});

Вот конфигурация развертывания сервера

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      component: server
  template:
    metadata:
      labels:
        component: server
    spec:
      containers:
        - name: server
          image: rajneesh4736/multi-server:v4.0.3
          ports:
            - containerPort: 5000
          env:
            - name: REDIS_HOST
              value: redis-cluster-ip-service
            - name: REDIS_PORT
              value: "6379"
            - name: PGUSER
              value: postgres
            - name: PGHOST
              value: postgres-cluster-ip-service
            - name: PGPORT
              value: "5432"
            - name: PGDATABASE
              value: postgres
            - name: PGPASSWORD
              valueFrom:
                secretKeyRef:
                  name: pgpassword
                  key: PGPASSWORD

Вот IP-конфигурация кластера серверов

apiVersion: v1
kind: Service
metadata:
  name: server-cluster-ip-service
spec:
  type: ClusterIP
  selector:
    component: server
  ports:
    - port: 5000
      targetPort: 5000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...