47.2. 追加の Camel Quarkus 設定
このリリースの Quarkus 用 Camel 拡張機能では、camel-quarkus-kubernetes
の拡張機能は、クラスターサービスとして camel-quarkus-master
拡張機能と併用する場合にのみサポートされます。さらに、camel-quarkus-kubernetes
拡張機能をサポートするには、アプリケーションで quarkus-openshift-client
拡張機能への依存関係を明示的に追加する必要があります。
47.2.1. Kubernetes クライアントインスタンスの自動登録 リンクのコピーリンクがクリップボードにコピーされました!
エクステンションは、kubernetesClient
という名前の Kubernetes クライアント Bean を自動的に登録します。次のように、ルートで Bean を参照できます。
from("direct:pods") .to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=listPods")
from("direct:pods")
.to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=listPods")
デフォルトでは、クライアントはローカルの kubeconfig ファイルから設定されます。application.properties
内のプロパティーを使用して、クライアント設定をカスタマイズできます。
quarkus.kubernetes-client.master-url=https://my.k8s.host quarkus.kubernetes-client.namespace=my-namespace
quarkus.kubernetes-client.master-url=https://my.k8s.host
quarkus.kubernetes-client.namespace=my-namespace
設定オプションの完全なセットは、Quarkus Kubernetes Client ガイド に記載されています。
47.2.2. 特定のエンドポイントから消費するコンシューマがクラスタ内で 1 つだけであること リンクのコピーリンクがクリップボードにコピーされました!
同じルートが複数の Pod にデプロイされている場合、このエクステンションを マスターのエクステンション と組み合わせて使用すると便利な場合があります。このようなセットアップでは、キャメルマスター namespace 全体で一度に 1 つのコンシューマーがアクティブになります。
たとえば、以下のルートを複数の Pod にデプロイするとします。
from("master:ns:timer:test?period=100").log("Timer invoked on a single pod at a time");
from("master:ns:timer:test?period=100").log("Timer invoked on a single pod at a time");
以下のようなプロパティーを使用して、kubernetes クラスターサービスを有効にすることができます。
quarkus.camel.cluster.kubernetes.enabled = true
quarkus.camel.cluster.kubernetes.enabled = true
その結果、1 つのコンシューマーが ns
camel マスター namespace 全体でアクティブになります。これは、特定の時点で、単一のタイマーのみがクラスター全体でエクスチェンジを生成することを意味します。つまり、メッセージは一度に 1 つの Pod で 100 ミリ秒ごとにログに記録されます。
kubernetes クラスターサービスは、quarkus.camel.cluster.kubernetes.*
プロパティーをさらに微調整できます。
設定プロパティー | タイプ | デフォルト |
---|---|---|
quarkus.camel.cluster.kubernetes.* 設定に従って、Kubernetes クラスターサービスを自動的に設定する必要があるかどうか。 |
|
|
クラスターサービス ID (デフォルトは null)。 |
| |
Kubernetes マスターの URL (デフォルトでは Kubernetes クライアントプロパティーから読み取られます)。 |
| |
Kubernetes API サーバーにリクエストを送信するときに使用する接続タイムアウト (ミリ秒単位)。 |
| |
Pod と configmap を含む Kubernetes namespace の名前 (デフォルトで自動検出)。 |
| |
現在の Pod の名前 (デフォルトではコンテナーのホスト名から自動検出されます)。 |
| |
すべての Pod が同じ瞬間に Kubernetes API を呼び出さないようにするために適用するジッター係数 (デフォルトは 1.2)。 |
| |
現在のリーダーのデフォルトのリース期間 (デフォルトは 15000)。 |
| |
リーダーシップを失った可能性があるため、リーダーがサービスを停止しなければならない期限 (デフォルトは 10000)。 |
| |
リーダーシップを確認して獲得するための後続の 2 つの試みの間の時間。ジッター係数を使用してランダム化されます (デフォルトは 2000)。 |
| |
サービス検索の順序/優先度 (デフォルトは 2147482647)。 |
| |
楽観的ロックを行うために使用されるリースリソースの名前 (デフォルトは leaders)。リソース名は、基になる Kubernetes リソースが単一のロックを管理できる場合に接頭辞として使用されます。 |
| |
Kubernetes で使用されるリースリソースタイプ。config-map または lease のいずれかです (デフォルトは lease)。 |
| |
camel マスター namespace リーダーをクラスター内のすべての camel コンテキストに均等に分散する必要があるかどうか。 |
|
|
クラスターを設定する Pod を識別するために使用されるラベルのキー/値。デフォルトは空のマップです。 |
|
ビルド時に修正される設定プロパティー。その他の設定プロパティーはすべて、ランタイム時にオーバーライドが可能です。