标准插件远程加载

    针对上述的用户痛点,标准运维新版本提供了”标准插件远程加载”功能,让用户可以不需要解压官方包以及重新打包,只需要在自定义插件开发测试完成后,在标准运维配置自定义插件包源信息,然后重新部署应用,就能自动加载插件。

    标准运维基于《PEP 302 — New Import Hooks》的建议规范,通过扩展 模块,实现了从 Git、S3、文件系统等文件托管源加载 python 源码的能力,并通过页面配置的方式暴露接口给用户填写远程插件包源配置。

    更进一步,为了避免每次发布部署都需要重新从远程拉取插件代码,可能会因为网络策略、网络抖动等原因导致加载插件失败,标准运维基于 和 GitPython 模块,实现了远程 Git、S3、文件系统等包源同步到 S3、文件系统等本地缓存源的能力,这样用户只需要在需要更新外网托管的远程插件时才需要打通网络策略,普通的发布部署都从本地缓存加载上一次同步的包源代码即可。

    请参考,注意务必按照章节《标准插件远程加载》的要求,完成插件远程加载改造。

    使用有管理员权限的账号登录标准运维,进入”管理员入口”的”后台管理页面”,新增主包源配置。如果是 Git 类型,需要填写仓库链接、文件托管仓库链接、分支名,注意文件托管链接的可以通过在Git网页端点击任意文件的”Raw”按钮,然后复制链接中分支名之前的部分获取。

    如果是 S3 类型,需要填写对象存储服务地址、存储桶 Bucket 名称、Access Key、Secret Key。

    如果是文件系统类型,需要填写标准运维 SaaS 后台服务器可访问的文件路径,建议通过 NFS 的方式挂载,避免重新部署 SaaS 导致文件丢失或者多服务实例共享文件同步复杂的问题。

    不论主包源选择以上哪种类型,都需要配置包源希望加载的插件模块信息,同一个主包源可以包含多个插件集合,每个插件集合需要配置子模块、版本号、导入模块,其中子模块是插件包根目录;版本号用来表示当前插件集合的版本,在每次插件变更时更新;导入模块是插件集合中的文件 python 导入路径,多个用【,】分隔。

    • GitHub 仓库插件目录结构https://github.com/bk-sops/plugins_example

    • 标准运维远程包源配置标准插件远程加载 - 图2

    • 重新部署后成功加载插件效果在”新建流程”中编辑默认的标准插件节点,可以看到远程插件包源中的”自定义原子(CUS)-测试1”,并且选择该插件后页面渲染正常。

    • 添加远程包源后重新部署了标准运维,但是在流程编辑中未找到新开发的插件,可能是什么原因?