66.7. Kubernetes 事件 Producer 示例


  • listEvents :此操作列出了事件。
from("direct:list").
    to("kubernetes-events:///?kubernetesClient=#kubernetesClient&operation=listEvents").
    to("mock:result");
Copy to Clipboard Toggle word wrap

此操作会返回集群中的事件列表。事件的类型是 io.fabric8.kubernetes.api.model.events.v1.Event

要指示事件来自哪个命名空间,可以设置消息标头 CamelKubernetesNamespaceName。默认情况下,返回所有命名空间的事件。

  • listEventsByLabels:此操作列出了标签选择的事件。
from("direct:listByLabels").process(new Processor() {

            @Override
            public void process(Exchange exchange) throws Exception {
                Map<String, String> labels = new HashMap<>();
                labels.put("key1", "value1");
                labels.put("key2", "value2");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENTS_LABELS, labels);
            }
        });
    to("kubernetes-events:///?kubernetesClient=#kubernetesClient&operation=listEventsByLabels").
    to("mock:result");
Copy to Clipboard Toggle word wrap

此操作会返回集群中发生的事件列表,使用标签选择器(上例中仅预期标签 "key1" 设置为 "value1" 的事件),标签 "key2" 设置为 "value2")。事件的类型是 io.fabric8.kubernetes.api.model.events.v1.Event

此操作需要消息标头 CamelKubernetesEventsLabels 设置为 Map<String, String >,其中键值对代表预期的标签名称和值。

  • getEvent :此操作提供特定事件。
from("direct:get").process(new Processor() {

            @Override
            public void process(Exchange exchange) throws Exception {
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_NAME, "event1");
            }
        });
    to("kubernetes-events:///?kubernetesClient=#kubernetesClient&operation=getEvent").
    to("mock:result");
Copy to Clipboard Toggle word wrap

此操作返回与集群中条件匹配的事件。事件的类型是 io.fabric8.kubernetes.api.model.events.v1.Event

此操作需要两个消息标头(即 CamelKubernetesNamespaceNameCamelKubernetesEventName ),第一个标头需要设置为目标命名空间的名称,需要设置为事件的目标名称。

如果无法找到匹配的事件,则返回 null

  • createEvent :此操作会创建一个新事件。
from("direct:get").process(new Processor() {

            @Override
            public void process(Exchange exchange) throws Exception {
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "default");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_NAME, "test1");
                Map<String, String> labels = new HashMap<>();
                labels.put("this", "rocks");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENTS_LABELS, labels);
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_ACTION_PRODUCER, "Some Action");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_TYPE, "Normal");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_REASON, "Some Reason");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_REPORTING_CONTROLLER, "Some-Reporting-Controller");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_REPORTING_INSTANCE, "Some-Reporting-Instance");
            }
        });
    to("kubernetes-events:///?kubernetesClient=#kubernetesClient&operation=createEvent").
    to("mock:result");
Copy to Clipboard Toggle word wrap

此操作会在集群中发布新事件。可以通过两种方法从消息标头创建事件,或者从 io.fabric8.kubernetes.api.model.events.v1.EventBuilder 处创建。

创建事件的任何方法:

  • 该操作需要两个消息标头,它们是 CamelKubernetesNamespaceNameCamelKubernetesEventName,以分别设置命名空间的名称以及生成的事件的名称。
  • 该操作支持消息标头 CamelKubernetesEventsLabels,将标签设置为生成的事件。

用于创建事件的消息标头是 CamelKubernetesEventTime,CamelKubernetesEventAction,CamelKubernetesEventType, CamelKubernetesEventReason ,CamelKubernetesEventReason,CamelKubernetesEvent Regarding,CamelKubernetesEventRelated,CamelKubernetesEventReportingControllerCamelKubernetesEventReportingInstance

如果支持的消息标头不足以用于特定的用例,仍然可以使用类型为 io.fabric8.kubernetes.api.model.events.v1.EventBuilder 的对象来设置消息正文,以便在创建事件时使用。请注意,标签、事件名称和命名空间名称始终从消息标头设置,即使提供了构建器。

  • updateEvent :此操作更新现有事件。

该行为与 createEvent 完全相同,只有操作的名称有所不同。

  • DeleteEvent :此操作会删除现有事件。
from("direct:get").process(new Processor() {

            @Override
            public void process(Exchange exchange) throws Exception {
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "default");
                exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_EVENT_NAME, "test1");
            }
        });
    to("kubernetes-events:///?kubernetesClient=#kubernetesClient&operation=deleteEvent").
    to("mock:result");
Copy to Clipboard Toggle word wrap

此操作会从集群中移除现有事件。它返回一个 布尔值,以指示操作是否成功。

此操作需要两个消息标头(即 CamelKubernetesNamespaceNameCamelKubernetesEventName ),第一个标头需要设置为目标命名空间的名称,需要设置为事件的目标名称。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部