moonbox接入k8s
moonbox接入k8s
moonbox接入k8s
github地址:https://github.com/JayeShen/Moonbox-k8s/tree/main
前提
moonbox开发时k8s并不流行,所以使用ip+port的方式接入,但是k8s环境中,k8s的pod会经常变化,所以需要使用服务发现的方式接入。
这里我开发一个moonbox-agent给被测应用使用,通过服务发现的方式接入moonbox。
moonbox-agent需要以pre方式agent到被测应用,在pod中通过netty控制moonbox、sandbox的启停。
架构图
步骤
1、数据库新增服务管理表
create table sys_app
(
id bigint not null AUTO INCREMENT COMMENT comment '自增主键'
primary key,
system_code varchar(128) null comment '系统编码',
system_name varchar(128) null comment '系统名称',
app_name varchar(128) not null comment '项目名',
channel_id varchar(128) null comment 'netty管道id',
last_heartbeat_time timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '最后上报时间',
ip varchar(128) null comment '机器ip',
remark varchar(255) null comment '补充字段',
creator varchar(128) null comment '创建人',
app_env varchar(128) null comment '环境',
create_time timestamp default '0000-00-00 00:00:00' not null comment '创建时间',
update_time timestamp default '0000-00-00 00:00:00' comment '更新时间',
online_state int(2) null comment '数据删除状态,1在线,0为离线',
constraint idx_channel_id
unique (channel_id)
);
2、moonbox-server端开启一个netty服务
修改moonbox-web中application.properties
moonbox.netty.server.port=7777
3、打包moobox-proxy
在moonbox-agent/moonbox-proxy下修改moonbox-proxy.properties
#moonbox服务端ip
moonbox.netty.server.ip=10.56.34.68
#moonbox服务端netty端口
moonbox.netty.server.port=7777
在moonbox-agent/moonbox-proxy下执行mvn clean package -Dmaven.test.skip=true
将target下生成的jar包上传到服务器
4、修改被测应用启动脚本,添加参数
例如:
java -XX:+StartAttachListener -javaagent:/moonbox/moonbox-proxy-1.0.0-SNAPSHOT.jar -jar -DsystemCode=“base” -DsystemName=“基础服务” -DappName=“gh-util-base-proxy” -Denv=sit demo.jar
参数说明:
-javaagent参数表示启动字节码增强
-XX:+StartAttachListener参数表示开启attach机制,在jvm启动时进行字节码增强
-DsystemCode参数表示系统编码,在moonbox中用于区分不同的系统
-DsystemName参数表示系统名称,在moonbox中用于区分不同的系统
-DappName参数表示应用名称,在moonbox中用于区分不同的应用
-Denv参数表示应用环境,在moonbox中用于区分不同的应用环境
5、启动moonbox-server
6、启动被测应用
我不想在镜像中安装太多软件,例如curl、dos2unix,或者有的项目组在公司没有操作基础镜像的权限,所以在moonbox-agent中只运行这一段命令:sh ~/.sandbox-module/bin/start-remote-agent.sh " + appName +" "+ taskConfig
将moonbox启动所需文件和文件夹直接打包在docker镜像的中(必须是根目录),或者通过k8s的configmap挂载到容器中
具体包括:
文件夹:.sandbox-module/、、sandbox/,文件.sandbox.token
有下面日志就表示moonbox-agent启动成功,其日志路径和日志级别可以在log4j2.xml中配置
更多推荐
所有评论(0)