Kubernetes Thorntail:project_defaults.yml上的动态值

Kubernetes Thorntail:project_defaults.yml上的动态值,kubernetes,thorntail,Kubernetes,Thorntail,使用Thorntail/Kubernetes,是否可以在project_defaults.yml上使用动态值?例如: thorntail: ejb3: thread-pools: default: max-threads: ${my.variable} 其中my.variable将在特定模块的仪表板上配置 想法是替换standalone.xml值,而无需每次需要更改值时都执行新的部署。这在理论上是可能的,因为Thorntail基于WildFly,它允许在

使用Thorntail/Kubernetes,是否可以在project_defaults.yml上使用动态值?例如:

thorntail:
  ejb3:
    thread-pools:
      default:
        max-threads: ${my.variable}
其中
my.variable
将在特定模块的仪表板上配置


想法是替换standalone.xml值,而无需每次需要更改值时都执行新的部署。

这在理论上是可能的,因为Thorntail基于WildFly,它允许在不重新启动的情况下更改某些配置值。您的示例引用了一个WildFly配置值,因此这可能是可能的。Thorntail中那些不是来自WildFly的配置值根本不允许这样做

您可以使用
管理
分数让Thorntail公开WildFly管理界面。然后,您可以使用WildFly管理客户端(
ModelControllerClient
)发布管理操作。然而,我不鼓励你这么做,因为Thorntail并不是专门为它设计的


(另外,Thorntail已经到了生命的尽头。请参阅此处了解更多信息:)

我们可以通过将变量配置为环境变量来实现这一点。使用前面的示例:

thorntail:
  ejb3:
    thread-pools:
      default:
        max-threads: ${env.my_variable:default_value}
然后在所需模块的仪表板上配置my_变量

需要注意的是,我们应该定义一个默认值,因为如果thorntail属性是数值,并且模块上没有定义环境变量,那么我们将面临解析问题,因为解析器将变量名解释为数字。这是一个真实的例子:

Kubernets模块:

RCNT_MAX_THREADS is defined with 12
project_defaults.yml:

thorntail:
  ejb3:
    thread-pools:
      default:
        max-threads: ${env.RCNT_MAX_THREADS:10}
这将导致应用程序使用值为12的最大线程数。如果我们不在模块上定义RCNT_MAX_线程,那么将使用值10

还有一个非常有用的选项可以跟踪实际使用的值: