0

问题

更改为 后quarkus.package.typefast-jar我们 Kubernetes 集群上的应用程序实例无法再读取已挂载的 ConfigMap。

2022-02-17 14:39:45,155 WARN [com.example.MyStartupService] (main)
    Config param is not defined and might be missing: foo.bars

本地配置没有问题,但我们也没有挂载它 - 只是有一个 static application.yml。在此更改之前一切正常,我们可以直接将其跟踪到quarkus.package.type.

我们的设置

首先也是最重要的:我们不使用 a application.properties,而是使用 a application.yml(利用quarkus-config-yaml)。

我们正在使用 Quarkus 2.7.1.Final

Java 代码

@ConfigMapping(prefix = CONFIG_PREFIX)
public interface FooBarConfigMapping {

    String CONFIG_PREFIX = "foo";
    String CONFIG_NAME = "bars";
    String CONFIG_PARAM = String.join(".", CONFIG_PREFIX, CONFIG_NAME);

    @WithName(CONFIG_NAME)
    List<BarConfig> barConfigurations();

    interface BarConfig {
        @WithName("name")
        String name();
    }
}
@ApplicationScoped
public class MyStartupService {

    @Inject
    FooBarConfigMapping fooBarConfigMapping;

    @Transactional
    void startup(@Observes @Priority(2501) StartupEvent event) {
        if (fooBarConfigMapping.barConfigurations().isEmpty()) {
            LOGGER.debug("Config param is not defined and might be missing: " + FooBarConfigMapping.CONFIG_PARAM);
        }

        // do something with fooBarConfigMapping.barConfigurations()
    }
}

部署

我们的 application-config.yaml (ConfigMap):

apiVersion: v1
kind: ConfigMap
metadata:
  name: application-configmap
  # ...
data:
  application.yml: |
    foo:
      bars:
        -
          name: A
        -
          name: B
        -
          name: C

我们的 deployment.yaml(部署):

apiVersion: apps/v1
kind: Deployment
metadata:
  # ...
spec:
  # ...
  template:
    # ...
    spec:
      # ...
      containers:
          # ...
          volumeMounts:
            - name: application-config
              mountPath: /config
      volumes:
        - name: application-config
          configMap:
            name: application-configmap

杂项

  1. 我找不到任何好的信息,在读取配置之间可能发生了什么legacy-jar变化fast-jar。也许它与不同的结构有关(如此处所示。对我来说,这可能是最可能的错误来源。

    1.1。我尝试将挂载路径从更改/config/usr/local/apps/config(遵循此SmallRye ConfigMap 示例),但无济于事。

    1.2. 我也尝试将挂载的文件从 to 重命名application.ymlapplication.yaml但结果相同。

4

0 回答 0