使用 Thorntail/Kubernetes,是否可以在 project_defaults.yml 上使用动态值?例如:
thorntail:
ejb3:
thread-pools:
default:
max-threads: ${my.variable}
my.variable
将在特定模块的仪表板上配置哪里。
这个想法是在每次我需要更改值时替换standalone.xml 值而不执行新的部署。
使用 Thorntail/Kubernetes,是否可以在 project_defaults.yml 上使用动态值?例如:
thorntail:
ejb3:
thread-pools:
default:
max-threads: ${my.variable}
my.variable
将在特定模块的仪表板上配置哪里。
这个想法是在每次我需要更改值时替换standalone.xml 值而不执行新的部署。
我们可以通过将变量配置为环境变量来做到这一点。使用前面的示例:
thorntail:
ejb3:
thread-pools:
default:
max-threads: ${env.my_variable:default_value}
然后我们在所需模块的仪表板上配置my_variable 。
重要的是要注意我们应该定义一个默认值,因为如果该 thorntail 属性是数字并且没有在模块上定义环境变量,我们将面临解析问题,因为解析器会将变量名称解释为数字。这是一个真实的例子:
Kubernetes 模块:
RCNT_MAX_THREADS is defined with 12
project_defaults.yml:
thorntail:
ejb3:
thread-pools:
default:
max-threads: ${env.RCNT_MAX_THREADS:10}
这将导致应用程序使用值为 12 的 max-threads。如果我们没有在模块上定义 RCNT_MAX_THREADS,则将使用值 10。
还有一个非常有用的选项可以跟踪真正使用的值:https ://docs.thorntail.io/2.5.0.Final/#the-usage-txt-file_thorntail
这在理论上是可能的,因为 Thorntail 基于 WildFly,它允许在不重新启动的情况下更改某些配置值。您的示例引用了 WildFly 配置值,因此它可能是可能的。Thorntail 中那些并非来自 WildFly 的配置值根本不允许这样做。
您可以使用management
分数让 Thorntail 公开 WildFly 管理界面。然后,您可以使用 WildFly 管理客户端 ( ModelControllerClient
) 发出管理操作。但是,我不鼓励您这样做,因为 Thorntail 并不是真正为它设计的。
(此外,Thorntail 已经到了生命的尽头。请参阅此处了解更多信息:https ://thorntail.io/posts/the-end-of-an-era/ )