首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes yaml中的变量原因:无法解析值"${ACTUATOR_PASSWORD}“中的占位符”“ACTUATOR_PASSWORD”“

kubernetes yaml中的变量原因:无法解析值"${ACTUATOR_PASSWORD}“中的占位符”“ACTUATOR_PASSWORD”“
EN

Stack Overflow用户
提问于 2019-02-27 04:10:22
回答 2查看 957关注 0票数 1

当我从IntelliJ运行我的应用程序时,我得到了一个warning / error,尽管应用程序构建良好并通过了所有测试,这是我应该忽略的东西,或者这个问题可以被修复吗?

Kubernetes secret用于创建随机密码,因此我为该特定变量设置了一个占位符。

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
# spring boot actuator access control
management.endpoints.web.exposure.include=*
security.user.actuator-username=admin
security.user.actuator-password=${ACTUATOR_PASSWORD}

ACTUATOR_PASSWORD在此处使用

代码语言:javascript
复制
@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

    ....
}
EN

回答 2

Stack Overflow用户

发布于 2019-02-27 14:47:56

通常,出于机密考虑,您会将其挂载到部署yaml之外。

在这里,您可以在将要运行节点的k8上下文中运行kubectl create secret generic <secret_name> --from-literal <secret_key> ='<password>'

这将在那里创建一个秘密,上面的部署yaml将把它映射到一个环境变量。

票数 2
EN

Stack Overflow用户

发布于 2019-02-27 20:42:55

这在application.properties文件中起到了作用

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

如果未提供环境变量,则将使用admin123

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54893338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档