Случай: я хочу создать образы, которые я могу запустить в kubernetes cluster
позже.Кажется очень распространенным использование заполнителей в файле application.properties
для установки этих значений в описании развертывания позже.
My application.properties
выглядит следующим образом:
...
spring.datasource.continueOnError=true
spring.datasource.initialization-mode=embedded
catalogservice.baseurl=http://${CATALOG_SERVICE_ADDRESS}:${CATALOG_SERVICE_PORT}
spring.application.name=cartservice
...
Iпопробуйте получить доступ к этим значениям, используя
@Value("${catalogservice.baseurl}")
String baseUrl;
Когда я пытаюсь построить проект, я получаю следующее исключение:
org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента сname 'catalogRequestComponent': не удалось внедрить автонастройки зависимостей;вложенное исключение - java.lang.IllegalArgumentException: не удалось разрешить заполнитель 'CATALOG_SERVICE_ADDRESS' в значении "http://${CATALOG_SERVICE_ADDRESS}:${CATALOG_SERVICE_PORT}" в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperno [-процесса] -процессов.2.RELEASE.jar: 5.1.2.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1378) ~ [spring-beans-5.1E. 5.1.jar2.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:575) ~ [spring-beans-5.1.2.RELEASE.jar: 5.1.graf илиbeans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:498) ~ [spring-beans-5.1.2.RELEASE.jar: 5.1.2.RELEASE] в org.springframework.sula.BeanFact$ doGetBean $ 0 (AbstractBeanFactory.java:320) ~ [spring-beans-5.1.2.RELEASE.jar: 5.1.2.RELEASE] в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) ~ [spring-beans-5.1.2.RELEASE.jar: 5.1.2.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:318) ~ [spring-beans-5.1.2.RELEASE.jar: 5.1.2.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:199) ~ [spring-beans-5.1.2.RELEASE.jar: 5.1.2.RELEASE] в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:846) ~ [spring-beans-5.1.2.RELEASE.jar: 5.1.2.RELEASE] в org.springframework.context.support.AtextApplicationInjava: 863) ~ [spring-context-5.1.2.RELEASE.jar: 5.1.2.RELEASE] в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java: 546) ~ [spring-context- ...
Я гуглил лоты, но нашел только ConfigMaps
, но они должны ввести значения позже.Тем не менее, проект не будет построен, когда я создаю kubernetes ConfigMap
, или я ошибаюсь ?Я ожидаю, что мне нужно создать изображения на самом первом шаге, до создания кластера и всего остального.
Как передать мои значения
Фрагментkubernetes deployment script:
spec:
containers:
- name: myapp
image: myimage
ports:
- containerPort: 8080
env:
- name: CATALOG_SERVICE_ADDRESS <--
valueFrom:
configMapKeyRef:
name: catalogmap
key: catalog-address
...
Эти значения хранятся в ConfigMap
:
apiVersion: v1
kind: ConfigMap
metadata:
name: catalogmap
data:
catalog-address: 192.168.178.10