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

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

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

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

相关推荐
大腕先生1 小时前
微服务环境搭建&架构介绍(附超清图解&源代码)
微服务·云原生·架构
2401_897930062 小时前
linux系统如何配置host.docker.internal
linux·docker·eureka
亲持红叶7 小时前
open-webui安装
docker·open-webui
伪装成塔的小兵7 小时前
Windows使用docker部署fastgpt出现的一些问题
windows·docker·容器·oneapi·fastgpt
卑微的小鬼7 小时前
rpc和http的区别,为啥golang使用grpc 不使用http?
http·rpc·golang
WeiLai11129 小时前
面试基础--微服务架构:如何拆分微服务、数据一致性、服务调用
java·分布式·后端·微服务·中间件·面试·架构
大脑经常闹风暴@小猿10 小时前
1.1 go环境搭建及基本使用
开发语言·后端·golang
转身後 默落10 小时前
11.Docker 之分布式仓库 Harbor
分布式·docker·容器
Swift社区10 小时前
【微服务优化】ELK日志聚合与查询性能提升实战指南
spring·elk·微服务·云原生·架构
菩提云11 小时前
Deepseek存算分离安全部署手册
人工智能·深度学习·安全·docker·容器