Camel K を Docker Desktop for Mac の K8s で動かす #1
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
既に 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
sample という Integration が Running になっています。
Integration とは別に IntegrationKit もあるのでこれも get してみましょう。
ここで Docker Hub が使用されていることがわかります。Docker Hub をみてみましょう。
イメージが登録されていることが確認できました。
このアプリケーションが本当に動作しているのかを確認してみましょう。
$ kamel log sample
動作していることが確認できました。では Integration は削除しておきます。
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
第1回はここまでで終了とします。2回目以降はもっと複雑なパターンを紹介していきたいと思います。