微服务API网关 Kong On Docker

575 views次阅读
没有评论

基于 docker 的方式安装

  • 创建网络

启动三个容器服务:Kong、konga 和 kong-database。这三个容器之间的通信需要增加 network 段,把容器放在同一个网段内,相关链接修改为容器名称来访问:

  • docker-compose.yml

docker-compose.yml中定义的镜像、依赖和参数如下所示:

  • 启动服务

所启动的三个容器服务,除了 Kong 之外的两个服务:konga 是 Kong 的 Dashboard,基于 js 的客户端管理工具,对外暴露的端口为 8080;kong-database 是 Kong 的数据库服务,存储配置信息,这里使用的是 postgres。需要注意的是,在启动 Kong 容器之前,需要保持数据库的 Docker 容器在运行状态,并执行如下初始化数据库的操作:

docker-compose报错解决:docker-compose

注意:这里启动服务会报错,因为kong 使用的postgres 数据还需要进行初始化才能使用。
  • 数据初始化

微服务API网关

数据库初始化成功后,再次启动 docker-compose.yml 服务就可以了。我们看到 Kong 映射出多个端口,默认情况下,Kong 监听的端口为:

  • 8000:此端口是 Kong 用来监听来自客户端传入的 HTTP 请求,并将此请求转发到上有服务器;(Kong 根据配置的规则转发到真实的后台服务地址)
  • 8443:此端口是 Kong 用来监听来自客户端传入的HTTPS请求的。它跟8000端口的功能类似,转发 HTTPS 请求的。可以通过修改配置文件来禁止它;
  • 8001:Admin API,通过此端口,管理者可以对 Kong 的监听服务进行配置,插件设置、API 的增删改查、以及负载均衡等一系列的配置都是通过 8001 端口进行管理;
  • 8444:通过此端口,管理者可以对 HTTPS 请求进行监控。

验证

创建服务

如我们在术语部分的介绍,服务是上游服务的抽象,可以是一个应用,或者具体某个接口。Kong 提供了管理接口,我们可以通过请求 8001 管理接口直接创建,也可以通过安装的管理界面,实现的效果是一样的。

微服务API网关

我们创建一个服务名为 cloudcared-blog,指定转发的地址为 https://www.cloudcared.cn。可以在管理界面中看到如下的记录:

微服务API网关

创建路由

创建好服务之后,我们需要创建具体的 API 路由。路由是请求的转发规则,根据 Hostname 和 PATH,将请求转发。

微服务API网关

微服务API网关

创建好路由之后,我们就可以访问 /api/blog

微服务API网关

Kong 默认通过 8000 端口处理代理的请求。成功的响应意味着 Kong 将 http://localhost:8000 的请求转发到配置的 URL,并将响应转发给我们。需要注意的是,如果 API 暴露的地址与前面 Host 定义的地址(cloudcared.cn)不一致,就需要在请求的 Headers 里面加入 Header,Kong 根据上面请求中定义的 Header:Host,执行此操作。

Honest1y
版权声明:本站原创文章,由Honest1y于2020年01月19日发表,共计3514字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)