在docker中安装Kong

目录

有关如何在Docker中使用Kong的详细信息,可以在托管该映像的DockerHub存储库中找到:kong我们还有一个具有内置编排和可伸缩性Docker Compose模板

使用数据库

这是一个简单的示例,显示了如何将Kong容器连接到Cassandra或PostgreSQL容器。

创建一个Docker网络

您将需要创建一个自定义网络,以使容器能够发现彼此并进行通信。在此示例中kong-net为网络名称,您可以使用任何名称。

$ docker network create kong-net

启动你的数据库

如果您想使用Cassandra容器:

$ docker run -d <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<name kong-database \

               <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<network=kong-net \

               -p 9042:9042 \

               cassandra:3

如果您想使用PostgreSQL容器:

$ docker run -d <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<name kong-database \

               <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<network=kong-net \

               -p 5432:5432 \

               -e “POSTGRES_USER=kong” \

               -e “POSTGRES_DB=kong” \

               postgres:9.6

初始化数据库

使用临时Kong容器运行迁移:

$ docker run <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<rm \

     <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<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 <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<name kong \

     <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<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

使用岗

Kong正在运行:

$ curl -i http://localhost:8001/

5分钟的快速入门快速学习如何使用Kong 

无数据库模式

在无数据库模式下启动Kong的步骤如下:

创建一个Docker网络

这与Pg / Cassandra指南中的相同。我们也使用kong-net网络名称,也可以将其更改为其他名称。

$ docker network create kong-net

在无数据库模式下运行Kong并非必须严格执行此步骤,但是如果您将来要添加其他内容(例如由Redis集群备份的限速插件),则这是一个很好的预防措施。

创建一个Docker卷

出于本指南的目的,Docker Volume是主机内部的一个文件夹,可以映射到容器中的文件夹。卷有一个名称。在这种情况下,我们将命名为我们的kong-vol

$ 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 <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<name kong \

     <span style="font-size: 14px; white-space: pre; border: 0px none; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: navy; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-variant-caps: normal; font-variant-ligatures: normal; line-height: 24px; background-position: 0px 0px;"–<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中添加的一些实体:

$ curl -i http://localhost:8001/

例如,获取服务列表:

$ curl -i http://localhost:8001/services

API 文档: https://docs.konghq.com/2.0.x/admin-api/

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


curl -i -X POST –url
http://10.26.27.222:8001/upstreams/ –data ‘name=gaoyaohuaupdn



创建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”

发表评论

电子邮件地址不会被公开。 必填项已用*标注