Переменная из причин kubernetes yaml: Не удалось разрешить заполнитель 'ACTUATOR_PASSWORD' в значении "$ {ACTUATOR_PASSWORD}" - PullRequest
0 голосов
/ 26 февраля 2019

Когда я запускаю свое приложение из IntelliJ, я получаю warning / error, хотя приложение прекрасно собирается и выполняет все тесты, это то, что я должен игнорировать, или это можно исправить исправлено?

Kubernetes secretиспользуется для создания случайного пароля, поэтому у меня есть заполнитель для этой конкретной переменной.

2019-02-26 19:45:29.600  INFO 38918 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-02-26 19:45:29.684  WARN 38918 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'actuatorSecurity': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'ACTUATOR_PASSWORD' in value "${ACTUATOR_PASSWORD}"
2019-02-26 19:45:29.685  INFO 38918 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2019-02-26 19:45:29.685  INFO 38918 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2019-02-26 19:45:29.707  INFO 38918 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2019-02-26 19:45:29.713  INFO 38918 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]

qronicle-deployment.yaml

apiVersion: v1
kind: Secret
metadata:
  name: actuator
  namespace: {{ .Release.Namespace }}
type: Opaque
data:
  actuator-password: {{ randAlphaNum 10 | b64enc | quote }}
....
- name: ACTUATOR_PASSWORD
  valueFrom:
    secretKeyRef:
      name: actuator
      key: actuator-password

application.properties

# spring boot actuator access control
management.endpoints.web.exposure.include=*
security.user.actuator-username=admin
security.user.actuator-password=${ACTUATOR_PASSWORD}

ACTUATOR_PASSWORD потребляется здесь

@Configuration
@EnableWebSecurity
class ActuatorSecurity : WebSecurityConfigurerAdapter() {
    @Value("\${security.user.actuator-username}")
    private val actuatorUsername: String? = null

    @Value("\${security.user.actuator-password}")
    private val actuatorPassword: String? = null

    ....
}

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

это делает трюк в файле application.properties

security.user.password = $ {ACTUATOR_PASSWORD: admin123}

, где будет использоваться admin123если env var не указан

0 голосов
/ 27 февраля 2019

Обычно для секретов вы монтируете его вне развертывания yaml.

Здесь вы можете запустить kubectl create secret generic <secret_name> --from-literal <secret_key> ='<password>' в контексте k8, где будут работать узлы.

Это создаст там секрет, а yaml развертывания, который у вас есть, отобразит его в переменную окружения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...