当前位置: 首页 > news >正文

【API网关】Kong安装和基本操作

文章目录

  • 前言
  • 一、API网关选型和Kong的安装
    • 1. 什么是API网关
    • 2. API网关技术选型
    • 3. 安装postgresql和migrations
    • 4. 安装kong
    • 5. 安装konga
  • 二、基本的路由转发配置
    • 1. kong的8001、8000和1337端口号的关系
    • 2. 基本的路由转发配置
    • 3. kong集成consul实现服务发现和负载均衡
    • 4. kong配置jwt实现登录校验
    • 5. kong配置反爬和ip黑名单


前言

Kong是一个开源的API网关和微服务管理平台,它提供了一系列的工具和技术来管理和监控分布式应用程序中的API。Kong被设计为一个高度可扩展的平台,它提供了一系列的核心功能,例如API路由、认证、流量控制、日志记录、监控、插件等等

Kong的核心是一个Nginx服务器,它被设计为一个可扩展的平台,通过安装和配置不同的插件,可以将其扩展为适合各种需求的API网关和微服务管理平台。Kong提供了一系列的官方和第三方插件,包括OAuth2认证、IP白名单、HMAC签名、CORS、限流、缓存、Websocket支持等等。

除了提供API网关和微服务管理功能之外,Kong还支持多种部署模式,包括单节点、多节点和分布式部署。Kong还提供了丰富的监控和日志记录功能,包括实时流量监控、指标收集、错误日志等等。

Kong可以轻松地集成到现有的应用程序中,无论是使用Docker容器还是裸机部署,都能够快速部署和配置。Kong还提供了一个简单易用的RESTful API,可以用来管理API网关和微服务。

总之,Kong是一个强大的API网关和微服务管理平台,提供了许多核心功能和丰富的插件,可以帮助企业构建和管理高效、可扩展的分布式应用程序。


一、API网关选型和Kong的安装

1. 什么是API网关

API网关(API Gateway)是一种用于构建和管理现代应用程序的中间层服务。它充当了客户端和后端服务之间的转换器,将来自客户端的请求转发给相应的后端服务,并将后端服务的响应返回给客户端。

API网关为应用程序提供了一种标准化和统一的方式来管理多个后端服务。通过将请求和响应处理逻辑集中在一个中心位置,API网关可以简化应用程序的开发和维护,并提供一系列的功能,如负载均衡、缓存、认证和授权、请求转换、API分组、监控和日志记录等。

API网关可以作为一个独立的服务,也可以作为微服务架构中的一个微服务。它通常使用RESTful API或GraphQL API来与客户端和后端服务进行通信,并可以与容器编排工具(如Kubernetes)和持续集成/持续部署(CI/CD)工具集成。

作用:

  • 负载均衡:通过将请求分发到多个后端服务实例,实现负载均衡以提高应用程序的可伸缩性和性能。
  • 缓存:可以对响应进行缓存,以减少后端服务的负载和提高响应速度。
  • 认证和授权:API网关可以处理用户身份验证和授权,并在访问后端服务之前验证用户的凭据,以确保只有经过身份验证的用户才能访问API。
  • 请求转换:API网关可以对请求进行转换和格式化,以适应不同的后端服务接口。
  • API分组:API网关可以将多个API分组,并为每个API设置不同的路由和策略。
  • 监控和日志记录:API网关可以收集API使用情况的数据,并记录API请求和响应的详细信息,以便进行故障排除和性能优化。
  • 安全性:API网关可以提供一些安全性功能,如防火墙、DDoS攻击防护、IP过滤、加密和解密、数据保护等。
  • API文档:API网关可以生成API文档,并为开发人员提供API使用说明和代码示例。
  • 协议转换:API网关可以将一种协议转换为另一种协议,以适应不同的客户端需求。

总之,API网关在应用程序开发和运维中具有非常重要的作用,可以大大简化应用程序的开发、部署、管理和维护。

2. API网关技术选型

在这里插入图片描述
Kong是一个开源的API网关,它是一个针对API的一个管理工具。你可以在那些上游服务之前,额外地实现一些功能。

Kong本身是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的

API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的

RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

3. 安装postgresql和migrations

docker run -d --name kong-database \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
-e "POSTGRES_DB=kong" postgres:12docker run --rm \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=(这里填自己的IP)"
-e "KONG_PG_PASSWORD=kong" \
-e "POSTGRES_USER=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong kong migrations bootstrap

4. 安装kong

下载和安装:

官网下载rpm:https://download.konghq.com/gateway-2.x-centos-7/Packages/k/

sudo yun install 你下载的rpm

编辑kong配置
关闭防火墙、重启docker – 很重要

systemctl stop firewalld.service
systemctl restart docker

直接重启也行
修改配置 后续使用配置启动kong

cp /etc/kong/kong.conf.default /etc/kong/kong.conf
vim /etc/kong/kong.conf
#修改如下内容
database = postgres 
pg_host = 192.168.1.102 # 这⾥得配置对外ip地址 不能是127.0.0.1
pg_port = 5432 # Port of the Postgres server.
pg_timeout = 5000 # Defines the timeout (in ms), for connecting,# reading and writing.
pg_user = kong # Postgres user.
pg_password = kong # Postgres user's password.
pg_database = kong # The database name to connect to.
dns_resolver = 自己的IP:8600 #这个配置很重要,配置的是consul的dns端⼝,默认是8600 可以⾃
admin_listen = 0.0.0.0:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reu
proxy_listen = 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuse
kong start -c /etc/kong/kong.conf

然后在浏览器中访问: http://你的ip地址:8001/ 来确定kong是否启动成功

5. 安装konga

Konga是Kong API网关的一个可视化管理界面,它允许用户管理Kong API网关中的各种资源,例如API、插件、服务、路由等。

Konga提供了一个用户友好的界面,使得管理Kong变得更加容易。通过Konga,用户可以轻松地创建、编辑和删除API、插件、服务、路由等资源,也可以查看API的使用情况、服务的性能等信息。

除了基本的管理功能,Konga还提供了许多高级功能,例如自定义插件、权限管理、多租户支持等。Konga还提供了RESTful API,可以方便地与其他应用程序集成。

总之,Konga是一个非常强大的工具,可以帮助用户轻松管理Kong API网关,并提供了许多高级功能和扩展性。

docker run -d -p 1337:1337 --name konga pantsel/konga

在这里插入图片描述


二、基本的路由转发配置

1. kong的8001、8000和1337端口号的关系

  • 8001:kong的管理的端口
  • 8000:用户访问
  • 1337:konga 地址

Services:
Service顾名思义,就是我们自己定义的上游服务,通过Kong匹配到相应的请求要转发的地方,Service可以与下面的Route进行关联,一个Service可以有很多Route,匹配到的Route就会转发到Service中,当然中间也会通过Plugin的处理,增加或者减少一些相应的Header或者其他信息.

Routes:
Route路由相当于nginx配置中的location
Route实体定义匹配客户端请求的规则.每个路由都与一个服务相关联,而服务可能有多个与之相关联的路由.每一一个匹配给定路线的请求都将被提交给它的相关服务.
路由和服务的组合(以及它们之间的关注点分离)提供了一-种强大的路由机制,可以在Kong中定义细粒度的入口点,从而引导您的访问到不同upstream服务.

在这里插入图片描述

2. 基本的路由转发配置

当使用Kong作为API网关时,可以通过Kong的管理界面或API来进行路由转发的配置。

以下是基本的路由转发配置详解:

创建服务:
在Kong中,服务(Service)表示你的API或应用程序的一个实例。要创建服务,可以通过以下步骤:

  • 登录Kong的管理界面,选择"Services"选项卡,然后点击"Add Service"按钮。
  • 在弹出的表单中填写服务的基本信息,例如名称和目标URL。
  • 点击"Save"按钮保存服务。

创建路由:
路由(Route)将请求路由到服务的特定实例。要创建路由,可以通过以下步骤:

  • 在服务的管理页面,选择"Routes"选项卡,然后点击"Add Route"按钮。
  • 在弹出的表单中填写路由的基本信息,例如路径和协议。
  • 点击"Save"按钮保存路由。

测试路由:
要测试路由,可以使用HTTP客户端工具,例如curl或Postman。
根据路由的配置,构建HTTP请求,包括请求的路径和Host头部。例如,如果路由的路径为"/example",服务的目标URL为"http://example.com",则请求的URL应该为"http://localhost:8000/example",Host头部应该为"example.com"。
发送HTTP请求,并查看响应是否正确。如果响应正确,则路由配置成功。

注意: 在使用Kong进行路由转发时,还需要考虑负载均衡、健康检查、认证授权等因素。可以在Kong的管理界面或API中配置这些功能。
在这里插入图片描述
在这里插入图片描述

3. kong集成consul实现服务发现和负载均衡

只需要设置service的Name为:consul里的名称.service.consul

4. kong配置jwt实现登录校验

在Kong中,可以使用JWT插件来实现基于JSON Web Token (JWT)的登录校验。下面是使用Kong配置JWT插件的详细步骤:

安装JWT插件:
Kong提供了JWT插件,因此不需要单独安装。可以通过以下步骤启用插件:

  • 登录Kong的管理界面,选择"Plugins"选项卡,然后点击"Add Plugin"按钮。
  • 在弹出的表单中选择"jwt"插件,并填写插件的配置信息。
  • 点击"Save"按钮保存插件。

配置路由:

要实现登录校验,需要配置一个路由,将未经授权的请求重定向到认证服务。可以通过以下步骤创建路由:

  • 登录Kong的管理界面,选择"Routes"选项卡,然后点击"Add Route"按钮。
  • 在弹出的表单中填写路由的基本信息,例如路径和协议。
  • 在"Plugins"选项卡中启用"jwt"插件,并配置插件的参数,例如密钥和有效期。
  • 点击"Save"按钮保存路由。

配置认证服务:
可以使用任何支持JWT的身份验证服务来实现登录校验。常见的认证服务包括Keycloak和Auth0。以下是使用Keycloak配置认证服务的示例步骤:

  • 在Keycloak中创建一个新的Realm,并配置客户端和用户。
  • 在Kong的管理界面,选择"Consumers"选项卡,然后点击"Add Consumer"按钮。
  • 在弹出的表单中填写用户的基本信息,例如用户名和密码。
  • 在"Plugins"选项卡中启用"jwt"插件,并配置插件的参数,例如密钥和有效期。
  • 点击"Save"按钮保存用户。

在这里插入图片描述
在这里插入图片描述

解析jwt认证:https://jwt.io/

测试登录校验:
要测试登录校验,可以使用HTTP客户端工具,例如curl或Postman。
构建HTTP请求,并将JWT令牌作为Authorization头部的Bearer令牌发送到Kong的API。
如果JWT令牌有效,则请求将被路由到相应的服务。如果JWT令牌无效,则请求将被拒绝,并返回HTTP 401错误。

注意: 在使用Kong配置JWT插件时,还需要考虑令牌的生成和刷新等因素。可以在认证服务中配置这些功能。
需要结合你的加密逻辑在后端做一定的修改认证规则

5. kong配置反爬和ip黑名单

在Kong中,可以使用Access插件和IPRestriction插件来实现反爬和IP黑名单功能。下面是使用Kong配置这两个插件的详细步骤:

安装Access和IPRestriction插件:
Kong提供了Access和IPRestriction插件,因此不需要单独安装。可以通过以下步骤启用插件:

  • 登录Kong的管理界面,选择"Plugins"选项卡,然后点击"Add Plugin"按钮。
  • 在弹出的表单中选择"access"插件或"ip-restriction"插件,并填写插件的配置信息。
  • 点击"Save"按钮保存插件。

配置路由:
要实现反爬和IP黑名单功能,需要配置一个路由,并将相应的插件应用于该路由。可以通过以下步骤创建路由:

  • 登录Kong的管理界面,选择"Routes"选项卡,然后点击"Add Route"按钮。
  • 在弹出的表单中填写路由的基本信息,例如路径和协议。
  • 在"Plugins"选项卡中启用"access"插件或"ip-restriction"插件,并配置插件的参数,例如最大请求数、限速和IP地址范围。
  • 点击"Save"按钮保存路由。

测试反爬和IP黑名单:
要测试反爬和IP黑名单功能,可以使用HTTP客户端工具,例如curl或Postman。
构建HTTP请求,并发送到Kong的API。
如果请求的频率超过了最大请求数或被限速,则请求将被拒绝,并返回HTTP 429错误。
如果请求的IP地址在黑名单中,则请求将被拒绝,并返回HTTP 403错误。

注意: 在使用Kong配置Access和IPRestriction插件时,还需要考虑白名单和自定义错误消息等因素。可以在插件的配置中进行相应的设置。
在这里插入图片描述

相关文章:

【API网关】Kong安装和基本操作

文章目录前言一、API网关选型和Kong的安装1. 什么是API网关2. API网关技术选型3. 安装postgresql和migrations4. 安装kong5. 安装konga二、基本的路由转发配置1. kong的8001、8000和1337端口号的关系2. 基本的路由转发配置3. kong集成consul实现服务发现和负载均衡4. kong配置j…...

git --- stash用法

1 git stash命令介绍 // 保存当前分支的修改,回到上个版本的状态 git stash // 保存当前分支的修改,回到上个版本的状态,msg是保存当前修改的说明 git stash save "msg" // 用来展示所有保存的列表 git stash list // 用来展示某一保存记录所修改的操作 gi…...

【星海出品】VScode安装配置

安装VScode最好在官方网站上下载。 例如 https://code.visualstudio.com/Download 不知道自己的windows版本的话,可以命令行WINR 运行 输入: systeminfo | find "OS" //获取OS的版本信息。 systeminfo | find "系统类型" //获取系统…...

docker 基础命令备忘录

1. 官方安装docker curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.shcurl -L "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod x…...

华为OD机试 - 创建二叉树(Java JS Python)

题目描述 请按下列描述构建一颗二叉树,并返回该树的根节点: 1、先创建值为-1的根结点,根节点在第0层; 2、然后根据operations依次添加节点: operations[i] = [height, index] 表示对第 height 层的第index 个节点node, 添加值为 i 的子节点: 若node 无「左子节点」,则…...

服务案例|基于IT事件管理,提升业务连续性

数字化经济时代,IT架构复杂性越来越高,业务连续性成为很多行业或企业最核心的任务。业务连续性管理是一个不断提升的过程,围绕事件“发现-响应-定位处理-降低发生”的事件处理思路,结合平台化运维,助力业务快速提升。 …...

你说下HashMap的工作原理?

我在网上看了很多文章 ,各种长篇大论 ,原理细节、实在看不下去了,所以着重讲一下,HashMap 面试会问到的点 说人话, 你们公司的集合 不会自研吧, 假如 你们叫 锤子科技 ,那老板也不会要求你去写一…...

k8s 配置ingress 并做一个demo

需求:k8s 配置好之后除了 nodeport 以外都是对集群内部的行为使用nodeport 并不是很友好,要自己处理很多的端口管理使用ingress 可以更好的整合配置服务进程:下载ingress-nginx 的yaml 文件https://github.com/kubernetes/ingress-nginx/blob…...

【手把手一起学习】(七) Altium Designer 20常用PCB设计规则

1 常用PCB设计规则 PCB规则设计是PCB设计中至关重要的环节,它约束了电气要求、布线方式、器件摆放位置等,为后续的手动布局、布线提供依据。完善的PCB规则设计,可以减少设计中的错误,提高PCB设计效率。 1.1 PCB设计规则管理器 …...

(01)Unity 中使用 HDRP

概述Unity在2019.2版本中推出HDRP(高清渲染管线),目的是为了提高图形质量,实现从照片写实到风格化的图像。先看一下官方对HDRP的概述:高清渲染管线 (HDRP) 是由 Unity 构建的高保真脚本化渲染管…...

使用cmake在win10编译yolov5+tensorRT+cuda+cudnn+protobuf代码进行混合编译

这里进行之前需要把protobuf在win10下编译,可以参考这篇文章从Linux下载下来的工程代码,这里建议直接使用vs系列打开不要用vscode打开,vscode对win下的cmake不友好,主要体现在报错机制无法直接定位,题主的环境是vs2022…...

《C++ Primer Plus》第17章:输入、输出和文件(7)

编程练习 编写一个程序计算输入流中第一个$之前的字符数目&#xff0c;并将$留在输入流中。 #include<iostream>int main() {int ct 0;while(std::cin.peek()!$){ct;std::cin.get();}std::cout << "num: " << ct << std::endl;return 0; }答…...

PGLBox 超大规模 GPU 端对端图学习训练框架正式发布

作者 | PGLBox项目组 导读 PGLBox是百度研发的基于GPU的大规模图模型训练框架&#xff0c;支持数百亿节点和边的图模型全GPU训练&#xff0c;已在百度广泛部署。相比业界主流的分布式 CPU 解决方案&#xff0c;PGLBox 具有超高性能、超大规模、算法丰富、灵活易用、落地广泛等优…...

sql-labs-Less1

靶场搭建好了&#xff0c;访问题目路径 http://127.0.0.1/sqli-labs-master/Less-1/ 我最开始在做sql-labs靶场的时候很迷茫&#xff0c;不知道最后到底要得到些什么&#xff0c;而现在我很清楚&#xff0c;sql注入可以获取数据库中的信息&#xff0c;而获取信息就是我们的目标…...

又一个国内类ChatGPT模型?【秘塔科技上线自研LLM大模型「对话写作猫」】

又一个国内类ChatGPT模型&#xff1f;【秘塔科技上线自研LLM大模型「对话写作猫」】 说个题外话&#xff0c;今天一大早就收到了Biying的邮件。前段时间不是申请了New Biying的内测吗&#xff1f;下午可以尝试一下玩一会儿。如果体验感还不错或者还有很多bug&#xff0c;那我到…...

卷麻了,00后测试用例写的比我还好,简直无地自容......

经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 如何编写测试用例&#xff1f; 作为一个测试新人&#xff0c;刚开始接触测试&#xff0c;对于怎么写测试用例很是头疼&#xff0c;无法…...

动态网页的核心——JSP

文章目录1&#xff0c;JSP 概述2&#xff0c;JSP 小案例2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3&#xff0c;JSP 原理4&#xff0c;JSP 总结4.1 JSP的 缺点4.2技术的发展历程4.3JSP的必要性最后说一句1&#xff0c;JSP 概述 JSP&#xff08;全称…...

RK3588平台开发系列讲解(系统篇)init.d介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、Linux启动简介二、sysvinit配置三、inid.d介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇介绍init.d相关知识。 一、Linux启动简介 Linux用户空间启动时,第一个会启动init进程,用来引导启动其…...

taobao.user.buyer.get( 查询买家信息API )

&#xffe5;开放平台基础API必须用户授权 查询买家信息API&#xff0c;只能买家类应用调用。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new…...

python学生信息管理系统

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python学生信息 免费获取完整源码源文件配置教程说明等 在IDLE中运行《学生信息管理系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时&#xff0c;有两种方…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...