73.7. Kubernetes 事件生成示例


  • 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,CamelKubernetesEventRegarding,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
返回顶部