1.5. 自定义


所有可用的自定义选项都位于 OpenShift 配置选项 中。

以下小节中提供了一些示例:

1.5.1. 公开路由

为 Quarkus 应用程序公开路由:

quarkus.openshift.route.expose=true
Copy to Clipboard Toggle word wrap
提示

您不需要在 application.properties 文件中添加此属性。相反,您可以将它作为命令行参数传递:

./mvnw clean package -Dquarkus.openshift.route.expose=true
Copy to Clipboard Toggle word wrap

这同样适用于以下列出的所有属性。

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
Copy to Clipboard Toggle word wrap

1.5.2. 标签

在生成的资源中添加标签:

quarkus.openshift.labels.foo=bar
Copy to Clipboard Toggle word wrap

1.5.3. 注解

在生成的资源中添加注解:

quarkus.openshift.annotations.foo=bar
Copy to Clipboard Toggle word wrap

1.5.4. 环境变量

OpenShift Container Platform 提供了多种方法来定义环境变量:

  • 键/值对
  • 从 Secret 或 ConfigMap 导入所有值
  • 隔离由 Secret 或 ConfigMap 中的给定字段标识的单个值
  • 从同一资源内的字段维护一个值

1.5.4.1. 来自键/值对的环境变量

在生成的资源中将键/值对添加为环境变量:

quarkus.openshift.env.vars.my-env-var=foobar
Copy to Clipboard Toggle word wrap

以上命令将 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
Copy to Clipboard Toggle word wrap

这会在容器定义中生成以下内容:

envFrom:
  - secretRef:
      name: my-secret
      optional: false
  - secretRef:
      name: my-other-secret
      optional: false
Copy to Clipboard Toggle word wrap

以下代码将 my-secret Secret 的 keyName 字段标识的值提取到 foo 环境变量中:

quarkus.openshift.env.mapping.foo.from-secret=my-secret
quarkus.openshift.env.mapping.foo.with-key=keyName
Copy to Clipboard Toggle word wrap

这样可在容器的 env 部分中生成以下内容:

- env:
  - name: FOO
    valueFrom:
      secretKeyRef:
        key: keyName
        name: my-secret
        optional: false
Copy to Clipboard Toggle word wrap

1.5.4.3. ConfigMap 中的环境变量

要添加来自 ConfigMap 的所有键/值对作为环境变量,请应用以下配置,将每个 ConfigMap 分隔以逗号()来用作源:

quarkus.openshift.env.configmaps=my-config-map,another-config-map
Copy to Clipboard Toggle word wrap

这会在容器定义中生成以下内容:

envFrom:
  - configMapRef:
      name: my-config-map
      optional: false
  - configMapRef:
      name: another-config-map
      optional: false
Copy to Clipboard Toggle word wrap

以下命令将 my-config-map ConfigMap 中的 keyName 字段标识的值提取到 foo 环境变量中:

quarkus.openshift.env.mapping.foo.from-configmap=my-configmap
quarkus.openshift.env.mapping.foo.with-key=keyName
Copy to Clipboard Toggle word wrap

这样可在容器的 env 部分中生成以下内容:

- env:
  - name: FOO
    valueFrom:
      configMapKeyRef:
        key: keyName
        name: my-configmap
        optional: false
Copy to Clipboard Toggle word wrap

1.5.4.4. 来自字段的环境变量

您还可以通过指定要用作源的字段路径,来使用另一个字段中的值来添加新环境变量。例如:

quarkus.openshift.env.fields.foo=metadata.name
Copy to Clipboard Toggle word wrap

1.5.4.5. 更改生成的部署资源

除了生成 Deployment 资源外,您还可以选择获取 DeploymentConfigStatefulSetJobCronJob 资源,而不是使用 application.properties

quarkus.openshift.deployment-kind=StatefulSet
Copy to Clipboard Toggle word wrap
1.5.4.5.1. 生成作业资源

如果要生成 Job 资源,您需要使用 application.properties 添加以下属性:

quarkus.openshift.deployment-kind=Job
Copy to Clipboard Toggle word wrap
重要

如果您使用 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 * * * *
Copy to Clipboard Toggle word wrap
重要

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 扩展版本支持不同的语法来添加环境变量。旧语法仍被支持,但已弃用,建议您迁移到新语法。

Expand
表 1.1. 旧语法和新语法
 

Old

New

 

普通变量

quarkus.openshift.env-vars.my-env-var.value=foobar

quarkus.openshift.env.vars.my-env-var=foobar

 

from 字段

quarkus.openshift.env-vars.my-env-var.field=foobar

quarkus.openshift.env.fields.my-env-var=foobar

 

所有来自 ConfigMap

quarkus.openshift.env-vars.xxx.configmap=foobar

quarkus.openshift.env.configmaps=foobar

 

所有来自 Secret

quarkus.openshift.env-vars.xxx.secret=foobar

quarkus.openshift.env.secrets=foobar

 

从一个 Secret 字段

quarkus.openshift.env-vars.foo.secret=foobar

quarkus.openshift.env.mapping.foo.from-secret=foobar

 
 

quarkus.openshift.env-vars.foo.value=field

quarkus.openshift.env.mapping.foo.with-key=field

 

在一个 ConfigMap 字段中,

quarkus.openshift.env-vars.foo.configmap=foobar

quarkus.openshift.env.mapping.foo.from-configmap=foobar

 
 

quarkus.openshift.env-vars.foo.value=field

quarkus.openshift.env.mapping.foo.with-key=field

 
注意
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.
Copy to Clipboard Toggle word wrap

1.5.5. 挂载卷

OpenShift 扩展允许您为应用配置卷和挂载。您可以使用简单配置挂载任何卷:

quarkus.openshift.mounts.my-volume.path=/where/to/mount
Copy to Clipboard Toggle word wrap

这将向 my pod 添加一个挂载,以便卷 my-volume 到路径 /where/to/mount。您可以配置卷本身,如以下部分所示:

1.5.5.1. Secret 卷

quarkus.openshift.secret-volumes.my-volume.secret-name=my-secret
Copy to Clipboard Toggle word wrap

1.5.5.2. ConfigMap 卷

quarkus.openshift.config-map-volumes.my-volume.config-map-name=my-config-map
Copy to Clipboard Toggle word wrap

1.5.5.3. 持久性卷声明 (PVC)

quarkus.openshift.pvc-volumes.my-pvc.claim-name=my-pvc
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部