物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

前言

上一篇我们讲解了 Konga 的搭建和与 Kong 进行默认连接,本篇文章将讲一下如何在生产环境中基于验证的连接 Kong ,并详细讲解其中的参数。

前期准备

如果你需要在生产环境使用,那么你可以将 admin 端口只监听 127.0.0.1 ,然后通过 Kong 自己进行代理并增加效验。

首先,你可以通过默认方法连接上你的 Kong admin,这样方便进行配置。而后创建 Service。

Service ( 服务 )

Service 是 Kong 对于服务的抽象概念。其本意为我们自定义的上游服务,可以通过 Kong 对路由的抽象( Route )来对一个请求进行转发或通过 Kong 的插件机制 ( Plugins )进行处理。

我们将在下文对 Route 和 Plugins 进行介绍。

下面我们将展示如何创建一个 Service。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

属性详解:

  • Name : 该服务的名称。
  • Description : 用于对自定义服务的描述。
  • Tags :为该服务打上标签,便于通过 tag 来区分。
  • Url :方便配置 protocol、host、port、path。
  • Protocol :使用 HTTP/HTTPS 连接被代理的服务。
  • Host :被代理服务的 host。
  • Port :被代理服务的端口。
  • Path : 被代理服务的路径。
  • Retries :代理请求失败重试几次。默认值为5秒。
  • Connect timeout :与代理服务建立连接超时时间。
  • Write timeout :与代理服务完成写请求的超时时间。
  • Read timeout : 与代理服务完成读请求的超时时间。
  • Client certificate :证书的id。( 关于怎么配置证书见下文 )

我们来填写相关属性,建立一个新的服务。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

创建成功后可以看到一个新列表,里面就有我们刚才创建的 kong-admin

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

接下来我们需要点击这个 Name,进入该 Service 的配置页面。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

进入配置页面后我们会发现左边有一个选择栏,右边则是这个服务的详细配置。

左边选择栏讲解:

  • Service details : 服务的详细配置。
  • Routes : 该服务的路由。
  • Plugins : 该服务所使用的插件。
  • Eligible Consumers : 适用于 ACL Kong 插件。( 具体用法日后再进行讲解 )

Route ( 路由 )

Route 是 Kong 对于服务路由的抽象。其功能类似于 Nginx 中的 location 结构块。

下面我们将展示如何创建一个 Route

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

属性详解:

  • Name:Route 的名字
  • Tags:为该路由打上标签,便于通过 tag 来区分。
  • Hosts:路由所匹配的域名,可填写多个。( 填写后要按回车才会记录数据 )
  • Paths:路由所匹配的域名的路径。
  • Headers:路由所匹配 HTTP 请求 header 内携带的参数。
  • Path handling:用于控制代理服务的时候如何转发请求路径。( 值为 V0、V1 )

V0 - 其主要实现的为:

请求 /user => 路由的 path /a 则最后会被组合为 /a/user

V1 - 其主要实现为:

请求 /user => 路由的 path /a 则最后被组合为 /auser

  • Https redirect status code:当匹配到路由后如果协议不符合,则 Kong 会主动响应该状态吗。默认为426。
  • Regex priority:正则匹配的优先级。在使用正则做路由匹配的时候会利用该标志使用优先级最高的。

如果路由匹配,且 Regex priority 也相同,则会按照最早创建的规则来匹配。

  • Methods:HTTP 请求方法。如 GET 、POST 、PATCH 、PUT
  • Strip Path:是否删除路由所匹配的路径。

例如路由的规则为 /a,请求为 /a/user。 则当 Kong 接受到该请求在转发时会将该路径改变为 => /user

  • Preserve Host:是否将请求端的 host 保留
  • Protocols:接受的协议。 HTTP 或 HTTPS
  • SNIs:使用 Socket 路由时,与此路由匹配的SNI列表。 使用tcp或tls协议时,必须设置SNIs,源或目标之一。
  • Sources:使用 Socket 路由时,与此路由匹配的传入连接的 IP 源列表。其格式为 IP:PORT。
  • Destinations:使用 Socket 路由时,与此路由匹配的目标连接的 IP 源列表。其格式为 IP:PORT。

现在我们创建了一个 Service 的路由

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

接下来,我们可以使用该域名访问 Kong admin 了。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

Consumer ( 消费者 )

为了配置 Kong 的插件,我们首先要了解什么是 Consumer 。 Consumer 代表服务的使用者或用户。 首先,我们创建一个 Consumer。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

点击我们新建的 kong-admin 然后配置 Credentials 的 API KEYS。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

点击 Create API KEY 来新建一个 key。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

  • key - 密钥。如果为空则会自动生成一个。

记住生成的密钥,待会儿会用。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

Plugin ( 插件 )

刚才我们已经成功创建了密钥,接下来我们就要配置权限登陆了。

我们选取之前提到的 Key Auth 来进行验权安全登陆。

首先,打开 Plugins 的页面。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

添加一个 Key Auth 插件。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

填写相关的参数。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

属性详解:

  • consumer:用于区分 Kong 插件的消费者,为空则对应所有的消费者。
  • key names:key 的名称,可支持多个 key 。
  • hide credentials:是否隐藏凭据到上游 API 服务器。
  • anonymous:配置匿名访问者的 id 。

重启 Kong 容器

经过这么多步骤的配置,现在我们我们已经对 Kong 的管理接口进行了验权。我们只需要重启 Docker 容器,使得其端口只监听内部的请求即可。

成功安全连接到 Kong

现在,我们已经配置好了安全连接。当我们访问刚才测试的域名时会得到一个异常。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

好,接下来我们配置 Konga 进行安全连接。选择 Key AUTH 的登陆方式。然后把刚才记录的密钥填上。

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

  • Name:连接名称
  • Loopback API URL:kong 的管理端口 URL。格式为 http://… 或 https:// …
  • API key:密钥

物联网网关神器 Kong ( 四 )- 利用 Konga 来配置生产环境安全连接 Kong

现在我们已经使用安全连接成功的连接到 Kong 服务。

总结

本篇文章利用配置安全连接 Kong 服务来讲解了 Kong 的 Service、Route、Consumer 和 Key Auth 插件。

上一篇:夜深了,写了个JQuery的省市区三级级联效果


下一篇:微服务网关kong