13.8.2. Kubernetes 资源


与 DeploymentConfig 和 BuildConfigs 不同,它包括作为 API 定义一组字段来控制触发器的字段,Kubernetes 资源没有用于触发的字段。OpenShift Container Platform 使用注解来允许用户请求触发器。该注解定义如下:

Key: image.openshift.io/triggers
Value: array of triggers, where each item has the schema:
[
 {
   "from" :{
     "kind": "ImageStreamTag", // required, the resource to trigger from, must be ImageStreamTag
     "name": "example:latest", // required, the name of an ImageStreamTag
     "namespace": "myapp",     // optional, defaults to the namespace of the object
   },
   // required, JSON path to change
   // Note that this field is limited today, and only accepts a very specific set
   // of inputs (a JSON path expression that precisely matches a container by ID or index).
   // For pods this would be "spec.containers[?(@.name='web')].image".
   "fieldPath": "spec.template.spec.containers[?(@.name='web')].image",
   // optional, set to true to temporarily disable this trigger.
   "paused": "false"
 },
 ...
]

当 OpenShift Container Platform 看到包含 pod 模板的核心 Kubernetes 资源之一时(即,只有 CronJob、Deployment、StatefulSets、DaemonSets、Job、ReplicaSet、ReplicaSets、ReplicationController 和 Pod)以及此注解,它会尝试使用当前与触发器引用的 ImageStreamTag 关联的镜像更新对象。更新针对指定的 fieldPath 进行。

在以下示例中,当 example:latest 镜像流标签被更新时,触发器会触发。触发后,web 容器的 pod 模板镜像引用会使用新的镜像值更新。如果 pod 模板是 Deployment 定义的一部分,则对 pod 模板的更改会自动触发部署,从而有效地推出新镜像。

image.openshift.io/triggers=[{"from":{"kind":"ImageStreamTag","name":"example:latest"},"fieldPath":"spec.template.spec.containers[?(@.name='web')].image"}]

在 Deployment 中添加镜像触发器时,也可以使用 oc set triggers 命令。例如,以下命令将镜像更改触发器添加到名为 example 的 Deployment 中,以便在更新 example:latest 镜像流标签时,部署中的 web 容器使用新镜像值更新:

$ oc set triggers deploy/example --from-image=example:latest -c web

除非 Deployment 已暂停,否则此 pod 模板更新会自动导致使用新镜像值进行部署。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.