通过网关访问服务¶
本文演示如何将微服务接入 DCE 5.0 云原生网关并通过网关访问该服务。
前提条件¶
- 准备一个服务。本文使用的是
my-otel-demo-adservice
服务,部署在skoala-dev
集群下的webstore-demo
命名空间。 - 访问
my-otel-demo-adservice
服务根路径/
理论上应该返回adservice-springcloud: hello world!
。
服务接入网关¶
DCE 5.0 云原生网关支持通过手动接入和自动发现两种方式导入服务,操作时根据自身情况二选一即可。
自动发现服务¶
-
参考文档创建网关创建一个网关。 将服务所在的命名空间添加为网关的管辖命名空间 。 此次演示使用的服务位于
webstore-demo
命名空间。所以创建网关时应该做如下配置: -
服务所在的命名空间被添加为
管辖命名空间
之后,该命名空间下的所有服务都会自动接入网关,无需手动添加。 -
参考添加域名在网关下面创建域名,例如
adservice.virtualhost
。 -
参考添加 API在网关下面创建 API。 需要将服务添加为 API 的后端服务 。
添加后端服务时,筛选
自动发现
类型的服务,然后勾选目标服务,点击 确定 即可。
手动接入服务¶
需要将服务添加为 API 的后端服务 。
添加后端服务时,筛选手工接入
类型的服务,然后勾选目标服务,点击 确定 即可。
获取网关地址¶
-
登录到网关所在集群的控制节点,使用
kubectl get po -n $Namespace
命令查看网关所在的节点。 以envoy
开头的 Pod 是网关的数据面,查看这个 Pod 的位置即可。 -
使用
ping
命令和网关所在节点通信,根据返回的数据得知该节点的 IP。在本次演示情形下,网关所在节点的 IP 为
10.6.222.24
。 -
使用
kubectl get svc -n $Namespace
命令查看网关暴露的端口。以
envoy
开头且以gtw
结尾的便是网关对应的 Service。在本次演示情形下,网关 Service 的端口为30040
。 -
根据上述信息得出,网关的访问地址为
10.6.222.24:30040
。
配置本地域名¶
使用 vim /etc/hosts
命令修改本地 hosts 文件,为网关访问地址配置本地域名。
访问服务¶
配置本地域名之后,即可使用域名通过外部和内部网络访问网关服务。此时应该可以正常访问,返回服务根路径下的 hello world
内容。
外部访问¶
在本次演示情形下,可以使用 curl adservice.virtualhost:30040/
。
内部访问¶
在网关所在集群的任意节点上都可以通过网关成功访问 adservice
服务。
在本次演示情形下,网关所在集群中有三个工作节点,分别名为 dev-worker1
、dev-worker2
、dev-worker3
, 在这三个节点上,使用内网 IP 均可以访问成功。