レッドハットのソリューションアーキテクトの森です。
Red Hat build of Apache Camel(旧 Red Hat Fuse)では、開発のためのツールをいくつかご用意しています。
今回は、Camel JBang の Kubernetes Plugin をご紹介します。 Camel JBang Kubernetes Plugin を使うと、ローカル環境でカジュアルにCamelのルートを試すのと同じ感覚で、コマンド一発でKubernetesクラスタにデプロイしたり削除したりできます。
前回の記事はこちら
事前準備
以下のものをインストールしておきます。
- JBang
- Camel JBang (Camel CLI)
- OpenShift CLI
JBang 及び Camel JBang (Camel CLI) のインストールについては、前回記事を参照ください。
OpenShift CLI のインストール手順については、製品ドキュメントを参照ください。
今回使用するCamelのサンプルについて
指定した都市の3日間分の気温予測データを取得する、REST APIサービスを作ってみます。
今回は2つの Free API を組み合わせて作ります。
- Open-Meteo:
- 無料の気象データ API で、緯度・経度を指定して、その地点の天気予報を取得可能。
- GeoDB Cities:
- 都市や地域に関する詳細な地理データ(緯度、経度、人口、標高、時差、ISO コードなど)を取得可能。
以下は サンプルのフローです。VSCodeの拡張機能として提供しているGUIエディタの Kaoto で作成しています。

サンプルのソースコードです。
- route:
id: route-3280
from:
id: from-2281
description: /temp
uri: platform-http
parameters:
path: /temp
steps:
- setVariable:
name: location
simple:
expression: ${header.location}
- removeHeaders:
pattern: "*"
- toD:
description: geodb-free-service.wirefreethought.com/v1/geo/places
uri: http
parameters:
httpMethod: GET
httpUri: geodb-free-service.wirefreethought.com/v1/geo/places
limit: 1
namePrefix: ${variable.location}
sort: -population
- unmarshal:
json:
library: Jackson
- removeHeaders:
pattern: "*"
- toD:
description: api.open-meteo.com/v1/forecast
uri: https
parameters:
daily: temperature_2m_max,temperature_2m_min
forecast_days: 3
httpMethod: GET
httpUri: api.open-meteo.com/v1/forecast
latitude: ${body[data][0][latitude]}
longitude: ${body[data][0][longitude]}
- unmarshal:
json:
library: Jackson
- setBody:
simple:
expression: |-
{
"city": "${variable.location}",
"unit": "celsius",
"temperature": {
"today": {
"maximum": "${body[daily][temperature_2m_max][0]}",
"manimum": "${body[daily][temperature_2m_min][0]}"
},
"forecast": {
"${body[daily][time][1]}": {
"maximum": "${body[daily][temperature_2m_max][1]}",
"manimum": "${body[daily][temperature_2m_min][1]}"
},
"${body[daily][time][2]}": {
"maximum": "${body[daily][temperature_2m_max][2]}",
"manimum": "${body[daily][temperature_2m_min][2]}"
}
}
}
}
Camel JBang Kubernetes Plugin で OpenShift にデプロイしてみる
それでは、Camel JBang Kubernetes Plugin を使って、サンプルをOpenShiftにデプロイしてみます。
まずはローカルの環境に、上記のサンプルコードをyaml形式で保存し、OpenShift CLI で OpenShiftにログインした状態にします。
Kubernetes Plugin は、以下のコマンドで Camel JBangに追加することができます。
camel plugin add kubernetes
インストールされている Plugin は、以下のコマンドで確認できます。
camel plugin get
Kubernetes Plugin がリストに表示されていればOKです。
NAME COMMAND DEPENDENCY DESCRIPTION kubernetes kubernetes org.apache.camel:camel-jbang-plugin-kubernetes Run Camel applications on Kubernetes
Kubernetes Plugin の詳細については以下のリンクを参照してください。
Camel Kubernetes plugin :: Apache Camel
Kubernetes Plugin を使って OpenShift にデプロイをするには、以下のコマンドを実行します。
今回は REST API で OpenShiftに外部からアクセス可能にするための Route 生成と、Route における TLS Termination 設定 をオプションで指定しました。
camel kubernetes run sample.yaml \
--cluster-type=openshift \
--trait route.enabled=true \
--trait route.tls-termination=edge
デフォルトではランタイムは Quarkus が選択されますが、--runtime=spring-boot を指定すると、Spring Boot のアプリケーションとしてデプロイされます。

ローカル上でコマンドを実行すると、OpenShift上でビルドが始まります。


しばらくすると、ビルドが完了して、アプリケーションが起動します。
Route に 記載されたURLに、/temp?location=<都市名> でアクセスします。(残念ながら都市名は日本語には対応していません・・・!)

上記の通り、札幌の3日間分の気温予報データを取得することができました。
おわりに
いかがでしょうか?
Camel JBang Kubernetes Plugin は、手軽さと素早い実行にフォーカスしており、 Kubernetes や OpenShift 上でのCamelアプリケーションの開発に非常に便利です。 設定作業や準備も最小限で済むため、PoCや小規模実装のスタートアップに特にメリットがあります。
Red Hat build of Apache Camel に関して興味がある・もう少し詳しい内容が聞きたい、などありましたら、是非弊社までお問合せ頂ければと思います。