1.5. 自定义
所有可用的自定义选项都位于 OpenShift 配置选项 中。
以下小节中提供了一些示例:
1.5.1. 公开路由 复制链接链接已复制到粘贴板!
为 Quarkus 应用程序公开路由:
quarkus.openshift.route.expose=true
quarkus.openshift.route.expose=true
您不需要在 application.properties 文件中添加此属性。相反,您可以将它作为命令行参数传递:
./mvnw clean package -Dquarkus.openshift.route.expose=true
./mvnw clean package -Dquarkus.openshift.route.expose=true
这同样适用于以下列出的所有属性。
1.5.1.1. 保护 Route 资源 复制链接链接已复制到粘贴板!
为了保护传入连接,OpenShift 提供了几种 TLS 终止来提供认证。
有关如何保护路由的更多信息,请参阅 OpenShift Container Platform 文档。
以下示例演示了如何通过添加 "quarkus.openshift.route.tls" 属性来使用 passthrough 终止来配置安全路由:
quarkus.openshift.route.expose=true quarkus.openshift.route.target-port=https ## Route TLS configuration: quarkus.openshift.route.tls.termination=passthrough quarkus.openshift.route.tls.insecure-edge-termination-policy=None
quarkus.openshift.route.expose=true
quarkus.openshift.route.target-port=https
## Route TLS configuration:
quarkus.openshift.route.tls.termination=passthrough
quarkus.openshift.route.tls.insecure-edge-termination-policy=None
1.5.2. 标签 复制链接链接已复制到粘贴板!
在生成的资源中添加标签:
quarkus.openshift.labels.foo=bar
quarkus.openshift.labels.foo=bar
1.5.3. 注解 复制链接链接已复制到粘贴板!
在生成的资源中添加注解:
quarkus.openshift.annotations.foo=bar
quarkus.openshift.annotations.foo=bar
1.5.4. 环境变量 复制链接链接已复制到粘贴板!
OpenShift Container Platform 提供了多种方法来定义环境变量:
- 键/值对
- 从 Secret 或 ConfigMap 导入所有值
- 隔离由 Secret 或 ConfigMap 中的给定字段标识的单个值
- 从同一资源内的字段维护一个值
1.5.4.1. 来自键/值对的环境变量 复制链接链接已复制到粘贴板!
在生成的资源中将键/值对添加为环境变量:
quarkus.openshift.env.vars.my-env-var=foobar
quarkus.openshift.env.vars.my-env-var=foobar
以上命令将 MY_ENV_VAR=foobar 添加为环境变量。键 my-env-var 将转换为大写,短划线将替换为下划线,从而导致 MY_ENV_VAR。
1.5.4.2. 来自 Secret 的环境变量 复制链接链接已复制到粘贴板!
要将 Secret 的所有键/值对作为环境变量添加,请应用以下配置,将每个 Secret 分隔以逗号(、)来用作源:
quarkus.openshift.env.secrets=my-secret,my-other-secret
quarkus.openshift.env.secrets=my-secret,my-other-secret
这会在容器定义中生成以下内容:
以下代码将 my-secret Secret 的 keyName 字段标识的值提取到 foo 环境变量中:
quarkus.openshift.env.mapping.foo.from-secret=my-secret quarkus.openshift.env.mapping.foo.with-key=keyName
quarkus.openshift.env.mapping.foo.from-secret=my-secret
quarkus.openshift.env.mapping.foo.with-key=keyName
这样可在容器的 env 部分中生成以下内容:
1.5.4.3. ConfigMap 中的环境变量 复制链接链接已复制到粘贴板!
要添加来自 ConfigMap 的所有键/值对作为环境变量,请应用以下配置,将每个 ConfigMap 分隔以逗号(、)来用作源:
quarkus.openshift.env.configmaps=my-config-map,another-config-map
quarkus.openshift.env.configmaps=my-config-map,another-config-map
这会在容器定义中生成以下内容:
以下命令将 my-config-map ConfigMap 中的 keyName 字段标识的值提取到 foo 环境变量中:
quarkus.openshift.env.mapping.foo.from-configmap=my-configmap quarkus.openshift.env.mapping.foo.with-key=keyName
quarkus.openshift.env.mapping.foo.from-configmap=my-configmap
quarkus.openshift.env.mapping.foo.with-key=keyName
这样可在容器的 env 部分中生成以下内容:
1.5.4.4. 来自字段的环境变量 复制链接链接已复制到粘贴板!
您还可以通过指定要用作源的字段路径,来使用另一个字段中的值来添加新环境变量。例如:
quarkus.openshift.env.fields.foo=metadata.name
quarkus.openshift.env.fields.foo=metadata.name
1.5.4.5. 更改生成的部署资源 复制链接链接已复制到粘贴板!
除了生成 Deployment 资源外,您还可以选择获取 DeploymentConfig、StatefulSet、Job 或 CronJob 资源,而不是使用 application.properties :
quarkus.openshift.deployment-kind=StatefulSet
quarkus.openshift.deployment-kind=StatefulSet
1.5.4.5.1. 生成作业资源 复制链接链接已复制到粘贴板!
如果要生成 Job 资源,您需要使用 application.properties 添加以下属性:
quarkus.openshift.deployment-kind=Job
quarkus.openshift.deployment-kind=Job
如果您使用 Picocli 扩展,则默认生成 Job 资源。
您可以通过 quarkus.openshift.arguments 属性提供 Kubernetes 作业使用的参数。例如,添加属性 quarkus.openshift.arguments=A,B。
最后,每次在 OpenShift 中安装 Kubernetes 任务时都会启动 Kubernetes 作业。有关如何运行 Kubernetes 作业的更多信息,请参阅 运行示例作业。
您可以使用 quarkus.openshift.job.xxx 下的属性来配置 Kubernetes 任务配置的其余部分。如需更多信息,请参阅 quarkus.openshift.job.parallelism。
1.5.4.5.2. 生成 CronJob 资源 复制链接链接已复制到粘贴板!
如果要生成 CronJob 资源,您需要使用 application.properties 文件添加以下属性:
quarkus.openshift.deployment-kind=CronJob # Cron expression to run the job every hour quarkus.openshift.cron-job.schedule=0 * * * *
quarkus.openshift.deployment-kind=CronJob
# Cron expression to run the job every hour
quarkus.openshift.cron-job.schedule=0 * * * *
CronJob 资源需要 Cron 表达式来指定何时通过 quarkus.openshift.cron-job.schedule 属性启动作业。如果没有提供t,则构建会失败。
您可以使用 quarkus.openshift.cron-job.xxx 下的属性来配置 Kubernetes CronJob 配置的其余部分(如需更多信息,请参阅 quarkus.openshift.cron-job.parallelism)。
1.5.4.6. 验证 复制链接链接已复制到粘贴板!
例如,两个定义之间有冲突,例如,错误地分配一个值并指定变量来自字段,从而导致构建时抛出错误。您可以在将应用程序部署到集群中之前解决这个问题,其中可能很难诊断问题的来源。
同样,两个冗余定义(例如,从同一 secret 定义注入两次)不会造成问题,而是报告警告来告知您可能还没有重复该定义。
1.5.4.6.1. 后向兼容性 复制链接链接已复制到粘贴板!
以前的 OpenShift 扩展版本支持不同的语法来添加环境变量。旧语法仍被支持,但已弃用,建议您迁移到新语法。
| Old | New | ||
| 普通变量 |
|
| |
| from 字段 |
|
| |
|
所有来自 |
|
| |
|
所有来自 |
|
| |
|
从一个 |
|
| |
|
|
| ||
|
在一个 |
|
| |
|
|
|
If you redefine the same variable by using the new syntax while keeping the old syntax, only the new version is kept, and a warning will be issued to alert you of the problem. For example, if you define both `quarkus.openshift.env-vars.my-env-var.value=foobar` and `quarkus.openshift.env.vars.my-env-var=newValue`, the extension generates an environment variable `MY_ENV_VAR=newValue` and issues a warning.
If you redefine the same variable by using the new syntax while keeping the old syntax, only the new version is kept, and a warning will be issued to alert you of the problem.
For example, if you define both `quarkus.openshift.env-vars.my-env-var.value=foobar` and `quarkus.openshift.env.vars.my-env-var=newValue`, the extension generates an environment variable `MY_ENV_VAR=newValue` and issues a warning.
1.5.5. 挂载卷 复制链接链接已复制到粘贴板!
OpenShift 扩展允许您为应用配置卷和挂载。您可以使用简单配置挂载任何卷:
quarkus.openshift.mounts.my-volume.path=/where/to/mount
quarkus.openshift.mounts.my-volume.path=/where/to/mount
这将向 my pod 添加一个挂载,以便卷 my-volume 到路径 /where/to/mount。您可以配置卷本身,如以下部分所示:
1.5.5.1. Secret 卷 复制链接链接已复制到粘贴板!
quarkus.openshift.secret-volumes.my-volume.secret-name=my-secret
quarkus.openshift.secret-volumes.my-volume.secret-name=my-secret
1.5.5.2. ConfigMap 卷 复制链接链接已复制到粘贴板!
quarkus.openshift.config-map-volumes.my-volume.config-map-name=my-config-map
quarkus.openshift.config-map-volumes.my-volume.config-map-name=my-config-map
1.5.5.3. 持久性卷声明 (PVC) 复制链接链接已复制到粘贴板!
quarkus.openshift.pvc-volumes.my-pvc.claim-name=my-pvc
quarkus.openshift.pvc-volumes.my-pvc.claim-name=my-pvc