0

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

thorntail:
  ejb3:
    thread-pools:
      default:
        max-threads: ${my.variable}

my.variable将在特定模块的仪表板上配置哪里。

这个想法是在每次我需要更改值时替换standalone.xml 值而不执行新的部署。

4

2 回答 2

0

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

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

于 2020-12-10T12:44:55.243 回答
0

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

您可以使用management分数让 Thorntail 公开 WildFly 管理界面。然后,您可以使用 WildFly 管理客户端 ( ModelControllerClient) 发出管理操作。但是,我不鼓励您这样做,因为 Thorntail 并不是真正为它设计的。

(此外,Thorntail 已经到了生命的尽头。请参阅此处了解更多信息:https ://thorntail.io/posts/the-end-of-an-era/ )

于 2020-11-26T09:37:02.200 回答