docker安装kong和konga并简单使用

本文介绍了如何在Docker环境下安装Kong和Konga,Kong作为可扩展的API网关,提供模块化和水平扩展能力。Konga是一个用于管理Kong的UI工具。详细步骤包括Docker安装、配置、服务与路由设置、负载均衡、插件应用等,涉及API反向代理、速率限制、代理缓存和安全性验证等功能。此外,还提到了如何通过KongAPI保护8001端口的安全。
摘要由CSDN通过智能技术生成

docker下安装kong和konga以及简单使用

kong是什么

Kong是可扩展的开源 API层 (也称为API网关或API中间件)。Kong在任何RESTful API之前运行,并通过Plugins扩展,
Plugins提供了核心平台之外的其他功能和服务。

使用kong的好处

可扩展:Kong只需添加更多机器即可轻松地水平扩展,这意味着您的平台几乎可以处理任何负载,同时保持较低的延迟。
模块化:Kong可以通过添加新的插件来扩展,这些插件可以通过RESTful Admin API轻松配置。
可在任何基础架构上运行:Kong可在任何地方运行。您可以将Kong部署在云或本地环境中,包括单个或多个数据中心设置,以及公共,私有或仅邀请API。

在这里插入图片描述

KONG以及KONGA的安装

由于本地安装比较麻烦,这里最好使用docker进行安装
安装请点击:https://blog.csdn.net/qism007/article/details/89521454

需要注意的是: 配置里面的DB_HOST是 容器的Gateway  千万不要写成了 ipaddress   以及konga的初始化的时候 如果不成功的话 试试下面这个

docker run --rm pantsel/konga:latest -c prepare -a postgres -u postgresql://konga:konga@{容器Gateway}/konga
上面的三个konga 分别是 用户名、密码和database  里面得ip地址是   运行 docker inspect kong-database 后得 Gateway 得地址

安装完成之后

试着访问:

linux访问:   curl -i http://localhost:8001/
谷歌访问:     http://  {ip} :8001/  

需要注意的是:

安装的时候如果没有开放端口 0.0.0.0:8001,那么浏览器上是无法访问
访问成功的话,会拿到一大堆字符串,,说明kong已经安装完成、 但是没有格式化
如果需要格式化的话 可以使用linux的一个jq插件 这里不在赘述

konga

运行之后在浏览器访问:http://ip:1337/ 
然后注册用户 输入kong节点的连接地址 一个konga可以管理多个kong的节点

界面如下:

KONG的基本使用

一:反向代理

  1. 配置服务

     	$ curl -i -X POST \
     	--url http://localhost:8001/services/ \ 
     	--data 'name=example-service' \
     	--data 'url=http://www.baidu.com/'
    

    通过post请求添加一个服务(service) 成功的话会收到返回码 201

  2. 为服务匹配路线route

     	$ curl -i -X POST \
     	--url http://localhost:8001/services/example-service/routes \
     	--data 'hosts[]=example.com'
    

    指定了服务名称以及标头

  3. 测试访问

     前提是需要在本机的host文件中(c:\windows\system32\drivers\etc)  添加ip与域名的映射
    
     访问地址:http://example.com:8000/   
    

二: 负载均衡

  1. 准备 :在几台不同的tomcat下部署三个不同的html文件(其实跟nginx的配置差不多只不过写法不同而已)

       		#首先创建upstream
       		curl -X POST http://{ip}:8001/upstreams \
       	    --data "name=address.v1.service"
       	    
       		#为upstream添加第一个目标对象(target)
       		curl -X POST http://{ip}:8001/upstreams/address.v1.service/targets \
       		--data "target={ip}:9999" \
       		--data "weight=100"
       		
       		#为upstream添加第二个目标对象(target)
       	    curl -X POST http://{ip}:8001/upstreams/address.v1.service/targets \
       	    --data "target={ip}:8888" \
       	    --data "weight=50"
       		
       		
       		#创建一个针对上游的服务  指定上游(upstream)的主机名  指定path: ip+端口后的访问地址
       		curl -X POST http://{ip}:8001/services/ \
       	    --data "name=address-service" \
       	    --data "host=address.v1.service" \
       	    --data "path=/index.html"
       		
       		#创建路由routes
       		curl -X POST http://{ip}:8001/services/address-service/routes/ \
       	    --data "hosts[]=address.mydomain.com"
       		
       		#最后进行访问
       		address.mydomain.com:8080 就可以进行负载均衡了   
    

三: kong插件的基本使用

  1. 速率限制: rate-limiting 防止用户频繁操作

    		#为每个请求添加速率限制
    		curl -i -X POST http://localhost:8001/plugins \
    		--data name=rate-limiting \
    		--data config.minute=5 \
    		--data config.policy=local
    		
    		# config.minute 每分钟请求的次数 config.hour:每小时请求的次数 config.policy 限制策略:计数器存储在本地节点上
    		# 当超过请求次数之后 就不能访问了
    		curl -X POST http://localhost:8001/services/example_service/plugins \
    	    --data "name=rate-limiting" \
    	    --data "config.minute=5"   \
    	    --data "config.hour=10000"   \
    	    --data "config.policy=local"
    
  2. 代理缓存 proxy-cache 提高访问速度

    		#cache_ttl 缓存实体的时间 config.strategy:缓存的存储方式
    		curl -i -X POST http://localhost:8001/services/example_service/plugins \
    		--data name=proxy-cache \
    		--data config.content_type="application/json; charset=utf-8" \
    		--data config.cache_ttl=300 \
    		--data config.strategy=memory
    
    		# 验证 记下响应头
    		curl -i -X GET http://localhost:8000/mock/request  
    		# miss和hit :miss表示从上游获得响应 hit表示从缓存中获取
    		
    		# 删除所有代理缓存
    		 curl -i -X DELETE http://localhost:8001/proxy-cache
    
  3. api网关验证 保证接口的安全性

    		#开启key-auth插件 在route上进行密钥插件配置
    		curl -X POST http://localhost:8001/routes/mocking/plugins \
    		--data name=key-auth
    		
    		#访问curl -i http://localhost:8000/mock 出现{"message": "No API key found in request"}  需要配置具有关联密钥的消费者 consumers
    		
    		#创建消费者  消费者并不是针对某一用户 而是代表某一个子系统的消费者
    		curl -i -X POST http://localhost:8001/consumers/ \
    		  --data username=consumer \
    		  --data custom_id=consumer
    		  
    		#生成密钥 可自己指定 也可自动生成  密钥在返回结果  这一步需要记录密钥
    		curl -X POST http://localhost:8001/consumers/consumer/key-auth -d ''
    		
    		# 或者 key=密钥
    		curl -i -X POST http://localhost:8001/consumers/consumer/key-auth \
    		--data key={密钥}
    		
    		#验证密钥是否ok
    		curl -i http://localhost:8000/mock/request \
    		-H 'apikey:{密钥}'
    		
    		#删除插件
    		curl -X DELETE http://localhost:8001/plugins/{<plugin-id>}
    		
    		#禁用插件
    		curl -X PATCH http://localhost:8001/routes/mocking/plugins/{<plugin-id>} \
    		--data enabled=false
    
  4. kongAPI回传 为了保护8001端口

    	简单来说呢 就是为了保护8001的端口  比如在konga连接kong节点的时候 需要进行密钥的验证 否则不能连接 
    
    	就是:把http:// ip:8001 作为一个api  然后其他的按照第三步( api网关验证)来
    

kong里面还有很多插件 感兴趣的可以去官网详细了解https://konghq.com/

konga的简单介绍

  1. 图解 比较简单 上面的了解了 这个就会了
    在这里插入图片描述
    konga官网: https://github.com/pantsel/konga
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值