Save 37% off PRO during our Black Friday Sale! »

Camel K

Camel K

Camel Kとは?
Red Hat FuseのアップストリームプロジェクトであるApache Camelのサブプロジェクトとして、Camel Kの開発が進められており、Red Hat Integrationの製品機能としてもGAされました。このCamel Kを使うことで、システム連携を従来のような重厚長大なプロジェクトではなく、クラウドネイティブに行うことができ、マイクロサービスやサーバーレスで実現することができるようになります。このスライドではそのCamel Kの概要について紹介しています。

5df7b3418b4b5528ddfe514d73008883?s=128

Taku Sugimoto

October 20, 2021
Tweet

Transcript

  1. Camel Kとは? 1 次世代のインテグレーションのためのフレームワーク 杉本 拓 (Taku Sugimoto) Application Services

    Red Hat 株式会社
  2. Source: https://camel.apache.org/ Apache Camelとは? 2 ▸ インテグレーションのための強力なオープンソースのフレームワーク ▸ 340を超えるコンポーネントで様々システムとの連携が可能: Salesforce,

    AWS S3 ストレージサービスなど ▸ 様々なデータフォーマットとプロトコルに対応: AMQP, HTTP, SCPなど ▸ Enterprise Integration Patterns (EIP)を活用したインテグレーションのソ リューションの設計と開発が可能 ▸ よく使われるパターンの例: Content-based router, Splitter, Aggregatorなど ENTERPRISE INTEGRATION
  3. Source: https://files-dist.s3.amazonaws.com/AnnualReports/FY2019+Annual+Report.pdf Apache Camelのコミュニティ 3 ▸ オープンソースのインテグレーションソフトウェアとしては最大かつ最も活発なコ ミュニティ ▸ 600人以上のコントリビューター

    ▸ 3800以上のプルリクエスト (ほぼ外部のコントリビューター) ▸ 13年以上継続的に開発が続く、Apacheのプロジェクトでも最も活発なものの一つ ENTERPRISE INTEGRATION
  4. 4 ? 殆どのシステムとの連携が 可能 インテグレーションパター ンのベストプラクティスを サポート クラウドでもそうでない環 境でも動作可能 簡単な言語で開発が可能:

    XML, YAML, Javaなど from(“kafka:topic”) .to(“grpc:endpoint”) Apache Camel Camel 概要 ENTERPRISE INTEGRATION
  5. Kubernetes スタンドアローン Quarkus Camel K Kamelets Kamelet Bindings Camel Core

    + Extensions for Quarkus Apache Camelの構造と対象ユーザ ENTERPRISE INTEGRATION Quarkus Camel Core + Extensions for Quarkus SB/Karaf/EAP* Camel Core + Components 一般的なインテ グレーションの 開発者向け データ&インテグレー ションのエンジニア向け すぐに利用可能な 構成要素 開発者による 制御が可能 + 抽象化のレベル - 5 SB/Karaf/EAP* Camel Core + Components Notes: Spring Boot, Apache Karaf and Red Hat JBoss Enterprise Application Platform (EAP) are only supported when using Camel 2 through Fuse 6.x and Fuse 7.x. Camel extensions for Quarkus are currently Technical Preview Spring Boot will be supported with Camel 3 around H2CY22
  6. Camel K ENTERPRISE INTEGRATION 6

  7. Camel K in a nutshell CamelによるインテグレーションをKubernetes上で簡単に実現 K > kamel run

    roll-die.js ▸ ソースコードは1ファイル ▸ CLIコマンド1つで実行 from("platform-http:/roll-die") .setBody() .simple("roll: ${random(1,6)}") ENTERPRISE INTEGRATION webサービス roll-die.js
  8. ▸ OpenShiftとKubernetes上でインテグレーションをサーバーレスで動作 させることが可能なプラットフォーム ▸ KubernetesのCRDとオペレータの仕組みをベース ▸ コミュニティーベースのプロジェクト ▸ Apache Camelのサブプロジェクトとして、2018/8/31にスタート

    Camel Kとは? ENTERPRISE INTEGRATION K
  9. ? ? ? ? Troubleshooting Spring Boot Apps Spring Boot

    Apps コンテナ化 Docker Linux Container Application Server JavaEE OSGi ビルド WAR/JAR Service Deployment DeploymentConfig ConfigMap Spring Boot Apps Java Main Quarkus 9 インテグレーションをコンテナ化する際に発生する課題 ENTERPRISE INTEGRATION
  10. ▸ Kubernetes/OpenShift上で直接インテグレーションを実行 ▸ ランタイムとしてQuarkusを使用可能 ▸ Knativeが利用可能な環境ではサーバーレスで実行可能 ▸ Kubernetesのオペレーターをベース ▸ Camelの依存関係は自動的に処理

    ▸ デプロイ前のDockerやS2Iの設定が不要 Camel K ENTERPRISE INTEGRATION 10 Kubernetesネイティブのインテグレーション
  11. Camel K ENTERPRISE INTEGRATION 11 Camel Kのプラットフォームでできること クラウドネイティブなインテグレーションパ ターン (EIP)

    オーケストレーション 様々な環境 (Knative, Kafka, OpenShift, Kubernetes, Service Binding, etc) に自動 的に対応 様々な環境に対応 相互接続 Apache Camelのコンポーネントにより、ク ラウドネイティブなやり方ですべてを接続 サーバーレスなインテグレーション イベントドリブンなサーバーレスのアプリ ケーション (source/sink) を自動スケール (0にスケールも可能) Quarkusをベースとしたランタイムで高い効率 性 高効率 ライブコーディング、簡単な設定 開発者フレンドリー
  12. Camel Kによりシンプルになる開発の流れ 作成 ファイル 起動 CLIツール 実行 on OpenShift $

    kamel run integration.yaml 1 2 3 ENTERPRISE INTEGRATION 12 from(“knative:channel/xxxx”) .transform()... .to(“kafka:topic”) from(“kafka:topic”) .to(“http:my-host/api/path”)
  13. 開発にフォーカスすることを可能にする Camel K 13 "開発者とCamel Kプラットフォームのシームレスなエクスペリエンス" 開発者 開発者: 1. シンプルでステートレ

    スなコードスニペット の作成 開発者: 2. コードのファイルをプッシュ プラットフォーム: 3. コンパイル, ビルド, パッ ケージ プラットフォーム: 4. デプロイ, リソースの 作成と設定 プラットフォーム: 5. スケールのポリシーの適用 やイベントメッシュへの接続 ENTERPRISE INTEGRATION
  14. Camel Kのアーキテクチャ クラウドネイティブな開発体験に最適化 • クラウドでのライブコーディング • コンポーネントの依存関係を自動的 に管理 • 短時間でのデプロイとインクリメン

    タルなアップデート • クラウドリソースを自動的に生成 • 柔軟なカスタマイズ性 ENTERPRISE INTEGRATION Integration Custom Resource Camel K operator OpenShift Serverless Serverless O↔N 開発者 14
  15. CAMEL K OPERATOR Camel K Operatorでのリソースの記述 • ランタイムの選択 ◦ Quarkus

    • プロジェクトのスキャフォールド • 必要なコードの追加 ◦ コンテナの振る舞い ◦ サーバーレスの振る舞い ◦ 監視の設定 • 依存関係の追加 • コンテナイメージの作成とインクリ メンタルなアップデート • OpenShift/Knative リソースの作成 ◦ Secrets ◦ Service ◦ Config Map ◦ Deployment ◦ Ingress ENTERPRISE INTEGRATION Camel K Operatorによる開発と運用の簡素化 15 (*) https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.9/html-single/operators/index OpenShift Operator (*) の仕組みを 使うことにより、Camel K アプリ ケーションの運用の自動化が可能
  16. Analyze Integration Custom Resource Observe Act Serverless O↔N Camel K

    Operator ENTERPRISE INTEGRATION https://camel.apache.org/camel-k/latest/architecture/operator.html Camel K OperatorによりCamel DSLで記述されたインテグレーションロジック は、アプリケーションとしてインストールされ、状態がモニタリングされつつ、 サーバーレスアプリケーションとして処理の実行が可能
  17. Integration Custom Resource Observe Live Update on update クラウドでのライブコーディング (dev

    モード) ENTERPRISE INTEGRATION devモードを使用することで、Camel DSLを記述したインテグレーションのカス タムリソースファイルを更新すると、Camel K Operatorが変更を検知し、動的 にCamel Kのコンテナにその変更を反映
  18. Camel Kと次世代のインテグレーションを実現する構成要素 18 Quarkus + K = + Camel K

    Camel Operator ENTERPRISE INTEGRATION インテグレーショ ンのための強力な フレームワークで あるApache Camel サーバーレスに最 適な高速軽量なア プリケーションラ ンタイムである Quarkus アプリケーション の運用を自動化す る Camel K Operator 次世代のインテグ レーションを実現
  19. Camel Kで利用可能なクライアント 19 “kamel” CLI Camel DSL (YAML) ENTERPRISE INTEGRATION

    Console “oc” CLI “kubectl” CLI Integration Custom Resource Camel DSL Camel DSL Camel Kのインテグレーションファイルは様々なクライアントから実行可能
  20. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat 20 Thank you