11.11. 在 OpenShift 上使用应用程序中的 ConfigMap
对于 OpenShift,您可以使用部署控制器(dc)将 configmap 挂载到用于运行应用的 pod 中。
ConfigMap 是一个 OpenShift 资源,用于将非机密数据存储在键值对中。
在指定 microprofile-platform Galleon 层来添加 microprofile-config-smallrye 子系统以及服务器配置文件的任何扩展后,您可以使用 CLI 脚本向服务器配置添加新的 ConfigSource。您可以将 CLI 脚本保存在可访问的目录中,如 /scripts 目录,位于 Maven 项目的根目录中。
MicroProfile 配置功能在 JBoss EAP 中使用 SmallRye Config 组件实施,它由 microprofile-config-smallrye 子系统提供。此子系统包含在 microprofile-platform Galleon 层中。
先决条件
- 您已安装了 Maven。
- 您已配置了 JBoss EAP Maven 存储库。
- 您已将应用打包为可引导 JAR,您可以在 JBoss EAP OpenShift 平台上运行应用程序。有关在 OpenShift 平台上将应用程序作为可引导 JAR 构建应用程序的信息,请参阅在 JBoss EAP OpenShift 平台上使用可引导 JAR。
流程
在项目的根目录下,创建名为
scripts的目录。例如:mkdir scripts
$ mkdir scriptsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
cli.properties文件,并将文件保存到/scripts目录中。在此文件中定义config.path和config.ordinal系统属性。例如:config.path=/etc/config config.ordinal=200
config.path=/etc/config config.ordinal=200Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 CLI 脚本,如
mp-config.cli,并将它保存在可引导 JAR 的可访问目录中,如/scripts目录。以下示例显示了mp-config.cli脚本的内容:config map /subsystem=microprofile-config-smallrye/config-source=os-map:add(dir={path=${config.path}}, ordinal=${config.ordinal})# config map /subsystem=microprofile-config-smallrye/config-source=os-map:add(dir={path=${config.path}}, ordinal=${config.ordinal})Copy to Clipboard Copied! Toggle word wrap Toggle overflow mp-config.cliCLI 脚本会创建一个新的ConfigSource,该脚本将从属性文件检索到的 ordinal 和 path 值。-
将脚本保存到
/scripts目录中,该目录位于项目的根目录。 在现有插件 <configuration> 元素
中添加以下配置提取:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打包应用程序:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
oc login命令登录到您的 OpenShift 实例。 可选: 如果您之前还没有创建
target/openshift子目录,则必须发出以下命令来创建 suddirectory:mkdir target/openshift
$ mkdir target/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将打包的应用复制到创建的子目录中。
cp target/microprofile-config-bootable.jar target/openshift
$ cp target/microprofile-config-bootable.jar target/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
target/openshift子目录作为二进制输入来构建应用程序:oc start-build microprofile-config-app --from-dir target/openshift
$ oc start-build microprofile-config-app --from-dir target/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意OpenShift 将一组 CLI 脚本命令应用到可引导 JAR 配置文件,为云环境启用它。您可以通过在 Maven 项目
/target目录中打开bootable-jar-build-artifacts/generated-cli-script.txt文件来访问此脚本。创建
ConfigMap。例如:oc create configmap microprofile-config-map --from-literal=name="Name comes from Openshift ConfigMap"
$ oc create configmap microprofile-config-map --from-literal=name="Name comes from Openshift ConfigMap"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 dc 将
ConfigMap挂载到应用。例如:oc set volume deployments/microprofile-config-app --add --name=config-volume \ --mount-path=/etc/config \ --type=configmap \ --configmap-name=microprofile-config-map
$ oc set volume deployments/microprofile-config-app --add --name=config-volume \ --mount-path=/etc/config \ --type=configmap \ --configmap-name=microprofile-config-mapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 执行
oc set volume命令后,应用程序将使用新的配置设置重新部署。测试输出:
curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json$ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下是预期的输出:
{"result":"Hello Name comes from Openshift ConfigMap"}{"result":"Hello Name comes from Openshift ConfigMap"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow