bk-cmdb
bk-cmdb copied to clipboard
求官方的debug方案 不然现在针对cmdb的二次开发复杂度增大很多
问题描述
目前在做cmdb的自定义的二次开发,但是没有比较好的debug方案,每次都是更改完全部代码,build完再调试。有没有官方推荐的debug方案?如何使用devle能更轻易的进行debug和单步调试
可以用GOLAND在直接本地开发、在线调试
能给一下goland的配置吗 比如我现在修改了cloud_server的内容 我直接从哪个文件开始开启debug 或者能加一下您的qq吗
可以类似这样配置:
十分感谢哈 还有一个小问题 假设目前只针对一个微服务修改要debug 因为有很多微服务 up主更建议 本地开启全部服务的debug模式 还是一部分放在测试机只单开一个微服务在本地
这个根据你自己的实际情况选一个就好,怎么方便怎么用。 你是基于那个分支开发的?二次开发的那些功能?
v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新
v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新
👍🏻
建议在二次开发时,考虑下代码的设计,避免后续无法和社区版本同步升级。
v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新
👍🏻
建议在二次开发时,考虑下代码的设计,避免后续无法和社区版本同步升级。
好的 感谢up主的细心建议
v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新
👍🏻
建议在二次开发时,考虑下代码的设计,避免后续无法和社区版本同步升级。
还想问一下,因为项目启动的时候有个init.py需要执行,这个执行命令放在哪里呢
能否也看一下admin_server 和 web_server这两个的配置 目前goland中启动失败
同求,我现在后端搞定了Goland里Debug。 但是前端不行,直接使用yarn run serve的时候,页面会报错。只能使用cmdb_webserver。但是这样的话,每改一点东西就要Build,还要重启webserver进程
同求,我现在后端搞定了Goland里Debug。 但是前端不行,直接使用yarn run serve的时候,页面会报错。只能使用cmdb_webserver。但是这样的话,每改一点东西就要Build,还要重启webserver进程
你在goland怎么生成配置文件 init.py怎么执行?可以看看你admin_server是怎么样的吗
我自己写了简单的部署文档,你可以参考
安装Zookeeper
docker run -d -p 2181:2181 --name zookeeper zookeeper
安装Redis
docker run -d -p 6379:6379 --name redis redis --requirepass 'changeMe.0'
安装MongoDB
Dockerfile
FROM mongo
RUN openssl rand -base64 756 > /data/keyfile
RUN chown 999 /data/keyfile
RUN chmod 400 /data/keyfile
docker run -dti -p 27017:27017 --name mongo mongodb --auth -replSet=rs0 --keyFile=/data/keyfile
docker exec -it mongo mongo admin
rs.initiate({ _id : "rs0",members: [{ _id: 0, host: "localhost:27017" }]})
### Mongo命令符。创建admin用户
> db.createUser({ user:'admin',pwd:'changeMe.0',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},{role:'root', db: 'admin'},"readWriteAnyDatabase"]});
> db.auth('admin', 'changeMe.0')
### 创建cmdb库和cc用户
> use cmdb
> db.createUser({user:"cc",pwd:"cc",roles:[{role:"readWrite",db:"cmdb"}]})
> exit
编译cmdb
cd $GOPATH/src
git clone https://github.com/Tencent/bk-cmdb configcenter
cd configcenter/src
go env -w GO111MODULE="auto"
go get github.com/klauspost/compress
cp ~/go/src/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s ~/go/src/configcenter/src/tools/monstache/vendor/go.mongodb.org/mongo-driver/vendor/github.com/klauspost/compress/zstd/internal/xxhash/
make
添加本地解析
localIp=`python ip.py`
sudo echo "$localIp cmdb.domain.com" >> /etc/hosts
初始化配置
cd bin/build/v3.10.x
python init.py \
--discovery 127.0.0.1:2181 \
--database cmdb \
--redis_ip 127.0.0.1 \
--redis_port 6379 \
--redis_pass changeMe.0 \
--mongo_ip 127.0.0.1 \
--mongo_user cc \
--mongo_pass cc \
--blueking_cmdb_url http://cmdb.domain.com:8083 \
--blueking_paas_url http://paas.domain.com \
--listen_port 8083 \
--auth_scheme internal \
--auth_enabled false \
--auth_address https://iam.domain.com/ \
--auth_app_code bk_cmdb \
--auth_app_secret xxxxxxx \
--full_text_search off \
--es_url http://127.0.0.1:9200 \
--log_level 3 \
--register_ip cmdb.domain.com \
--user_info admin:admin
启动后台程序
./start.sh
好详细 我编译打包环境没问题 我是debug环境goland还是不行 你是在windows开启本地debug调试?
我自己写了简单的部署文档,你可以参考
安装Zookeeper
docker run -d -p 2181:2181 --name zookeeper zookeeper
安装Redis
docker run -d -p 6379:6379 --name redis redis --requirepass 'changeMe.0'
安装MongoDB
Dockerfile
FROM mongo RUN openssl rand -base64 756 > /data/keyfile RUN chown 999 /data/keyfile RUN chmod 400 /data/keyfile
docker run -dti -p 27017:27017 --name mongo mongodb --auth -replSet=rs0 --keyFile=/data/keyfile docker exec -it mongo mongo admin rs.initiate({ _id : "rs0",members: [{ _id: 0, host: "localhost:27017" }]}) ### Mongo命令符。创建admin用户 > db.createUser({ user:'admin',pwd:'changeMe.0',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},{role:'root', db: 'admin'},"readWriteAnyDatabase"]}); > db.auth('admin', 'changeMe.0') ### 创建cmdb库和cc用户 > use cmdb > db.createUser({user:"cc",pwd:"cc",roles:[{role:"readWrite",db:"cmdb"}]}) > exit
编译cmdb
cd $GOPATH/src git clone https://github.com/Tencent/bk-cmdb configcenter cd configcenter/src go env -w GO111MODULE="auto" go get github.com/klauspost/compress cp ~/go/src/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s ~/go/src/configcenter/src/tools/monstache/vendor/go.mongodb.org/mongo-driver/vendor/github.com/klauspost/compress/zstd/internal/xxhash/ make
添加本地解析
localIp=`python ip.py` sudo echo "$localIp cmdb.domain.com" >> /etc/hosts
初始化配置
cd bin/build/v3.10.x python init.py \ --discovery 127.0.0.1:2181 \ --database cmdb \ --redis_ip 127.0.0.1 \ --redis_port 6379 \ --redis_pass changeMe.0 \ --mongo_ip 127.0.0.1 \ --mongo_user cc \ --mongo_pass cc \ --blueking_cmdb_url http://cmdb.domain.com:8083 \ --blueking_paas_url http://paas.domain.com \ --listen_port 8083 \ --auth_scheme internal \ --auth_enabled false \ --auth_address https://iam.domain.com/ \ --auth_app_code bk_cmdb \ --auth_app_secret xxxxxxx \ --full_text_search off \ --es_url http://127.0.0.1:9200 \ --log_level 3 \ --register_ip cmdb.domain.com \ --user_info admin:admin
启动后台程序
./start.sh
好详细 我编译打包环境没问题 我是debug环境goland还是不行 你是在windows开启本地debug调试?
我是MacOS 先保证使用start.sh可以跑起来所有的服务。cmdb.domain.com可以正常登录访问。
然后你要调试那个服务,就在bin/build/v3.1.0.x/下的那个目录下,执行stop.sh把它停掉。
然后在goland里,到对应的模块下,执行相应的入口方法。 当然,要配置执行参数,内容去取bin下面对应程序的start.sh就行了。
比如这是我apiserver的配置
我是MacOS 先保证使用start.sh可以跑起来所有的服务。cmdb.domain.com可以正常登录访问。
然后你要调试那个服务,就在bin/build/v3.1.0.x/下的那个目录下,执行stop.sh把它停掉。
然后在goland里,到对应的模块下,执行app/server.go/Run方法就可以了。 当然,要配置执行参数,内容去取bin下面对应程序的start.sh就行了
哈我的意思是通过ide去debug 你理解错我的意思了 也感谢你哈 我说的goland是类似vscode的IDE
我是MacOS 先保证使用start.sh可以跑起来所有的服务。cmdb.domain.com可以正常登录访问。 然后你要调试那个服务,就在bin/build/v3.1.0.x/下的那个目录下,执行stop.sh把它停掉。 然后在goland里,到对应的模块下,执行app/server.go/Run方法就可以了。 当然,要配置执行参数,内容去取bin下面对应程序的start.sh就行了
哈我的意思是通过ide去debug 你理解错我的意思了 也感谢你哈 我说的goland是类似vscode的IDE
我用的就是Goland,admin_server的话,在migrate.go下,使用main方法就可以调试了。 参数从start.sh取,配置文件改对 --addrport=0.0.0.0:60004 --v=3 --config=configures/migrate.yaml --enable-auth=false --register-ip=cmdb.domain.com
windows环境也可以直接debug吗 现在感觉就是init.py生成配置文件这里 卡住了 在windows环境如何生成
windows环境也可以直接debug吗 现在感觉就是init.py生成配置文件这里 卡住了 在windows环境如何生成
第一,Windows上我没有试过。 第二,init.py依赖python2,如果你是Python3的话会报错,当然修也很简单,如果你会Pytnon的话。 第三,你说的卡住,有输出吗?是到那里卡住的。如果你熟悉Python的话,可以用pycharm去调试一下,看是到那一步出不走了
@breezelxp 老哥,有没有什么二次开发的方案,方便可以跟着社区升级的,没什么思路呀。