Go微服务: 基于Docker搭建Kong网关环境

概述

  • 在当今的微服务架构中,API网关扮演着至关重要的角色,它作为系统的统一入口
  • 负责处理所有内外部请求,实现路由转发、负载均衡、安全控制、限流熔断等多种功能
  • Kong,作为一个开源、高性能、可扩展的API网关,凭借其强大的插件系统和易于部署的特性,成为了众多企业和开发者的首选
  • Kong的插件架构使得其功能扩展变得非常简单,用户可以根据自己的需求选择合适的插件来满足业务需求
  • 在微服务架构日益盛行的今天,API网关成为了连接客户端与后端服务的关键组件
  • Kong作为一款高性能、可扩展的API网关,凭借其强大的功能和灵活的插件机制,成为了许多企业的首选

环境搭建

1 )准备相关镜像

  • $ docker pull postgres:13
  • $ docker pull kong/kong-gateway:3.7.0.0

2 )创建专属docker网络

  • $ docker network create kong-net

3 ) 启动 PostgreSQL 容器

docker 复制代码
docker run -d --name kong-database \
 --network=kong-net \
 -p 5432:5432 \
 -e "POSTGRES_USER=kong" \
 -e "POSTGRES_DB=kong" \
 -e "POSTGRES_PASSWORD=kongpass" \
 postgres:13

4 ) 准备 Kong 数据库

docker 复制代码
docker run --rm --network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kongpass" \
-e "KONG_PASSWORD=test" \
kong/kong-gateway:3.7.0.0 kong migrations bootstrap

5 ) 启动 Kong 网关容器

docker 复制代码
docker run -d --name kong-gateway \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-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.7.0.0
  • 注意,这里的 KONG_LICENSE_DATA 是可选的,可以不用添加
  • 如果有企业版, 则填入 license 作为环境变量
    • $ export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":"1","customer":"Example Company, Inc","dataplanes":"1","license_creation_date":"2017-07-20","license_expiration_date":"2017-07-20","license_key":"00141000017ODj3AAG_a1V41000004wT0OEAU","product_subscription":"Konnect Enterprise","support_plan":"None"},"signature":"6985968131533a967fcc721244a979948b1066967f1e9cd65dbd8eeabe060fc32d894a2945f5e4a03c1cd2198c74e058ac63d28b045c2f1fcec95877bd790e1b","version":"1"}}'
    • 上述只是 官方提供的一个 example
    • 有则,可选填入

验证安装

  • $ curl -i -X GET --url http://localhost:8001/services

    ts 复制代码
    HTTP/1.1 200 OK
    Date: Fri, 31 May 2024 00:09:57 GMT
    Content-Type: application/json; charset=utf-8
    Connection: keep-alive
    Access-Control-Allow-Origin: http://localhost:8002
    X-Kong-Admin-Request-ID: 53c753455d4d5616aea80450a1497b62
    vary: Origin
    Access-Control-Allow-Credentials: true
    Content-Length: 23
    X-Kong-Admin-Latency: 634
    Server: kong/3.7.0.0-enterprise-edition
  • 出现以上200就是安装成功了

进入 Kong Manager

默认是不需要密码登录的,如果需要配置用户登录,可以在下面进行配置

之后,我们可以进行相关的配置了

如果需要开通 企业版,可以体验更多功能

相关推荐
lpruoyu5 小时前
【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【18】认证服务02—微博社交登录
分布式·微服务·架构·社交登录
cssl-虞老师9 小时前
Ubuntu安装Docker
linux·ubuntu·docker
hay_lee10 小时前
一台docker机器如何实现构建多平台镜像
运维·docker·云原生·容器
符华-10 小时前
【Go】excelize库实现excel导入导出封装(四),导出时自定义某一列或多列的单元格样式
golang·excel
ether-lin11 小时前
开发个人Go-ChatGPT--1 项目介绍
chatgpt·golang·ollama·openui
ether-lin11 小时前
开发个人Go-ChatGPT--3 服务拆分
chatgpt·golang·llama·go-zero
蜗牛乌龟一起走12 小时前
【搭建Nacos服务】centos7 docker从0搭建Nacos服务
运维·docker·容器
林诺辞13 小时前
DockerFile
java·docker
王大傻092814 小时前
UI 自动化分布式测试 -- Docker Selenium Grid
分布式·docker·自动化
海风极客15 小时前
工作两年后,我如何看待设计模式
开发语言·后端·设计模式·golang·编程思维