部署在 Kubernetes 上时,nestjs 混合微服务的主机名应该是什么

问题描述 投票:0回答:3

技术堆栈 - Nestjs-2 微服务 kubernetes-AWS EKS 入口 - nginx

混合动力

  const app = await NestFactory.create(AppModule);
  const microservice = app.connectMicroservice<MicroserviceOptions>(
    {
      transport: Transport.TCP,
      options: {
        host: process.env.TCP_HOST,
        port: parseInt(process.env.TCP_EVALUATION_PORT),
      },
    },
    { inheritAppConfig: true },
  );
  await app.startAllMicroservices();
  await app.listen(parseInt(config.get(ConfigEnum.PORT)), '0.0.0.0');

环境

  TCP_HOST: '0.0.0.0'
  TCP_CORE_PORT: 8080
  TCP_EVALUATION_PORT: 8080

错误

"connect ECONNREFUSED 0.0.0.0:8080"

我是否需要在 docker 中公开此端口或将其添加到安全组中的某个位置? 或者可能需要通过不同的主机?

注意:应用程序已正确部署,没有任何错误,HTTP Rest API 似乎工作正常,但 TCP @messagePattern 则不然!

谢谢

kubernetes nestjs microservices backend
3个回答
0
投票

创建一个服务来匹配您要连接的实例并使用服务名称。


0
投票

基本上在混合应用程序中,main.ts 配置如下 -

服务1

  const app = await NestFactory.create(AppModule);
  const microservice = app.connectMicroservice<MicroserviceOptions>(
    {
      transport: Transport.TCP,
      options: {
        host: '0.0.0.0',
        port: 6200,
      },
    },
    { inheritAppConfig: true },
  );
  await app.startAllMicroservices();
  await app.listen(6300, '0.0.0.0');

在客户端

ClientsModule.register([
  {
    name: 'service1',
    transport: Transport.TCP,
    options: {
      host: 'service1',
      port: 6200,
    },
  },
]),

0
投票

现在面临同样的问题。你找到解决办法了吗?

© www.soinside.com 2019 - 2024. All rights reserved.