12.4. 使用 Fabric8 Karaf 功能
Fabric8 提供对 Apache Karaf 的支持,使其更轻松地为 Kubernetes 开发 OSGi 应用。
Fabric8 的重要特性如下:
- 在蓝图 XML 文件中解析占位符的不同策略。
- 环境变量
- 系统属性
- 服务
- Kubernetes ConfigMap
- Kubernetes Secret
- 使用 Kubernetes 配置映射动态更新 OSGi 配置管理。
- 为 OSGi 服务提供 Kubernetes 热检查。
12.4.1. 添加 Fabric8 Karaf 功能 复制链接链接已复制到粘贴板!
要使用功能,请将 fabric8-karaf-features
依赖项添加到项目 POM 文件中。
流程
-
打开项目的
pom.xml
文件,并添加fabric8-karaf-features
依赖项。
fabric8 karaf 功能将安装到 Karaf 服务器中。
12.4.2. 添加 Fabric8 Karaf 核心捆绑包功能 复制链接链接已复制到粘贴板!
捆绑包 fabric8-karaf-core
提供 Blueprint 和 ConfigAdmin 扩展所使用的功能。
流程
打开项目的
pom.xml
,并将fabric8-karaf-core
添加到startupFeatures
部分。<startupFeatures> ... <feature>fabric8-karaf-core</feature> ... </startupFeatures>
<startupFeatures> ... <feature>fabric8-karaf-core</feature> ... </startupFeatures>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将在自定义 Karaf 分发中添加
fabric8-karaf-core
功能。
12.4.3. 设置 Property Placeholder 服务选项 复制链接链接已复制到粘贴板!
捆绑包 fabric8-karaf-core
会使用以下接口导出服务 PlaceholderResolver
:
PlaceholderResolver
服务充当不同属性占位符解析策略的收集器。默认情况下,它提供的解析策略列在表 解析策略 中。要设置属性占位符服务选项,您可以使用系统属性或环境变量或两者。
流程
要访问 OpenShift 上的 ConfigMap,服务帐户需要查看权限。为服务帐户添加查看权限。
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)
oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 secret 挂载到 Pod,因为通过 API 访问 secret 可能会被限制。
Pod 上作为卷挂载提供的 secret 映射到名为 secret 的目录,如下所示
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.4. 添加自定义属性占位符解析器 复制链接链接已复制到粘贴板!
您可以添加自定义占位符解析器来支持特定的需求,如自定义加密。您还可以使用 PlaceholderResolver
服务使解析器可用于 Blueprint 和 ConfigAdmin。
流程
将以下 mvn 依赖项添加到项目
pom.xml
中。pom.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 实施 PropertiesFunction 接口,并使用 SCR 将它注册为 OSGi 服务。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以在 Configuration management 中引用解析器,如下所示:
属性
my.property = $[myResolver:value-to-resolve]
my.property = $[myResolver:value-to-resolve]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.5. 解析策略列表 复制链接链接已复制到粘贴板!
PlaceholderResolver
服务充当不同属性占位符解析策略的收集器。表中列出了它默认提供的解析策略。
- 解析策略列表
prefix | Example | 描述 |
|
| 从 OS 环境变量中查找属性。 |
'sys |
| 查找 Java JVM 系统属性中的 属性。 |
'service |
| 使用服务命名约定,从 OS 环境变量查找属性。 |
|
| 使用服务命名约定仅返回 hostname 部分,从 OS 环境变量中查找属性。 |
|
| 使用服务命名约定仅返回端口部分,从 OS 环境变量中查找属性。 |
|
| 从 Kubernetes ConfigMap (通过 API)中查找属性。 |
|
| 从 Kubernetes Secret (通过 API 或卷挂载)中查找属性。 |
12.4.6. Property Placeholder 服务选项列表 复制链接链接已复制到粘贴板!
属性占位符服务支持以下选项:
- 属性占位符服务选项列表
Name | default | 描述 |
---|---|---|
| $[ | 占位符的前缀 |
| ] | 占位符的后缀 |
| null | 以逗号分隔的 secret 的路径列表 |
| false | 通过 API 启用/禁用消耗 secret |