Replies: 3 comments 1 reply
-
ilogtail 主仓库内的 plugins 是否也做成一个独立的 module,加载所有插件的入口从 |
Beta Was this translation helpful? Give feedback.
0 replies
-
对于主仓库内的插件是否默认加载的想法
|
Beta Was this translation helpful? Give feedback.
1 reply
-
整理一下
这样的效果是
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
需求
部分插件,由于并不普适、或与内部服务功能绑定、或商业安全要求,不能贡献到开源社区
这部分私有插件代码,需要保持在私有仓库中,因此,需要设计一种产物构建机制,能够合并官方仓库、私有仓库的插件,一起构建出包
核心目标
整体思路
custom repo 中,通过 init 函数,主动调用pipeline的注册插件函数,进行注册

ilogtail主仓,根据配置文件:
详细设计
配置定义
代码生成
1. make指令时,设置 EXTERNAL_PLUGINS_CONFIG_FILE 环境变量
2. 默认会检测根目录的 external_plugins.yml 文件
1. 读取插件配置文件(支持远程地址,通过http get访问)
2. 生成 *.exteral_config.go 文件到plugins/all目录下
3. 执行命令行指令 go env -w xxx,应用配置文件中的go_envs设置(如果有)
4. 执行命令行指令 git config xxx xxx,应用配置文件中的git_configs设置(如果有)
- 其主要操作为:构造参数,执行 scripts/gen_external_plugins.sh,其中会进一步执行 go run tools/builder 启动程序生成代码
避免污染主仓
主要通过将相关文件添加到 .gitignore,来避免污染主仓
对于 go.mod go.mod.sum的变动,有两种方式:
私有仓库鉴权
问题
当执行 make dist等命令通过docker构建时,docker内默认并没有配置好的私有仓库的认证信息(ssh key or pwd)
方案一
通过 git config url.xxx.insteadof 指令,在url上添加 user/pwd
操作方式:
方案二
借助docker BuildKit,使用 host 上的 ssh agent保存的ssh keys
要求:
需要修改 docker build指令,加上 DOCKER_BUILDKIT=1
如果git仓库的 [email protected]=https://github.com的配置是在host的global配置,需要添加到仓库本地配置中
host上的 GOPRIVATE 配置,也需要导入到docker中
优势:
向前兼容性
比较大的代码变动是,将 Aggregator、Flusher等 interface定义,迁移到了 pkg module下,使pkg作为一个可被外部私有仓库单独依赖的module
这个改动会影响到现有插件的代码,主要是插件中import的package name的变动:ilogtail -> pkg/pipeline
针对ilogtail仓库内置的插件,改动是一次性的,问题不大
但是否存在其他外部的依赖方式,需要考虑其兼容性的?
如果要兼容如何做?
Beta Was this translation helpful? Give feedback.
All reactions