Spring boot 为从SCDF启动的批处理作业创建的POD配置映射

Spring boot 为从SCDF启动的批处理作业创建的POD配置映射,spring-boot,spring-batch,openshift,spring-cloud-dataflow,configmap,Spring Boot,Spring Batch,Openshift,Spring Cloud Dataflow,Configmap,我从SCDF启动Spring批处理作业。批处理应用程序在openshift环境中部署为docker映像。SCDF运行在与docker image相同的名称空间下的同一openshift环境中 为SCDF创建的配置映射运行良好。但是,当我将批处理项目的application.yaml添加到openshift配置映射时,POD在从SCDF启动时没有引用它。我为“spring.application.name”和配置映射的“metadata.name”提供了相同的名称。我还在批处理应用程序中添加了以下

我从SCDF启动Spring批处理作业。批处理应用程序在openshift环境中部署为docker映像。SCDF运行在与docker image相同的名称空间下的同一openshift环境中

为SCDF创建的配置映射运行良好。但是,当我将批处理项目的application.yaml添加到openshift配置映射时,POD在从SCDF启动时没有引用它。我为“spring.application.name”和配置映射的“metadata.name”提供了相同的名称。我还在批处理应用程序中添加了以下属性。但是这没有用。未读取配置映射中的属性

应用程序.yaml

spring:
  application:
    name: batch-app
  cloud:
    kubernetes:
      config:
        name: batch-app
        namespace: batch-app-qa
        sources:
        - name: batch-app
apiVersion: v1
kind: ConfigMap
metaData:
  name: batch-app
  namespace: batch-app-qa
  labels:
    app: batch-app
data:
  application.properties: |-
    message=In QA Environment
    spring.datasource.batch.password=**********
    spring.datasource.batch2.password=********
config map.yaml

spring:
  application:
    name: batch-app
  cloud:
    kubernetes:
      config:
        name: batch-app
        namespace: batch-app-qa
        sources:
        - name: batch-app
apiVersion: v1
kind: ConfigMap
metaData:
  name: batch-app
  namespace: batch-app-qa
  labels:
    app: batch-app
data:
  application.properties: |-
    message=In QA Environment
    spring.datasource.batch.password=**********
    spring.datasource.batch2.password=********
作业/吊舱日志:

[main] WARN  org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.getData - Can't read configMap with name: [batch-app] in namespace:[batch-app-qa]. Ignoring.
io.fabric8.kubernetes.client.KubernetesClientException: Operation: [get]  for kind: [ConfigMap]  with name: [batch-app]  in namespace: [batch-app-qa]  failed.
    at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:72) ~[kubernetes-client-4.4.1.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.getMandatory(BaseOperation.java:229) ~[kubernetes-client-4.4.1.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.get(BaseOperation.java:162) ~[kubernetes-client-4.4.1.jar!/:na]
    at org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.getData(ConfigMapPropertySource.java:95) [spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]
    at org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.<init>(ConfigMapPropertySource.java:76) [spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]
    at org.springframework.cloud.kubernetes.config.ConfigMapPropertySourceLocator.getMapPropertySourceForSingleConfigMap(ConfigMapPropertySourceLocator.java:95) [spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]
    at org.springframework.cloud.kubernetes.config.ConfigMapPropertySourceLocator.lambda$locate$0(ConfigMapPropertySourceLocator.java:78) [spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]

Caused by: javax.net.ssl.SSLException: java.net.SocketException: Broken pipe (Write failed)
    at sun.security.ssl.Alerts.getSSLException(java.base@9-internal/Alerts.java:214) ~[na:na]
    at sun.security.ssl.SSLSocketImpl.fatal(java.base@9-internal/SSLSocketImpl.java:1962) ~[na:na]

[main] INFO  org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize - Located property source: [BootstrapPropertySource {name='bootstrapProperties-configmap.batch-app.batch-app-qa'}]
[main]WARN org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.getData-无法读取命名空间:[batch app qa]中名为:[batch app]的configMap。忽略。
io.fabric8.kubernetes.client.KubernetesClientException:命名空间:[batch app qa]中名称为:[batch app]的种类:[ConfigMap]的操作:[get]失败。
在io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:72)~[kubernetes-client-4.4.1.jar!/:na]
在io.fabric8.kubernetes.client.dsl.base.BaseOperation.getMandatory(BaseOperation.java:229)~[kubernetes-client-4.4.1.jar!/:na]
在io.fabric8.kubernetes.client.dsl.base.BaseOperation.get(BaseOperation.java:162)~[kubernetes-client-4.4.1.jar!/:na]
位于org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.getData(ConfigMapPropertySource.java:95)[spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]
位于org.springframework.cloud.kubernetes.config.ConfigMapPropertySource.(ConfigMapPropertySource.java:76)[spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]
在org.springframework.cloud.kubernetes.config.ConfigMapPropertySourceLocator.getMapPropertySourceForSingleConfigMap(ConfigMapPropertySourceLocator.java:95)[spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]
在org.springframework.cloud.kubernetes.config.ConfigMapPropertySourceLocator.lambda$locate$0(ConfigMapPropertySourceLocator.java:78)[spring-cloud-kubernetes-config-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]
原因:javax.net.ssl.SSLException:java.net.SocketException:breaked pipe(写入失败)
位于sun.security.ssl.Alerts.getSSLException(java.com)。base@9-内部/Alerts.java:214)~[na:na]
位于sun.security.ssl.SSLSocketImpl.fatal(java。base@9-内部/SSLSocketImpl.java:1962)~[na:na]
[main]INFO org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize-定位的属性源:[BootstrapPropertySource{name='bootstrapProperties-configmap.batch app.batch app qa']
运行作业时SCDF日志

2020-07-24 12:24:33.479  WARN 1 --- [-nio-80-exec-10] ApplicationConfigurationMetadataResolver : Failed to retrieve properties for resource:Docker Resource [docker:docker-registry.default.svc:5000/batch-app-qa/batch-job]   ---> **This is the Batch Application being loaded into scdf for job launch**

java.lang.NullPointerException: null
    at org.springframework.cloud.dataflow.configuration.metadata.container.DefaultContainerImageMetadataResolver.getRegistryRequest(DefaultContainerImageMetadataResolver.java:162) ~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.configuration.metadata.container.DefaultContainerImageMetadataResolver.getImageLabels(DefaultContainerImageMetadataResolver.java:110) ~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.configuration.metadata.BootApplicationConfigurationMetadataResolver.resolvePropertiesFromContainerImage(BootApplicationConfigurationMetadataResolver.java:157) ~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.configuration.metadata.BootApplicationConfigurationMetadataResolver.listProperties(BootApplicationConfigurationMetadataResolver.java:134) ~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.server.controller.WhitelistProperties.qualifyProperties(WhitelistProperties.java:62) [spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.server.service.impl.TaskServiceUtils.mergeAndExpandAppProperties(TaskServiceUtils.java:164) [spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.server.service.impl.TaskAppDeploymentRequestCreator.createRequest(TaskAppDeploymentRequestCreator.java:115) [spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService.executeTask(DefaultTaskExecutionService.java:258) [spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService$$FastClassBySpringCGLIB$$422cda43.invoke(<generated>) [spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) [spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) [spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) [spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366) ~[spring-tx-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) [spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) ~[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
    at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService$$EnhancerBySpringCGLIB$$4d03bb9f.executeTask(<generated>) ~[spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at org.springframework.cloud.dataflow.server.controller.TaskExecutionController.launch(TaskExecutionController.java:172) ~[spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212]

2020-07-24 12:24:33.479警告1----[-nio-80-exec-10]应用程序配置MetadataResolver:检索资源的属性失败:Docker资源[Docker:Docker registry.default.svc:5000/批处理应用程序qa/批处理作业]-->**这是正在加载到scdf以启动作业的批处理应用程序**
java.lang.NullPointerException:null
在org.springframework.cloud.dataflow.configuration.metadata.container.DefaultContainerImageMetadataResolver.getRegistryRequest(DefaultContainerImageMetadataResolver.java:162)~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
在org.springframework.cloud.dataflow.configuration.metadata.container.DefaultContainerImageMetadataResolver.getImageLabels(DefaultContainerImageMetadataResolver.java:110)~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
在org.springframework.cloud.dataflow.configuration.metadata.bootApplicationConfiguration MetadataResolver.resolvePropertiesFromContainerImage(bootApplicationConfiguration MetadataResolver.java:157)~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
在org.springframework.cloud.dataflow.configuration.metadata.bootcapplicationconfigurationMetadataResolver.listProperties(bootcapplicationconfigurationMetadataResolver.java:134)~[spring-cloud-dataflow-configuration-metadata-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
位于org.springframework.cloud.dataflow.server.controller.WhitelistProperties.qualifyProperties(WhitelistProperties.java:62)[spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
位于org.springframework.cloud.dataflow.server.service.impl.TaskServiceUtils.mergeAndExpandAppProperties(TaskServiceUtils.java:164)[spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
位于org.springframework.cloud.dataflow.server.service.impl.TaskAppDeploymentRequestCreator.createRequest(TaskAppDeploymentRequestCreator.java:115)[spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
在org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService.executeTask(DefaultTaskExecutionService.java:258)[spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
在org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService$$FastClassBySpringCGLIB$$422cda43.invoke()[spring-cloud-dataflow-server-core-2.5.1.RELEASE.jar!/:2.5.1.RELEASE]
在org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)[spring-core-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
在org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:163)[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
在org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.procedue(CglibAopProxy.java:749)[spring-aop-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
位于org.springframework.transaction.i