Приложение для микросервисов, запущенное на мини-кубе, работает, но раздел комментариев не отображается

#kubernetes #microservices #kubernetes-ingress #nginx-ingress

Вопрос:

Я нахожусь на win 10 home и использую docker toolbox с мини-кубом. Это приложение основано на архитектуре микросервисов, поэтому в нем много файлов, но ниже приведены файлы, которые я считаю неисправными. Тем не менее, все приложение работает, сообщения отображаются при обновлении, но комментарии не появляются. Я не использую никакой базы данных. Все данные сохраняются в памяти.

Это начало происходить после инициализации ingress-nginx в приложении

Ожидаемое Поведение:

  1. добавляйте сообщения и обновляйте страницу, чтобы увидеть новые сообщения
  2. добавляйте комментарии к сообщениям и обновляйте их, чтобы увидеть новые комментарии

Шаги:

1. В интерфейсе/commentCreate.jsx

 const onSubmit = async (event) => {
    event.preventDefault();
 
    await axios.post(`http://posts.com/posts/${postId}/comments/create`, {
      content,
    });

 
    setContent("");
  }; 
 

2. В comments/index.js

 app.post('/posts/:id/comments/create', async (req, res) => {
    ...
    commentsByPost[req.params.id] = comments
 
    await axios.post('http://event-bus-int-serv:5000/events',{
        type: 'CommentCreated',
        data: {
            id: commentId,
            content,
            postId: req.params.id,
            status: 'pending'
        }
    })
    res.status(201).json(comments)
})
 

3. В event-bus/index.js

 app.post('/events', (req,res) => {
    ...
    axios.post('http://posts-int-serv:4000/events', event).catch(err => console.log(err.message))
    axios.post('http://comments-int-serv:4100/events', event).catch(err => console.log(err.message))
    axios.post('http://query-int-serv:4200/events', event).catch(err => console.log(err.message))
    axios.post('http://moderation-int-serv:4300/events', event).catch(err => console.log(err.message))
    res.send({status: 'OK'})
})
 

4. В query/index.js

 const posts={}

const handleEvent = (type, data) => {
    ...     
    if(type==="CommentCreated"){
    
    const {id,content,postId, status} = data

    const post = posts[postId]

    
    post.comments.push({
        id, content, status
    })
    console.log("post",post)
    }
}

 
app.get('/posts', (req,res) => {
    console.log("posts query get: ",posts)
    res.send(posts)
})

app.post('/events', (req,res) => {
    const {type, data} = req.body
    handleEvent(type, data)

    res.send({})
})
 

Возможная корневая проблема:

Console.log(«сообщение»,сообщение) в созданном блоке комментариев показывает все сообщения вместе с комментариями, но,похоже, app.get(‘/сообщения’, (req, res) не работает, так как его журнал консоли не отображается

Я проверил маршрутизацию на входе и думаю, что это правильно. Чтобы связаться с app.get(‘/posts’, (req,res), мне нужно использовать порт 4200, который является номером порта, который я дал для службы запросов

Часть конфигурации yml службы входа

 - path: /posts
  pathType: Prefix
  backend:
    service:
      name: query-serv
      port:
        number: 4200
 

Для дальнейшего ознакомления, это весь код в моем репо :

https://github.com/JohnLawliet/microservices

Мы будем очень признательны за любую помощь.

Комментарии:

1. Я проверил вход, выглядит хорошо. По крайней мере, для путей, которые у него есть. Есть ли что-нибудь в developer tools -> > network ? Обычно он показывает, к чему он не может подключиться.