Kong install by Docker 中文翻译

谁说我不能喝 提交于 2019-12-06 08:25:20

查看原文

关于如何在 Docker 中使用 Kong 的细节讨论可以在存有 Kong 镜像的 DockerHub 页面上找到。我们也有一个 Docker Compose template,内置了群组和可扩展性。

带数据库模式

以下是一个简单例子,展示了如何将一个 kong 容器连接至 Cassandra 或 PostgreSQL。

  1. 创建 docker 网络 你需要手动创建一个网络,用于容器之间互相发现和沟通。在本例中,kong-net是网络的名称,你可以随便改个名字。
$ docker network create kong-net
  1. 运行数据库

期望使用 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
  1. 准备数据库 用一个临时 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 均已完成配置,不过,你需要用 Cassandra 或 PostgreSQL 更新 KONG_DATABASE 环境变量。 对于版本低于 0.15 的注意点:版本号低于 0.15 的 kong (最高 0.14),用 up 子命令替换 bootstrap。另外,版本号低于 0.15 的 kong 禁止同时运行迁移。同一时间,只能有一个 kong 节点在运行迁移。这个限制对 kong 0.15,1.0 或更高版本不存在。 1. 启动 kong 准备好数据库和运行迁移后,启动一个连接至数据库容器的 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
  1. 使用 kong
    kong 正在运行:
$ curl -i http://localhost:8001/

通过 5 分钟快速入门 快速学习如何使用 kong。

无数据库模式

无数据库模式 启动 kong 的步骤:

  1. 创建 docker 网络 这与 Pg/Cassandra 教程中的一样。我们使用了相同的网络名 kong-net,你也可以改名成你想要的名字。
 $ docker network create kong-net

以无数据库模式运行 kong 并不强制要求此步骤,不过,万一以后你想添加一些其它玩意(例如由 Redis Cluster 驱动的限速插件)时是个不错的伏笔。

  1. 创建一个 docker 磁盘 (volume)
    本文中,一个 docker 磁盘就是实体主机中的一个目录,它被映射至容器内的一个目录。磁盘有一个名字,本里中,我们将其命名为 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,下一步我们会用到这个路径。

  1. 准备好你的配置文件

相关语法和属性在 声明式配置格式 中介绍。
在其中添加所有需要的条目(Services 服务,Route 路由,Plugins 插件,Consumers 消费者,等等)。
本教程中,我们假定你将其命名为 kong.yml
文件保存在上一部步提到的 MountPoint 路径下。在本例中,存储路径为 /var/lib/docker/volumes/kong-vol/_data/kong.yml

  1. 以无数据库模式启动 kong
    虽然可以通过 KONG_DATABASE=off 以无数据库模式启动 kong,但更常用的方式是通过 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
  1. 使用 kong
    Kong 应该已经运行起来,包含了 kong.yml 中添加的条目。
$ curl -i http://localhost:8001/

例如,获取服务列表:

$ curl -i http://localhost:8001/services
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!