02-kong基本入门教程

配置一个服务   

    在本节中,您将向Kong添加一个API。为此,您首先需要添加一个Service;这就是Kong用来指定它管理的上游API和微服务的名称。

出于本指南的目的,我们将创建一个指向Mockbin API的服务。Mockbin是一个“echo”类型的公共网站,它将返回请求的请求作为响应返回给请求者。这有助于了解Kong如何代理您的API请求。

在开始向Service发出请求之前,您需要为其添加一个Route。Route指定请求在到达Kong后如何(以及是否)发送到其服务。一个Service可以有多个Route.

在配置完Service和Route以后,就可以通过Kong使用他们发送请求。

Kong在:8001端口上公开了RESTful Admin API。 Kong的配置,包括添加的Service和Route,是通过对该API发送请求进行的。

1.使用Admin API添加您的服务

执行以下cURL请求,将你的第一个Service(指向Mockbin API)添加到Kong:

$ curl -i -X POST \
  --url http://localhost:8001/services/ \
  --data 'name=example-service' \
  --data 'url=http://mockbin.org'

您应该收到类似于的响应:

HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive

{
   "host":"mockbin.org",
   "created_at":1519130509,
   "connect_timeout":60000,
   "id":"92956672-f5ea-4e9a-b096-667bf55bc40c",
   "protocol":"http",
   "name":"example-service",
   "read_timeout":60000,
   "port":80,
   "path":null,
   "updated_at":1519130509,
   "retries":5,
   "write_timeout":60000
}

2.为服务添加一个路由

$ curl -i -X POST \
  --url http://localhost:8001/services/example-service/routes \
  --data 'hosts[]=example.com'

您应该收到类似于的响应:

HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive

{
   "created_at":1519131139,
   "strip_path":true,
   "hosts":[
      "example.com"
   ],
   "preserve_host":false,
   "regex_priority":0,
   "updated_at":1519131139,
   "paths":null,
   "service":{
      "id":"79d7ee6e-9fc7-4b95-aa3b-61d2e17e7516"
   },
   "methods":null,
   "protocols":[
      "http",
      "https"
   ],
   "id":"f9ce2ed7-c06e-4e16-bd5d-3a82daef3f9d"
}

Kong现在知道了这个Service并准备代理请求。

3.通过Kong转发您的请求

执行下面的cURL请求,验证Kong是否正确转发到你的Service。 注意,默认情况下,Kong在:8000端口处理代理请求。

$ curl -i -X GET \
  --url http://localhost:8000/ \
  --header 'Host: example.com'

成功的响应意味着Kong现在将对http//localhost:8000的请求转发到我们在步骤1中配置的URL,并将响应转发给我们。Kong知道通过上面的cURL请求中定义的header来执行此操作:

  • Host: <given host>

 启用插件

 

在本节中,您将学习如何配置Kong插件。Kong的核心原则之一是它通过插件实现的可扩展性。插件允许您轻松地向服务添加新功能或使其更易于管理。

在下面的步骤中,您将配置key-auth插件以向您的Service添加身份验证。在添加此插件之前,您的Service的所有请求都将代理到上游。当你添加配置了这个插件,只有具有正确密钥的请求才会被代理 - 所有其他请求将被Kong拒绝,从而保护您的上游服务免遭未经授权的使用。

1.配置key-auth插件

要为您在Kong中配置的服务添加key-auth插件,请执行以下cURL请求:

$ curl -i -X POST \
  --url http://localhost:8001/services/example-service/plugins/ \
  --data 'name=key-auth'

注意: 这个插件同时接受config.key_names参数,默认值是['apiKey'],这是一个header和参数名的列表(两者都支持),用于在请求时发送apiKey。

2.验证插件是否正确配置

执行以下cURL请求以验证是否在服务上正确配置了key-auth插件:

$ curl -i -X GET \
  --url http://localhost:8000/ \
  --header 'Host: example.com'

由于您未指定所需的apikey header 或参数,因此响应应为401 Unauthorized:

添加 Consumers

     在上一节中,我们学习了如何向Kong添加插件,在本节中我们将学习如何将Consumer添加到Kong实例中。Consumers与使用您的Service的个人相关联,并可用于跟踪,访问管理等。

注意:本节假定您已启用插件。如果还没有,您可以启用插件或跳过第二步和第三步。

1. 通过RESTful API创建一个Consumer

让我们通过执行以下请求来创建一个名为Jason的用户:

$ curl -i -X POST \
  --url http://localhost:8001/consumers/ \
  --data "username=Jason"

您应该看到类似于下面的响应:

HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive

{
  "username": "Jason",
  "created_at": 1428555626000,
  "id": "bbdf1c48-19dc-4ab7-cae0-ff4f59d87dc9"
}

恭喜!你刚刚把你的第一个Consumer添加到Kong。

注意:在创建使用者以将使用者与现有用户数据库关联时,Kong还接受custom_id参数。

2.为Consumer发放密钥凭证

现在,我们可以通过执行以下请求为我们最近创建的消费者Jason创建一个密钥:

$ curl -i -X POST \
  --url http://localhost:8001/consumers/Jason/key-auth/ \
  --data 'key=ENTER_KEY_HERE'

验证你的Consumer凭证是否有效

现在,我们可以执行下面的命令,验证刚刚给Jason发放的凭证是否有效:

$ curl -i -X GET \
  --url http://localhost:8000 \
  --header "Host: example.com" \
  --header "apikey: ENTER_KEY_HERE"
HTTP/1.1 401 Unauthorized
...

{
  "message": "No API key found in request"
}
Permalink
发布了67 篇原创文章 · 获赞 9 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/robinhunan/article/details/103492415