Camel K を Docker Desktop for Mac の K8s で動かす #1

Kenta Kosugi
8 min readJul 7, 2020

--

Camel K とは

こちらをご覧下さい。

用意するもの

  • Camel K のバージョン: 1.0.1
  • Docker Desktop for Mac のバージョン : 2.3.0 edge

※ docker desktop for mac の CPU が暴走するバグに当たり edge 版を入れて回避していたため edge 版になっています。

K8s を有効にする

docker desktop for Mac の設定画面から K8s を有効にしておきましょう。右上の docker マークを選択し、[Preferences…] を続けて選択。

[Kubernetes] を選択し、[Enable Kubernetes] にチェックを入れ [Apply & Restart] を選択します。

[Install] を選択します。

kubectl が使えるようになっているはずなので、get nodes を実行してみます。

$ kubectl get nodes -o wide
kubectl get nodes -o wide

既に K8s や OpenShift にログインしたことがある場合は、以下の通り、[docker-desktop] を事前に選択しておきましょう。

Camel K ダウンロードと準備

ダウンロードした Camel K を展開して PATH を通しておきましょう。PATH が通ったら以下のコマンドを実行してバージョンを確認してみます。

$ kamel version

途中で下記のような画面が出力されたら、[システム環境設定] 、[セキュリティとプライバシー] の順に選択します。

続いて [変更するには鍵をクリックします。] を選択します。

MacBook の場合は以下のように Touch Id を求められますが、Touch Id がない Mac をご利用の場合はユーザー名・パスワードを求められます。

認証されたら、[一般] 、[このまま許可] を選択します。

もう一度 kamel コマンドを実行すると以下の画面が表示されるので、[開く] を選択します。

上記で Camel K インストールの準備ができました。

Docker Hub アカウント作成

Docker Hub のアカウントを作成します。Camel K インストール時に使用するので控えておきましょう。

Camel K インストール

以下のコマンドを投入して Camel K をインストールします。registry は docker.io 固定、organization は Docker Hub の Organizations を指定もできますが、今回は個人の ID をそのまま指定しています。

$ kamel install \
--registry docker.io \
--organization kkosugiredhat \
--registry-auth-username kkosugiredhat \
--registry-auth-password xxxxxxx

以下のコマンドを投入して camel-k-operator の [STATUS] が Running になるまで待ちます。

$ kubectl get pods -w

Running になったら、control + c を押下して、kubectl から抜けます。

Camel K をインストールすると Camel K に関連するカスタムリソースを利用できるようになります。インストールされたカスタムリソース定義を表示してみましょう。

$ kubectl get crd
$ kubectl describe crd/integrations.camel.apache.org

実際は kamel コマンドを使用して [Integration] を確認することになります。

kamel get コマンドを実行してみましょう。

Camel K のアプリケーションを動かしていないので何も表示されません。

Camel K サンプルアプリケーションの起動

まずは簡単なアプリケーションから起動しましょう。こちらのアプリが良さそうです。

https://raw.githubusercontent.com/apache/camel-k/master/examples/Sample.java

ソースコードの中を見てみると非常に単純です。

Timer を起動してログに出力する単純なアプリケーションになります。

kamel run の引数にコード、もちろん github の Raw コードを貼り付けても起動することができます。実行してみましょう。

$ kamel run https://raw.githubusercontent.com/apache/camel-k/master/examples/Sample.java

さてここで [Integration] が登場します。Integration を get してみましょう。

$ kamel get  
kamel kit

sample という Integration が Running になっています。
Integration とは別に IntegrationKit もあるのでこれも get してみましょう。

kamel get kit

ここで Docker Hub が使用されていることがわかります。Docker Hub をみてみましょう。

イメージが登録されていることが確認できました。
このアプリケーションが本当に動作しているのかを確認してみましょう。

$ kamel log sample

動作していることが確認できました。では Integration は削除しておきます。

kamel delete

Integration を削除しても Integration Kit は削除されない点に注意してください。

開発をしている中で気軽にこのコード動くの?と思ったことがあると思います。特に Camel K を使うと、IDE がなくても vim や notepad のような軽量なテキストエディタでも編集ができるので、コンパイルエラーが発生する可能性のあるコードであっても気づかずに run してしまうかもしれません。そうしたときは dev オプションを付与して kamel を実行してみましょう。

$ kamel run https://raw.githubusercontent.com/apache/camel-k/master/examples/Sample.java --dev
kamel run — dev

第1回はここまでで終了とします。2回目以降はもっと複雑なパターンを紹介していきたいと思います。

--

--

Kenta Kosugi
Kenta Kosugi

Written by Kenta Kosugi

Javaアプリケーションサーバーの開発からCORBA製品のサポート、QA、証券外務員(第一種免許)、ストレージ屋、アーキテクト、SaaS屋と一貫性のない道を歩んでいます。Red Hatに復帰しました。

No responses yet