跳到主要内容

Nacos配置中心模式

Nacos配置中心模式在代表运行Insight组件时,所有数据全部来源于Nacos配置中心,由于Nacos提供了可操作的Web界面,因此使用上也是较方便的。 2

启动配置

来看Nacos模式下的docker-compose.yml文件,

docker-compose.yml

# 通过docker-compose可以快速部署knife4j服务
version: "2.0"
services:
knife4j:
container_name: knife4j-insight-nacos
restart: always
image: "xiaoymin/knife4j:v2.0"
network_mode: "bridge"
# 端口映射
ports:
- "10000:10000"
# 指定配置属性模式为Nacos配置中心
environment:
- knife4j.source=nacos
- knife4j.nacos.server=127.0.0.1:8848
- knife4j.nacos.username=nacos
- knife4j.nacos.password=nacos
# 使用者自行在所指定的nacos上创建 namespace 、dataid、group
- knife4j.nacos.namespace=knife4j
- knife4j.nacos.dataId=knife4j_data_id
- knife4j.nacos.group=DEFAULT_GROUP

属性说明:

属性说明
knife4j.source代表当前容器以什么模式启动,nacos则代表当前组件选择的是基于Nacos配置中心
knife4j.nacos.serverNacos服务地址,规则:ip:port,推荐Nacos版本>=2.0
knife4j.nacos.usernameNacos鉴权用户名
knife4j.nacos.passwordNacos鉴权密码
knife4j.nacos.namespace配置所属nacos上namespace名称
knife4j.nacos.dataId配置dataId
knife4j.nacos.group配置group名称

Nacos模式需要注意的是,使用者需要事先在Nacos配置中心中创建一个配置文件(仅支持properties和yml类型)以作为Insight组件数据源启动运行,内容可以为空

创建的该配置所对应的namespace、dataId、group就是上面配置所对应的值。

而该配置,则也是Insight用来聚合各方OpenAPI数据的配置来源,下面介绍的四种模式的配置内容都存放在该配置中

文档配置

下面则介绍,如果在Nacos的配置中心,配置聚合不同类型的OpenAPI规范文档。

首先声明,不同于Disk本地配置中心模式,以文件夹作为每一个文档的内容进行聚合

Nacos配置中心模式则是将所有文档的配置都配置在同一个配置中

Disk模式

由于在Disk本地配置中心模式中,我们聚合本地OpenAPI文件即可,而Nacos配置中心模式则有轻微不同,因为已经没有了磁盘文件,因此,用户可以将OpenAPI规范文件存放在Nacos配置中心中,这样就能利用Insight进行聚合了

示例配置如下:

Nacos{dataId=knife4j_data_id,group=DEFAULT_GROUP}
# 第一个文档,访问:http://ip:port/disk-t1/doc.html
knife4j.disk[0].contextPath=disk-t1
knife4j.disk[0].routes[0].name=分组1
knife4j.disk[0].routes[0].dataId=openapi1
knife4j.disk[0].routes[0].group=DEFAULT_GROUP
knife4j.disk[0].routes[0].order=1

# 第二个文档,访问:http://ip:port/disk-t2/doc.html
knife4j.disk[1].contextPath=disk-t2
knife4j.disk[1].routes[0].name=分组2-1
knife4j.disk[1].routes[0].dataId=openapi2
knife4j.disk[1].routes[0].group=DEFAULT_GROUP
knife4j.disk[1].routes[0].order=1
knife4j.disk[1].routes[1].name=分组2-2
knife4j.disk[1].routes[1].dataId=openapi3
knife4j.disk[1].routes[1].group=DEFAULT_GROUP
knife4j.disk[1].routes[1].order=2

# more....

在上面的配置中,我们分别配置了三个离线的OpenAPI规范文件,dataId分别是openapi1openapi2openapi3

如下图所示:

通过该模式的支持,以后OpenAPI定义内容则可以破历史的放在Nacos配置中心而快速进行渲染了。

Disk模式详细配置属性如下:

属性类型说明
knife4jobject顶级目录
knife4j.disk[0]arraydisk模式文档,多个文档下标累加即可
knife4j.disk[0].contextPathstring当前文档路径,规则:英文、数字、英文+数字等
knife4j.disk[0].routesarraydisk模式聚合的文档数量,多个则下标增加即可
knife4j.disk[0].routes[0].namestring当前文档分组显示名称
knife4j.disk[0].routes[0].dataIdstring存放在Nacos配置中的OpenAPI内容的dataId名称
knife4j.disk[0].routes[0].groupstring该OpenAPI内容在Nacos配置中心中的group分组名称
knife4j.disk[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址,例如:http://192.168.1.1:9090
knife4j.disk[0].routes[0].orderint当前分组显示顺序值,排序规则为asc

Cloud模式

Cloud模式则配置比较简单,示例配置如下:

Nacos{dataId=knife4j_data_id,group=DEFAULT_GROUP}

# cloud模式第一个文档,http://ip:port/cloud1/doc.html
knife4j.cloud[0].contextPath=cloud1
knife4j.cloud[0].routes[0].name=用户
knife4j.cloud[0].routes[0].uri=http://192.168.0.152:8999
knife4j.cloud[0].routes[0].location=/v2/api-docs?group=2.X版本

# cloud模式第二个文档,http://ip:port/cloud2/doc.html
knife4j.cloud[1].contextPath=cloud2
knife4j.cloud[1].routes[0].name=订单
knife4j.cloud[1].routes[0].uri=http://192.168.0.153:8999
knife4j.cloud[1].routes[0].location=/v2/api-docs?group=2.X版本



配置属性说明:

属性类型说明
knife4jobject顶级目录
knife4j.cloud[0]arraycloud模式文档,多个文档下标累加即可
knife4j.cloud[0].contextPathstring当前文档路径,规则:英文、数字、英文+数字等
knife4j.cloud[0].routesarraycloud模式聚合的文档数量,多个则下标增加即可
knife4j.cloud[0].routes[0].namestring当前文档分组显示名称
knife4j.cloud[0].routes[0].uristringcloud模式下获取OpenAPI信息的服务地址
knife4j.cloud[0].routes[0].locationstring当前文档的实际OpenAPI接口地址
knife4j.cloud[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址(如果不配置,默认走uri的地址),例如:http://192.168.1.1:9090
knife4j.cloud[0].routes[0].orderint当前分组显示顺序值,排序规则为asc

Nacos模式

此Nacos模式则代表的是Nacos服务中心,通过配置聚合各个Nacos服务中心的各个服务的OpenAPI文档,用户需要避免混淆。

1.只要是网络互通,各个项目组、中心的Nacos实例都可以配置。 2.Nacos版本必须大于等于2.0版本

示例配置如下:

Nacos{dataId=knife4j_data_id,group=DEFAULT_GROUP}
# Nacos模式下的第一个文档,访问:http://ip:port/nacos_doc1/doc.html
knife4j.nacos[0].contextPath=nacos_doc1
# 聚合192.168.0.110服务器上的Nacos实例
knife4j.nacos[0].server=192.168.0.110:8848
knife4j.nacos[0].username=nacos
knife4j.nacos[0].password=nacos
knife4j.nacos[0].namespace=dev
knife4j.nacos[0].routes[0].name=用户
knife4j.nacos[0].routes[0].serviceName=userService
knife4j.nacos[0].routes[0].groupName=DEFAULT_GROUP
knife4j.nacos[0].routes[0].location=/v2/api-docs?group=2.X版本

# Nacos模式下的第二个文档,访问:http://ip:port/nacos_doc2/doc.html
knife4j.nacos[1].contextPath=nacos_doc2
# 聚合192.168.0.112服务器上的Nacos实例
knife4j.nacos[1].server=192.168.0.112:8848
knife4j.nacos[1].username=nacos
knife4j.nacos[1].password=nacos
knife4j.nacos[1].namespace=dev
knife4j.nacos[1].routes[0].name=用户
knife4j.nacos[1].routes[0].serviceName=orderService
knife4j.nacos[1].routes[0].groupName=DEFAULT_GROUP
knife4j.nacos[1].routes[0].location=/v2/api-docs?group=default


配置属性说明:

属性类型说明
knife4jobject顶级目录
knife4j.nacos[0]arraynacos模式文档,多个文档下标累加即可
knife4j.nacos[0].contextPathstring当前文档路径,规则:英文、数字、英文+数字等
knife4j.nacos[0].serverstringnacos服务注册中心地址,规则:ip:port,不需要protocol
knife4j.nacos[0].usernamestringnacos服务注册中心用户名
knife4j.nacos[0].passwordstringnacos服务注册中心密码
knife4j.nacos[0].passwordstringnacos服务注册中心密码
knife4j.nacos[0].namespacestringnacos服务注册namespaceId
knife4j.nacos[0].clustersstring集群,多个以逗号分割
knife4j.nacos[0].routesarraynacos模式聚合的文档数量,多个则下标增加即可
knife4j.nacos[0].routes[0].namestring当前文档分组显示名称
knife4j.nacos[0].routes[0].serviceNamestringnacos服务注册中心中的真实服务名称
knife4j.nacos[0].routes[0].groupNamestringnacos服务注册中心中的真实服务所处分组名称,例如:DEFAULT_GROUP
knife4j.nacos[0].routes[0].namespacestringnacos服务注册中心中的真实服务所处namespace
knife4j.nacos[0].routes[0].locationstring当前文档的实际OpenAPI接口地址
knife4j.nacos[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址(如果不配置,默认走从nacos注册中心解析拿到的服务真实地址)
knife4j.nacos[0].routes[0].orderint当前分组显示顺序值,排序规则为asc

Eureka模式

Eureka模式则同Nacos模式差不多,聚合Eureka注册中心实例上的各个子服务OpenAPI文档

示例配置如下:

Nacos{dataId=knife4j_data_id,group=DEFAULT_GROUP}
# Eureka模式下的第一个文档,访问:http://ip:port/eureka1/doc.html
knife4j.eureka[0].contextPath=eureka1
knife4j.eureka[0].serviceUrl=http://localhost:10000/eureka/
knife4j.eureka[0].username=eureka鉴权账号
knife4j.eureka[0].password=eureka鉴权密码
knife4j.eureka[0].routes[0].name=用户
knife4j.eureka[0].routes[0].serviceName=userService
knife4j.eureka[0].routes[0].location=/v2/api-docs?group=2.X版本

# Eureka模式下的第二个文档,访问:http://ip:port/eureka2/doc.html
knife4j.eureka[1].contextPath=eureka2
knife4j.eureka[1].serviceUrl=http://192.168.0.220:10000/eureka/
knife4j.eureka[1].username=eureka鉴权账号
knife4j.eureka[1].password=eureka鉴权密码
knife4j.eureka[1].routes[0].name=用户
knife4j.eureka[1].routes[0].serviceName=userService
knife4j.eureka[1].routes[0].location=/v2/api-docs?group=2.X版本

配置属性说明:

属性类型说明
knife4jobject顶级目录
knife4j.eureka[0]arrayeureka模式文档,多个文档下标累加即可
knife4j.eureka[0].contextPathstring当前文档路径,规则:英文、数字、英文+数字等
knife4j.eureka[0].serviceUrlstringeureka服务注册中心地址
knife4j.eureka[0].usernamestringeureka服务注册中心用户名
knife4j.eureka[0].passwordstringeureka服务注册中心密码
knife4j.eureka[0].routesarrayeureka模式聚合的文档数量,多个则下标增加即可
knife4j.eureka[0].routes[0].namestring当前文档分组显示名称
knife4j.eureka[0].routes[0].serviceNamestringeureka服务注册中心中的真实服务名称
knife4j.eureka[0].routes[0].locationstring当前文档的实际OpenAPI接口地址
knife4j.eureka[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址(如果不配置,默认走从eureka注册中心解析拿到的服务真实地址)
knife4j.eureka[0].routes[0].orderint当前分组显示顺序值,排序规则为asc