Kong

Kong DB-less(1)

2019-07-26  本文已影响0人  埃尔温薛定谔不养猫

Kong专题

前言

Kong 推出1.1版本,带来了声明式配置(Declarative Configuration )与无数据库(DB-less Mode)部署。下面是1.1版本日志链接:
Kong 1.1 Released with Declarative Configuration and DB-less Mode!

db-less模式不兼容oauth2,在一般的工作中,token的更改都会保存到数据库里面。

Not Compatible
oauth2 - For its regular work, the plugin needs to both generate and delete tokens, and commit those changes to the database, which is not compatible with DB-less.

db-less模式对一些kong的插件是不兼容的哈,部分插件是需要中心化数据库或者动态创建实例。

Plugin Compatibility
Not all Kong plugins are compatible with DB-less mode, since some of them by design require a central database coordination and/or dynamic creation of entities.

声明性配置是db-less模式下唯一的配置实例的方法。因此原本的CRUD操作的端点在Admin API在这个模式下只能进行读操作。像对/services或/olugins进行POST,PATCH,PUT或DELETE这些操作,都将会返回HTTP 405 Not Allowed,而GET操作就不受影响。

Read Only Admin Api

因为网上很多部署数据库模式的,所以这一篇我只讲使用Docker部署DB-less模式
Docker Installation

正文

启动

  1. 先创建一个docker network,这一步其实不是必须的步骤,这样做方便以防你未来有别的需求,比如使用插件
docker network create kong-net
  1. 创建专门的卷(volume)
docker volume create kong-vol
docker volume inspect kong-vol

命令执行之后会返回类似下面的结果:

 [
     {
         "CreatedAt": "2019-07-25T12:40:09Z",
         "Driver": "local",
         "Labels": {},
         "Mountpoint": "/var/lib/docker/volumes/kong-vol/_data",
         "Name": "kong-vol",
         "Options": {},
         "Scope": "local"
     }
 ]
  1. 配置kong.yml ,并把这个文件保存到 我们更改刚刚建立的卷_data目录下
    /var/lib/docker/volumes/kong-vol/_data
_format_version: "1.1"

services:
- name: my-service
  url: https://example.com
  plugins:
  - name: key-auth
  routes:
  - name: my-route
    paths:
    - /

consumers:
- username: my-user
  keyauth_credentials:
  - key: my-key
  1. 按db-less模式启动kong,如果之前没有在doker pull kong的话,会自动pull最新的版本。
docker run -d --name kong \
     --network=kong-net \
     -v "kong-vol:/usr/local/kong/declarative" \
     -e "KONG_DATABASE=off" \
     -e "KONG_DECLARATIVE_CONFIG=/usr/local/kong/declarative/kong.yml" \
     -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
     -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
     -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
     -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
     -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
     -p 8000:8000 \
     -p 8443:8443 \
     -p 8001:8001 \
     -p 8444:8444 \
     kong:latest
  1. 你可以如下操作确认是否成功启动

返回的信息包含kong.yml配置的实例,这里我是直接启动,没有配置kong.yml

 curl -i http://localhost:8001/

返回服务列表

curl -i http://localhost:8001/services
上一篇 下一篇

猜你喜欢

热点阅读