无法从Kubernetese配置映射读取int值

时间:2020-10-09 10:58:11

标签: spring-boot kubernetes kubectl configmap

我正在尝试在kubernetese上部署springboot应用程序。我已将所有环境变量存储在配置映射中,并尝试从那里读取值。有某些属性需要读取int值。

在我们的代码中,它看起来像这样:

application.properties:

TOKEN_RETRY_COUNT=3

由于我们必须从ConfigMap中读取它,因此我们更新了application.properties,如下所述:

更新application.properties:

TOKEN_RETRY_COUNT=${STARGATE_TOKEN_RETRY_LIMIT}

配置地图

配置的值类似于“配置映射”中的配置。我必须加双引号,因为没有双引号是不允许的。

"STARGATE_TOKEN_RETRY_LIMIT": "3",

现在,当我在kubernetese上部署它之后尝试读取这些值时,我遇到了以下错误:

对于STARGATE_TOKEN_RETRY_LIMIT:

Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "STARGATE_TOKEN_RETRY_LIMIT"

现在,我已经更新了代码以将该值作为String,然后将其解析为int,但这不是理想的方式。应该有一些采用不同类型的标准方法。

如果我们无法在Config Maps中处理其他类型,那么什么是在kubernetese上为Springboot应用程序传递不同应用程序属性的理想方式呢?

1 个答案:

答案 0 :(得分:0)

我认为问题不在于将属性值(3)指定为字符串(“ 3”)。如果您仔细阅读错误消息,将会发现NumberFormatException是由于尝试将STARGATE_TOKEN_RETRY_LIMIT(从字面上)解析为int引起的。将配置映射传递到应用程序/容器的方式可能有问题。