66.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 です。

この操作により、メッセージヘッダー CamelKubernetesEventsLabelsMap<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 です。

この操作には、ターゲット名前空間の名前に設定する必要がある CamelKubernetesNamespaceName と、イベントのターゲット名に設定する必要がある CamelKubernetesEventName という 2 つのメッセージヘッダーが必要です。

一致するイベントが見つからなかった場合は、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

この操作により、クラスター内に新しいイベントが発行されます。イベントの作成方法は 2 つあり、メッセージヘッダーから作成するか、io.fabric8.kubernetes.api.model.events.v1.EventBuilder から直接作成できます。

イベントの作成方法にかかわらず、以下が適用されます。

  • この操作には、名前空間の名前と生成されるイベントの名前をそれぞれ設定するために、CamelKubernetesNamespaceNameCamelKubernetesEventName という 2 つのメッセージヘッダーが必要です。
  • この操作では、生成されたイベントにラベルを設定するためのメッセージヘッダー CamelKubernetesEventsLabels がサポートされています。

イベントの作成に使用できるメッセージヘッダーは、CamelKubernetesEventTimeCamelKubernetesEventActionCamelKubernetesEventTypeCamelKubernetesEventReasonCamelKubernetesEventNoteCamelKubernetesEventRegardingCamelKubernetesEventRelatedCamelKubernetesEventReportingController、および CamelKubernetesEventReportingInstance です。

サポートされているメッセージヘッダが特定のユースケースに十分でない場合、イベントの作成時に使用する事前入力ビルダー表す 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

この操作により、クラスターから既存のイベントが削除されます。操作の成功または失敗を示す boolean が返されます。

この操作には、ターゲット名前空間の名前に設定する必要がある CamelKubernetesNamespaceName と、イベントのターゲット名に設定する必要がある CamelKubernetesEventName という 2 つのメッセージヘッダーが必要です。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat