目录
使用数据库
这是一个简单的示例,显示了如何将Kong容器连接到Cassandra或PostgreSQL容器。
创建一个Docker网络
您将需要创建一个自定义网络,以使容器能够发现彼此并进行通信。在此示例中kong-net为网络名称,您可以使用任何名称。
$ docker network create kong-net
启动你的数据库
如果您想使用Cassandra容器:
$ docker run -d –name kong-database
–network=kong-net
-p 9042:9042
cassandra:3
如果您想使用PostgreSQL容器:
$ docker run -d –name kong-database
–network=kong-net
-p 5432:5432
-e “POSTGRES_USER=kong”
-e “POSTGRES_DB=kong”
postgres:9.6
初始化数据库
使用临时Kong容器运行迁移:
$ docker run –rm
–network=kong-net
-e “KONG_DATABASE=postgres”
-e “KONG_PG_HOST=kong-database”
-e “KONG_CASSANDRA_CONTACT_POINTS=kong-database”
kong:latest kong migrations bootstrap
在上面的示例中,同时配置了Cassandra和PostgreSQL,但是您应该KONG_DATABASE使用cassandra或更新环境变量 postgres。
Kong <0.15的注意事项:Kong版本低于0.15(最大0.14)时,请使用up子命令代替bootstrap。还要注意,Kong <0.15时,永远不要同时运行迁移。一次只能有一个Kong节点执行迁移。对于0.15、1.0及更高版本,此限制被取消。
启动
运行迁移并准备好数据库后,启动将连接到数据库容器的Kong容器,就像临时迁移容器一样:
$ docker run -d –name kong
–network=kong-net
-e “KONG_DATABASE=postgres”
-e “KONG_PG_HOST=kong-database”
-e “KONG_CASSANDRA_CONTACT_POINTS=kong-database”
-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
无数据库模式
创建一个Docker网络
这与Pg / Cassandra指南中的相同。我们也使用kong-net网络名称,也可以将其更改为其他名称。
$ docker network create kong-net
在无数据库模式下运行Kong并非必须严格执行此步骤,但是如果您将来要添加其他内容(例如由Redis集群备份的限速插件),则这是一个很好的预防措施。
创建一个Docker卷
$ docker volume create kong-vol
您现在应该可以检查该卷了:
$ docker volume inspect kong-vol
结果应类似于以下内容:
[
{
“CreatedAt”: “2019-05-28T12:40:09Z”,
“Driver”: “local”,
“Labels”: {},
“Mountpoint”: “/var/lib/docker/volumes/kong-vol/_data”,
“Name”: “kong-vol”,
“Options”: {},
“Scope”: “local”
}
]
注意MountPoint条目。下一步,我们将需要该路径。
准备您的声明性配置文件
在此添加您需要的任何核心实体(服务,路由,插件,使用者等)。
在本指南中,我们假设您为它命名kong.yml。
将其保存MountPoint在上一步中提到的路径内。就本指南而言,/var/lib/docker/volumes/kong-vol/_data/kong.yml
在无数据库模式下启动Kong
尽管可以使用just来启动Kong容器KONG_DATABASE=off,但通常还是希望通过KONG_DECLARATIVE_CONFIG变量名将声明性配置文件作为参数包括在内 。为此,我们需要使文件在容器内“可见”。我们使用-v标志来实现这一点,该标志将kong-vol卷映射到/usr/local/kong/declarative容器中的文件夹。
$ 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
使用岗
Kong应该正在运行,并且应该包含kong.yml中添加的一些实体:
例如,获取服务列表:
api使用:
创建route
curl -i -X POST –url http://10.26.27.222:8001/services/gaoyaohuatest/routes –data ‘protocols[]=http’ –data ‘hosts[]=10.26.27.222:8000′ –data ‘paths[]=/gaoyaohua’
创建service
curl -i -X POST –url http://10.26.27.222:8001/services/ –data ‘name=gaoyaohuabaidutest’ –data ‘url=https://www.baidu.com’
创建upstream
创建traget
curl -i -X POST –url http://10.26.27.222:8001/upstreams/gaoyaohuaupdn/targets –data “target=10.26.21.42:8888” –data “weight=100”