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

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

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

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

相关推荐
tyler_download2 小时前
golang 实现比特币内核:处理椭圆曲线中的天文数字
golang·blockchain·bitcoin
想进大厂的小王2 小时前
Spring-cloud 微服务 服务注册_服务发现-Eureka
微服务·eureka·服务发现
疯狂的程需猿2 小时前
一个百度、必应搜索引擎图片获取下载的工具包
golang·图搜索
明月看潮生4 小时前
青少年编程与数学 02-003 Go语言网络编程 09课题、Cookie
青少年编程·golang·网络编程·编程与数学
明月看潮生5 小时前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
明月看潮生5 小时前
青少年编程与数学 02-003 Go语言网络编程 14课题、Go语言Udp编程
青少年编程·golang·网络编程·编程与数学
川石课堂软件测试5 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
Gemini19956 小时前
分布式和微服务的区别
分布式·微服务·架构
hlsd#6 小时前
go 集成go-redis 缓存操作
redis·缓存·golang
追风林12 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker