[Plugins] 部分控制内核如何发现和运行每个插件。
插件通过其包元数据中声明的名称进行标识。
加载插件时,将使用该名称对应的配置。
默认配置
[Plugins.default] 为已发现的插件提供基本配置。
一个[Plugins.<name>] 表会在此基本配置之上进行合并,
从而生成一个插件的有效配置。
合并规则如下:
- 非空的
Restart值会替换默认值; - 非空的
RunAsUser值会替换默认值 - 非空的
Allow列表会替换默认的组列表;以及 Params按键合并,插件级别的值优先。
Allow = [] 不会移除非空的默认 Allow 列表。
只有名称匹配的插件才能获得其命名配置。如果名称出现在 [Plugins] 中,但在 PluginDir 中找不到匹配的包,
内核会在扫描过程中报告该已配置的插件缺失。
Restart
尽管名称如此,Restart 目前控制的是插件是否在内核启动时自动启动。
这并非一般的崩溃重启循环。
以下值启用自动启动,忽略大小写和周围的空格:
no、false 和 off,禁用自动启动。
即使插件已被禁用,插件管理器仍然可以发现它,
并且可以通过显式的管理操作启动它。
更改配置中的 Restart 值本身并不会启动或停止
正在运行的插件。它用于内核在启动序列中决定启动哪些已发现的插件。
RunAsUser
RunAsUser 选择用于运行 gRPC 插件进程的操作系统用户。
空值表示插件以当前 Arupa 进程用户的身份运行。
Allow
Allow 是插件级别的访问限制。它包含来自 Groups 配置的组名称:
Params
Params 包含在注册期间传递给插件的任意字符串设置:
[Plugins.default.Params] 中的参数构成基础。
[Plugins.<name>.Params] 中的键会覆盖匹配的默认键,
而不相关的默认键仍然对插件可用。
环境引用
参数值可以引用环境变量,而不是直接将值存储在config.toml 中:
env://NAME要求环境变量必须存在。如果环境变量不存在, 插件加载将失败。env://NAME?是可选的。如果环境变量不存在, 插件将收到一个空字符串。- 不带
env://前缀的值将原封不动地传递。?必须是引用的最后一个字符,并且环境变量名称周围不能包含空格。
配置更改
内核可以在不重建 HTTP 服务器的情况下重新加载插件配置。重新加载会更新插件管理器持有的有效配置,并刷新已加载插件的Allow 组。对 Params、RunAsUser 或启动行为的更改将在插件下次加载或启动时生效;它们不会重写已运行的插件进程。