【云原生】Apisix接入Nacos、K8s服务注册中心自动获取服务

文章介绍了如何在Kubernetes环境中,使用SpringCloudK8s框架部署的微服务,通过Apisix进行HTTP和gRPC接口的管理,包括配置限流插件、协议转换,并展示了如何连接Nacos和K8s作为注册中心动态感知服务变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

我在K8s中部署了两个使用SpringCLoudK8s框架的微服务,每个服务既暴露了HTTP接口方便测试,也暴露了gRpc接口更接近生产,他们的端口如下所示:

常规功能

上游

我们可以在这里配置我们的服务

HTTP

配置一个HTTP服务,输入地址和端口就完成了。

然后我们去配置一个路由

选择我们第一步配置的服务

这里可以选择很多插件,有限流、gRpc转换等插件,我这里选择一个限流插件使用,gRpc的后面再演示

60s只能访问2次

配置完路由之后,点击查看

最后我们就可以测试一下了

我先不经过Apisix网关,直接调接口

这次经过网关,要访问网关的地址和端口,网关会根据我们的配置进行路由,9080是网关默认的端口,因为我在配置路由时给了域名,所以这里需要加上;测试成功。

gRpc

接下来我们测试一下协议转换吧,我们用postman调用Apisix,Apisix直接gRpc调用我的微服务service-provider,这里是模拟生产中app的调用。

上游

Protocol Buffers

这里需要把我们定义的PB文件,也放进Apisix一份,这个是我service-provider暴露的gRpc接口

syntax = "proto3";
package member;

service HelloService {
  rpc SayHello (SayHelloRequest) returns (SayHelloResponse) {
  }
}

message SayHelloRequest {
  string name = 1;
}

message SayHelloResponse {
  int32 code = 1;
  string message = 2;
  bool success = 3;
  SayHelloData data = 4;
}

message SayHelloData {
  string name = 1;
  string content = 2;
}

放进Apisix里一份

路由

一定要选择插件

{
  "_meta": {
    "disable": false
  },
  "method": "SayHello",
  "proto_id": "1",
  "service": "member.HelloService"
}

测试一下,还是先不经过Apisix调用一下

然后经过Apisix再调用一次,发现结果是一样的,测试成功。

接外部注册中心

我们看到,我们再调用网关之前,需要配置上游,填入上游的地址和端口,但是端口是变的,每次服务重启之后都是变化的,而且网关本身也是要知道我们微服务架构中共有哪些服务,因为服务经常会上下线,网关路由需要感知到。Apisix支持外接Eureka、Nacos、Consul、K8s等注册中心,这里我们以Nacos和K8s为例。

Nacos

首先需要部署Nacos

然后把Nacos的地址http://124.222.91.116:8848放进 apisix_conf/config.yaml 文件中

这样就配置完成了,然后在上游中配置服务

这里就不测试了,很简单。

K8s

配置

apisix_conf/config.yaml

查看service-provider服务暴露的接口

配置上游

这里主要关注 服务名称 serviceName: [namespace] / [name] : [portName] ,这里官网也没个示例,费了很大的劲才解决。

HTTP
gRpc

其他的路由配置都是一样的操作,就省略了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

maple 枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值