ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微服务系列之网关(一) kong及管理界面konga的安装部署

2022-09-06 15:31:57  阅读:223  来源: 互联网

标签:网关 konga -- KONG docker kong


1.网关概述

  微服务架构系统少则十几,多则成百上千个服务组成,除了少部分内部基础服务之外,大部分都是客户端调用,在没有网关之前,客户端需要把所用到的服务,都配置到一个配置文件里,少的时候还行,多的时候,维护起来相当麻烦,容易出错,尤其服务地址发生迁移变化的时候,这时候网关最实用也最常用的功能就体现出来了,就是请求分发,客户端只需要配置一个网关地址即可,需要什么服务的时候,网关+服务名称+path即可。

  网关当然不只是进行流量分发这么简单,本身也提供负载均衡机制,由于请求过来进行转发,就像api服务中的过滤器,面向切面,所以也就可以统一身份认证、监控、缓存、流量日志、限流熔断、聚合查询等能力。

  目前比较流行的网关,有基于Openresty的kong,基于GO的Tyk,基于java的gateway,从开源社区活跃度上看kong较好,查阅资料对比,性能上kong也是领先的,并且基于定制化插件实现扩展功能,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控,gateway这种纯java编写的,更偏向于业务,于微服务架构整合更好,毕竟是srping cloud全新提供的网关,但是我们的技术栈是.net core,当然也可以使用gateway做网关(目前在职公司就是),但是此系列文章围绕.net core体系展开,并且所需是高性能分发、限流等一些常用能力,所以选择kong。

 

2.kong网关简介

  Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

github: https://github.com/Kong/kong

官方文档: https://docs.konghq.com

3.kong安装

  环境:ubuntu2.0系统,基于docker运行

  (1)创建docker网络

docker network create kong-net

  (2)Kong支持PostgreSQL、Cassandra、DB-less(无数据库)3种数据库模式,这里选择PostgreSQL

docker run -d --name kong-database \ 数据库容器名称

--network=kong-net \ 指定刚才创建的docker网络

-p 5432:5432 \ 映射物理IP

-e "POSTGRES_USER=kong" \ 设置数据库用户名

-e "POSTGRES_DB=kong" \ 数据库名称

postgres:9.6

  (3)初始化或迁移数据库

docker run --rm \

--network=kong-net \
-e "KONG_DATABASE=postgres" \ 选择postghres数据库
-e "KONG_PG_HOST=kong-database" \ 指定刚才创建的数据库名称
-e "KONG_PG_PASSWORD=kong" \ 设置密码
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ 
kong:latest kong migrations bootstrap

  (3)启动kong容器

docker run -d --name kong \ 容器名称
--network=kong-net \ 指定的docker网络
-e "KONG_DATABASE=postgres" \ 指定的数据库类型
-e "KONG_PG_HOST=kong-database" \ 指定刚才的数据库容器名称
-e "KONG_PG_PASSWORD=kong" \ 密码
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-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, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest kong镜像

  都完成后使用 docker container ls -a 列出docker列表

  (4) 使用kong自带的restfulApi测试

curl -i -X GET --url http://127.0.0.1:8001/services    //获取所有服务

  

至此kong安装完毕

4.kong管理界面

  kong网关自身的管理界面属于付费的应用,而第三方界面又非常少,konga算是相对比较好的一款了,虽然也有一些问题,但整体的功能还比较全,github仓库为:https://github.com/pantsel/konga,konga支持两种方式部署分别是docker和nodejs原生部署,我们使用docker方式部署。

  (1)同样先运行konga数据库容器

docker run -d --name konga-database \ konga数据库容器名称
--network=kong-net \ 指定之前的网络
-p 5433:5432 \
-v konga-postgresql:/var/lib/postgresql/data \ 数据库卷位置
-e "POSTGRES_USER=konga" \
-e "POSTGRES_DB=konga" \
-e "POSTGRES_PASSWORD=konga" \
postgres:9.6 这里必须是9.6

  (2)初始化konga数据库

docker run --rm --network=kong-net \
pantsel/konga:latest -c prepare -a postgres -u postgres://konga:konga@konga-database:5432/konga

  (3)运行konga容器

docker run -d -p 1337:1337 \ 映射本地IP
--network kong-net \ 指定网路
-e "DB_ADAPTER=postgres" \
-e "DB_URI=postgres://konga:konga@konga-database:5432/konga" \
-e "NODE_ENV=production" \
-e "DB_PASSWORD=konga" \
--name konga \
pantsel/konga

完成后,使用docker container ls -a 列出docker列表

我这里是腾讯云,防火墙规则,增加1337端口,访问公网IP:1337

首次进来,正常注册就行,然后登录进去。

然后新建连接,让konga连接我们部署的kong

这里URL注意一下,kong地址,是不允许被外网访问的,但是可以通过docker容器名称,进行内网连接

  

由此,kong与konga安装结束

 

标签:网关,konga,--,KONG,docker,kong
来源: https://www.cnblogs.com/saltlight-wangchao/p/16661974.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有