The controller command sdk for nacos
Go to file
杨翊 SionYang d2b632c3f1
Merge pull request #6 from nacos-group/develop
Develop
2024-05-15 15:32:30 +08:00
bootstrap Support Ctrl+C. 2023-01-12 15:30:05 +08:00
command 修复配置发布时失败也提示done的问题。 2024-05-15 14:24:53 +08:00
core 修复配置发布时失败也提示done的问题。 2024-05-15 14:24:53 +08:00
distrobution 移除测试配置。 2024-05-15 14:33:20 +08:00
example NacosCtl is comming! 2021-07-07 19:42:43 +08:00
interaction Support Ctrl+C. 2023-01-12 15:30:05 +08:00
.gitignore fix the .gitignore 2021-07-06 17:41:46 +08:00
LICENSE Initial commit 2021-07-05 17:22:14 +08:00
README.md NacosCtl is comming 2021-07-05 19:03:17 +08:00
pom.xml Upgrade to 1.0.1. 2024-05-15 14:25:35 +08:00

README.md

nacos-ctl

简介

功能列表

以交互模式提供服务,可通过配置文件或启动参数设置初始信息 基本功能如下:

  • 命名空间:
    • 增删查改
  • 配置命令:
    • 增删查列出前n条
  • 服务命令:
    • 增删查改列出前n条
  • 实例命令:
    • 增删查改
  • 系统开关:
    • 查,改

实现方式

数据获取的实现基于:

  • Open-Api v1
  • Prometheus Http
  • Nacos Java SDK 1.4.2

功能效果

启动与参数设置

nacosctl以jar包形式部署为方便启动写了一个简易启动脚本使用方式如下 image.png 启动会等待10秒左右因为需要创建nacos-client中的service比较耗时启动后可以看到提示语参数配置情况以及连接效果看到输入栏提示后即可进行操作按tab自动展示帮助使用quit退出 初次连接会尝试使用配置中的信息进行鉴权如果失败则会有提示不过不影响后续正常启动因为对于未启动权健的nacos-server就算认证失败了也可以访问 image.png nacosctl中自带了一套基本的配置启动后会自动以nacos初始账号密码连接本机8848端口 启动之前也可以修改配置,例如指定启动参数: image.png 更多的参数可以在启动后通过help指令查看 image.png 也可以通过配置文件持久化修改配置只需要在和nacosctl同目录下创建一个名为conf.properties的文件即可比如example文件夹目录下的摆放方式 image.png 文件写法如下: image.png 在同时有配置文件且启动指定了参数到时候nacosctl会优先使用启动指定的参数

基本指令与帮助

启动后可以通过help指令查看全局帮助 image.png 在输入的过程中可以通过按tab键获得提示与补全能力 image.png 若想查看各个子命令的使用方式则可以采用subcommand help xx的方式 image.png 查看子命令的具体某个小命令: image.png 如果输入指令的过程缺少参数或者拼写错误,也会有红色高亮提示: image.png 缺少参数的提示: image.png 此外为了防止误删除操作默认情况下nacosctl会对删除操作进行确认询问 image.png 如果想要关闭掉误操作询问则可以在配置文件中将confirmEnabled设置为false image.png 再次重启后,没有删除保护了: image.png

命名空间切换

由于Nacos存在命名空间隔离不同Namespace下的Config和Service是不相通的所以nacosctl在操作过程中也提供了一个全局上下文的namespace代表当前操作的所有资源所属的命名空间可以在启动后的输入提示栏左侧括号中看到 image.png 使用者可以通过use命令手动切换当前的上下文命名空间输入use后按下tab会自动展示可选的命名空间以namespace名称namespaceId的形式展示 image.png 输入前缀后通过tab键自动补全回车后即可切换到新的命名空间此过程也需要几秒钟的等待

命名空间操作

命名空间操作提供了基本的增删查改四个命令: image.png 具体语法规范可以在nacosctl中通过namespace help xx来查看这里特意说明一下update子命令 image.png Namespace update只能修改命名空间的描述而不能修改name和id若想修改id则需要重新创建删除下图是一次命名空间的创建-查看-删除操作的指令流程: image.png

Config操作

Config操作是指对Nacos的配置模块的资源进行操作而不是配置nacosctl自身的信息 该模块提供了增删查改四个功能 image.png 其中config add是添加一条新的配置指定好group与dataId后输入配置内容即可创建语法规则如下 image.png 其中,为了方便较长配置文件的创建操作,提供了文件读取功能,即通过-f指定文件上传的config的内容即为文件内容若不指定-f则config的内容即为输入内容例子如下 image.png 同理对于config get操作也提供了-f能力可以把获取的输出内容直接写到指定文件中 image.png 而若只想浏览当前nacos-server上的配置文件则可以使用config list命令默认情况下会列出nacos-console第一页的config可以通过help查看并指定参数修改数目使用效果如下 image.png

Service操作

Service操作是指通过open-api对nacos-server的服务进行编辑提供了增删查改的基本能力 image.png 增删查改具体使用方式与config类似参数选项细节可以通过service help xx指令查看 下图是一个 创建-查询-删除-查询 的使用案例: image.png 如果想知道nacos-server有哪些内容也可以通过service list命令查看用法与config list类似 image.png 这里注意nacosctl及open-api的创建只会创建空服务而没有实例过一段时间服务会被销毁掉

Instance操作

Instance操作是基于nacos-client实现提供了对实例的操作以及创建后会维持心跳也是增删查改功能 image.png 下面是一个简单的使用例子为同一个服务创建3个实例查询修改后再查询删除一个再查询 image.png image.png

Switch操作

Switch操作是指对开源版Nacos的系统开关进行查询与修改基于Open-Api完成。Nacosctl能解决某些开关的展示名称和真实的key名不一致的问题并提供了remove与add对list与map类开关进行参数修改switch操作支持的命令如下 image.png 通过switch get可以查询到某个开关的情况可以按tab自动补全如果想查看全部开关则输入switch get all: image.png 对于修改开关以nacos-2.0.1开源版本总结,各开关需要注意的点如下:

open-api请求时 key name 需要修改:
(不过对于nacosctl使用者则无需关心直接输原key就可以了有自动转换)
    healthCheckEnabled:true    --> check true/false
    checkTimes:3     -->  healthCheckTimes
    distroEnabled:true  ---> distro
    defaultPushCacheMillis:20000   --->pushCacheMillis


    pushJavaVersion:"0.2.0"   -->pushVersion xx:xx.xx.xx
    pushPythonVersion:"0.4.3"
    pushCVersion:"1.0.12"
    pushCSharpVersion:"0.9.0"
    pushGoVersion:"0.1.0"


不能通过open-api修改
    enableAuthentication:false     不能设置
    name:"00-00---000-NACOS_SWITCH_DOMAIN-000---00-00"   不能改
    checksum:null   不能设置
    adWeightMap:{}  不能改
    mysqlHealthParams:{"max":3000,"min":2000,"factor":0.65}  不能改
    incrementalList:[]   不能改
    healthCheckWhiteList:[]  不能改


可以直接用原key修改
    masters:null        Psvalue用分割输入多个比如a,b,c,d即可
    serviceStatusSynchronizationPeriodMillis:5000
    distroThreshold:0.7
    disableAddIP:false
    overriddenServerStatus:null
    doubleWriteEnabled:true
    lightBeatEnabled:true
    pushEnabled:true
    clientBeatInterval:1
    enableStandalone:true
    defaultCacheMillis:3000
    sendBeatOnly:false
    distroServerExpiredMillis:10000
    autoChangeHealthCheckEnabled:true
    serverStatusSynchronizationPeriodMillis:2000
    defaultInstanceEphemeral:true
   
        
特殊类型list/map
    httpHealthParams:{"max":5000,"min":500,"factor":0.85}
    tcpHealthParams:{"max":5000,"min":1000,"factor":0.75}
    limitedUrlMap:{}

所以对于普通的key可以通过switch set命令修改例如 image.png 对于特殊类型map可以通过add与remove修改例如 image.png 不过要注意的是nacosctl这里对map的添加删除只是对open-api的switch操作进行了一个封装所以目前会存在无法删除最后一个key的情况后续需要配合nacos-server解决。


由于Open-Api中还对Switch提供了debug操作也就是只在单节点上生效以便于调试但是这里目前存在一个问题若首次使用debug修改部分key后当后续再使用非debug推送某个key则该节点的所有key都会被同步到整个集群包括debug的信息。更多细节原因请@三辰 所以为了尽可能减少用户触发这种情况nacosctl对这个问题做了如下设计

  • 当使用debug推送后则后续不能进行非debug推送提示用户在debug后需要手动改回原值
  • 若想继续使用非debug推送则请重启nacosctl

例如下图先进行带debug的推送后如果不重启就不支持进行正常的非debug推送 image.png