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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章