11.3. 使用 ConfigMap PropertySource
Kubernetes 具有将配置传递给应用程序的 ConfigMap 的概念。Spring cloud Kubernetes 插件提供与 ConfigMap
集成,使配置映射可以被 Spring Boot 访问。
启用时 ConfigMap
PropertySource
将查找由应用程序命名的 ConfigMap
(请参阅 spring.application.name
)。如果找到该映射,它将读取其数据并执行以下操作:
11.3.1. 应用单个属性
假设我们有一个名为 demo
的 Spring Boot 应用程序,它使用属性读取其线程池配置。
-
pool.size.core
-
pool.size.max
这可以以 YAML 格式外部化到配置映射:
kind: ConfigMap apiVersion: v1 metadata: name: demo data: pool.size.core: 1 pool.size.max: 16
11.3.2. 应用 application.yaml ConfigMap 属性
对于大多数情况,单个属性可以正常工作,但有时我们找到 YAML 更为方便。在这种情况下,我们使用名为 application.yaml
的单个属性,并将 YAML 嵌入到其中:
kind: ConfigMap apiVersion: v1 metadata: name: demo data: application.yaml: |- pool: size: core: 1 max:16
11.3.3. 应用 application.properties ConfigMap 属性
您还可以在 Spring Boot application.properties
文件的样式中定义 ConfigMap 属性。在这种情况下,我们使用名为 application.properties
的单个属性,并列出其中的属性设置:
kind: ConfigMap apiVersion: v1 metadata: name: demo data: application.properties: |- pool.size.core: 1 pool.size.max: 16
11.3.4. 部署 ConfigMap
要部署 ConfigMap 并使它可以被 Spring Boot 应用程序访问,请执行以下步骤。
流程
-
在 Spring Boot 应用程序中,使用外部配置机制 来访问 ConfigMap 属性源。例如,通过为带有
@Configuration
注释的 Java bean 标注,bean 的属性值可能会由 ConfigMap 注入。 -
在项目的
bootstrap.properties
文件(或bootstrap.yaml
文件)中,设置spring.application.name
属性以匹配 ConfigMap 的名称。 对与应用程序关联的服务帐户启用
查看
权限(默认情况下,这是名为default
的服务帐户)。例如,将view
权限添加到default
服务帐户:oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)