Windows Docker部署Kong网关的实现步骤

 更新时间:2024年03月18日 09:02:21   作者:菜鸟厚非  
Kong是一个轻量级、快速、灵活的云原生API网关,本文主要介绍了Windows Docker部署Kong网关的实现步骤,具有一定的参考价值,感兴趣的可以了解一下

一、Kong 网关版本

Kong Gateway 有开源免费版和企业版,两个不同的版本。当前企业版有些功能是需要收费的,今天这里部署的是开源免费版本 3.6.x 系列。两个版本之间的区别,请见 官方文档

在这里插入图片描述

二、部署 Kong 网关

部署 Kong 网关,需要先部署依赖的 db、初始化 db 数据,然后再进行 kong 网关部署。

2.1 创建 kong-net 网络

打开 Docker Desktop 切换到 Linux 容器,然后在 PowerShell 执行下面命令,则会创建 kong-net 网络,如果已存在 kong-net 网络,则不需要创建。

docker network create kong-net

2.2 部署 PostgreSQL

接着,PowerShell 执行下面命令,会部署 Kong Gateway 依赖的 PostgreSQL 数据库。这里安装的是 13 版本,DB 和 Kong Gateway 的般般之间会有依赖关系,不建议部署其他版本。

docker run -d --name kong-postgresql-13 --network=kong-net -p 5432:5432 -v C:\ProgramDatas\Docker\Containers\kong-database-13:/var/lib/postgresql/data -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kongpass" postgres:13

-参数 -p 5432:5432 将 PostgreSQL 默认端口 5432 映射到物理机的 5432 端口。
-参数 --network=kong-net 指定 PostgreSQL 容器的网络。
-参数 -v C:\ProgramDatas\Docker\Containers\kong-database-13:/var/lib/postgresql/data 将 PostgreSQL 容器内的 /var/lib/postgresql/data 目录映射到物理机的 C:\ProgramDatas\Docker\Containers\kong-database-13 进行数据持久化。
-参数 -e “POSTGRES_USER=kong” 指定 PostgreSQL 的用户名为 kong。
-参数 -e “POSTGRES_DB=kong” 指定 PostgreSQL 的数据库名称为 kong。
-参数 -e “POSTGRES_PASSWORD=kongpass” 指定 PostgreSQL 的用户密码为 kongpass。

2.3 初始化 PostgreSQL

接着,PowerShell 执行下面命令,会在 postgres 数据库,初始化 Kong Gateway 数据。命令里面也指定了 Kong Gateway 的版本 3.6.1.0。

docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-postgresql-13" -e "KONG_PG_PASSWORD=kongpass" -e "KONG_PASSWORD=test" kong/kong-gateway:3.6.1.0 kong migrations bootstrap

-参数 -e “KONG_DATABASE=postgres” 指定数据库的类型为 PostgreSQL 数据库。
-参数 “KONG_PG_HOST=kong-postgresql-13” 指定 PostgreSQL 的服务器地址,应为同在 kong-net 网络,所以就可以使用 PostgreSQL 的容器名称,即主机名。
-参数 “KONG_PG_PASSWORD=kongpass” 连接 PostgreSQL 的密码。
-参数 kong/kong-gateway:3.6.1.0 指定 kong-gateway 初始化数据的版本。

2.4 部署 Kong Gateway

接着,PowerShell 执行下面命令,会部署 kong-gateway 服务。这里安装的是 3.6.1.0 ,如果安装其他版本,需要注意依赖 DB 的对应版本。

docker run -d --name kong-gateway-3.6.1.0 --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-postgresql-13" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kongpass" -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" -e "KONG_ADMIN_GUI_URL=http://localhost:8002" -e KONG_LICENSE_DATA -p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 -p 8002:8002 -p 8445:8445 -p 8003:8003 -p 8004:8004 kong/kong-gateway:3.6.1.0

-参数 -e “KONG_DATABASE=postgres” 指定 Kong Gateway 使用的数据库类型为 PostgreSQL 数据库。
-参数 -e “KONG_PG_HOST=kong-postgresql-13” 指定 PostgreSQL 的服务器地址,应为同在 kong-net 网络,所以就可以使用 PostgreSQL 的容器名称,即主机名。
-参数 -e “KONG_PG_USER=kong” 连接 PostgreSQL 的用户名。
-参数 -e “KONG_PG_PASSWORD=kongpass” 连接 PostgreSQL 的密码。
-参数 -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” 指定 Kong Gateway 相关日志的存储目录。
-参数 -e “KONG_ADMIN_LISTEN=0.0.0.0:8001” 指定 Kong Gateway Admin API 的端口为 8001。
-参数 -e “KONG_ADMIN_GUI_URL=http://localhost:8002” 指定 Kong Gateway 默认 UI 管理界面访问端口为 8002。

三、部署 KongA UI

部署 KongA 管理界面,需要先部署依赖的 db、初始化 db 数据,然后再进行 KongA 部署。

3.1 部署 PostgreSQL

KongA 也依赖于 DB,所以先部署一个 KongA 需要的数据库 PostgreSQL。建议不要和 Kong 所使用的数据库放一起,解耦。在 PowerShell 执行下面命令,即可启动一个 PostgreSQL 服务,这里使用的是 9.6 版本,不建议使用其他版本。

docker run -d --name konga-postgresql-9.6 --network=kong-net --privileged=true -p 5433:5432 -v C:\ProgramDatas\Docker\Containers\konga-postgresql-9.6:/var/lib/postgresql/data -e "POSTGRES_USER=konga" -e "POSTGRES_DB=konga" -e "POSTGRES_PASSWORD=12345" postgres:9.6

-参数 -v C:\ProgramDatas\Docker\Containers\konga-postgresql-9.6:/var/lib/postgresql/data 将 PostgreSQL 容器内的 /var/lib/postgresql/data 目录映射到物理机的 C:\ProgramDatas\Docker\Containers\kong-database-9.6 进行数据持久化。
-参数 -e “POSTGRES_USER=kong” 指定 PostgreSQL 的用户名为 konga。
-参数 -e “POSTGRES_DB=kong” 指定 PostgreSQL 的数据库名称为 konga。
-参数 -e “POSTGRES_PASSWORD=kongpass” 指定 PostgreSQL 的用户密码为 12345。

3.2 初始化 PostgreSQL

KongA 也需要初始化数据,在 PowerShell 执行下面命令,即可初始化 KongA 数据。命令里面也指定了KongA 的版本 0.14.9。

docker run --rm --network=kong-net pantsel/konga:0.14.9 -c prepare -a postgres -u postgres://konga:12345@konga-postgresql-9.6:5432/konga

-参数 -u postgres://konga:12345@konga-postgresql-9.6:5432/konga 指定连接 PostgreSQL 的信息(db host、db user、db pwd、db name)。

3.3 部署 KongA

接着,PowerShell 执行下面命令,会部署 KongA 服务。这里安装的是 0.14.9 ,如果安装其他版本,需要注意依赖 DB 的对应版本。KongA 已经在 2020 停止更新了,这里安装的是最后一个版本。

docker run -d --net=kong-net -p 1337:1337 -e "DB_ADAPTER=postgres" -e "DB_HOST=konga-postgresql-9.6" -e "DB_PORT=5432" -e "DB_USER=konga" -e "DB_PASSWORD=12345" -e "DB_DATABASE=konga" -e "NODE_ENV=production" --name konga-0.14.9 pantsel/konga:0.14.9

3.4 连接 Kong Gateway

打开浏览器,访问 http://localhost:1337 地址,第一次登录需要初始化用户信息。连接 Kong Gateway ,如果 Kong Gateway 和 KongaA 在同一个 Docker 需要用 http://host.docker.internal:8001 地址。否则,使用 http://127.0.0.1:8001/ 则会在 KongA 容器内部,找到自己的 8001 端口,无法连接到 Kong Gateway,这一点日志也有体现。

在这里插入图片描述

到此这篇关于Windows Docker部署Kong网关的实现步骤的文章就介绍到这了,更多相关Docker部署Kong网关 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:

相关文章

  • docker 指定IP地址、与主机同网段IP

    docker 指定IP地址、与主机同网段IP

    这篇文章主要介绍了docker 指定IP地址、与主机同网段IP,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • docker镜像无法上传的解决方法

    docker镜像无法上传的解决方法

    大家都知道创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个。但是工作中却发现docker镜像怎么都无法上传,通过在网上查找资料终于解决了,下面将方法分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • 利用Dockerfile制作个人的镜像文件详细讲解

    利用Dockerfile制作个人的镜像文件详细讲解

    Docker是一个开源的应用容器引擎,Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本,本文将给大家详细介绍如何利用Dockerfile制作个人的镜像文件,感兴趣的同学可以借鉴参考
    2023-06-06
  • Docker Volume存储卷的实现

    Docker Volume存储卷的实现

    Docker的存储卷是一种将宿主机的本地文件系统中的某个目录与容器内部的文件系统中的某个目录建立绑定关系的机制,下面就来介绍一下,感兴趣的可以了解一下
    2024-12-12
  • Docker-Compose搭建Spark集群的实现方法

    Docker-Compose搭建Spark集群的实现方法

    本文主要介绍了Docker-Compose搭建Spark集群的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 在Ubuntu Server 22.04上安装 Docker的详细步骤记录

    在Ubuntu Server 22.04上安装 Docker的详细步骤记录

    通过使用容器技术,Docker能够让开发人员将应用及其依赖环境一同打包,从而实现快速部署、一致的开发环境和优秀的可移植性,这篇文章主要给大家给大家介绍了关于在Ubuntu Server 22.04上安装 Docker详细步骤的相关资料,需要的朋友可以参考下
    2024-08-08
  • 解决docker pull出现错误:Error response from daemon

    解决docker pull出现错误:Error response from daemon

    这篇文章主要给大家介绍了关于解决docker pull出现错误:Error response from daemon的相关资料,这个错误提示一般是因为你没有权限拉取对应的镜像,文中将解决办法介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 被弃用的 Docker 会被 Podman 取代吗

    被弃用的 Docker 会被 Podman 取代吗

    Docker 是一种以容器化的方式打包、分发和部署应用程序的方式。自 2013 年 3 月 13 日初始版本发布以来,Docker 已成为容器业界的事实标准。而Kubernetes 是一款由 Google 开发的开源容器编排系统
    2020-12-12
  • docker中的volume和bind mount区别讲解

    docker中的volume和bind mount区别讲解

    这篇文章主要介绍了docker的volume和bind mount区别,介绍了volume 相对于bind mount的优点及volume操作,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • docker-compose安装部署NebulaGraph图数据库的详细过程

    docker-compose安装部署NebulaGraph图数据库的详细过程

    NebulaGraph Studio是一款可以通过Web访问的开源图数据库可视化工具,搭配NebulaGraph内核使用,提供构图、数据导入、编写nGQL查询等一站式服务,这篇文章主要介绍了docker-compose安装部署NebulaGraph图数据库的详细过程,感兴趣的朋友一起看看吧
    2023-12-12

最新评论