8.2. 触发 Kubernetes 资源
要启用 Kubernetes 资源,如 Deployment 和 StatefulSets,以无缝消耗新的镜像版本,请在 AWS 经典架构上的 Red Hat OpenShift Service 中配置镜像流更改触发器。这样可确保当关联的镜像流检测到更改时,应用程序部署会自动更新。
Kubernetes 资源没有用于触发的字段,这与部署和构建配置不同(在部署和构建配置中包括作为 API 定义的一组控制触发器字段)。您可以使用 Red Hat OpenShift Service on AWS 经典架构中的注解请求触发器。
该注解定义如下:
apiVersion: v1
kind: Pod
metadata:
annotations:
image.openshift.io/triggers:
[
{
"from": {
"kind": "ImageStreamTag",
"name": "example:latest",
"namespace": "myapp"
},
"fieldPath": "spec.template.spec.containers[?(@.name==\"web\")].image",
"paused": false
},
# ...
]
# ...
其中:
kind-
指定要触发的资源,并且必须具有值
ImageStreamTag。 name- 指定镜像流标签的名称。
namespace- 指定对象的命名空间。此字段是可选的。
fieldPath-
指定要修改的 JSON 路径。此字段受限制,仅接受通过 ID 或索引完全匹配容器的 JSON 路径表达式。对于 pod,JSON 路径为
spec.containers[? (@.name='web')].image。 paused-
指定触发器是否暂停。此字段是可选的,默认值为
false。将值设为true以临时禁用此触发器。
当其中一个核心 Kubernetes 资源同时包含 pod 模板和此注解时,Red Hat OpenShift Service on AWS 经典架构会尝试使用当前与触发器引用的镜像流标签关联的镜像来更新对象。更新针对指定的 fieldPath 进行。
可以包含 pod 模板和注解的核心 Kubernetes 资源示例包括:
-
CronJobs -
部署 -
StatefulSets -
DaemonSets -
Jobs -
ReplicationController -
Pods