redhat
openshift
apache-camel
iPaaS
syndesis

オープンソースの iPaaS: Syndesis を使ってみる

More than 1 year has passed since last update.

Syndesis は OpenShift 1 上で動作するオープンソースの iPaaS プラットフォーム。Red Hat がスポンサーして開発されている。
https://syndesis.io/

iPaaS とは

iPaaS というのは、インテグレーション(=システム間連携)に特化した PaaS のことで、ESB や Web サービスに精通したインテグレーションエンジニアでなくとも、カジュアルなユーザ(=シチズン・インテグレータ)が GUI で簡単にシステム間連携のソリューションを作れるようにするもの。

例えば、エンジニアでない営業補助のオペレータが、Twitter、Facebook、LinkedIn などからユーザの公開情報を引き抜いて、社内の Salesforce に潜在顧客として集める、といったソリューションを比較的簡単に作れるようになる(はず)。イメージとしては ESB 版の、データベースに対する Excel のようなもの、と言えなくもない。

Syndesis

Syndesis の特徴は、インテグレーションエンジンに軽量で高機能な EIP 2 フレームワーク Apache Camel を採用していることと、OpenShift / Kubernetes をベースに構築されているのでデプロイやスケールアウトが非常に容易なこと、などがある。

ここでは、以下のクイックスタートを元に、Syndesis をインストールするところまでを説明する。このクイックスタートでは minishift が使われているが、ここでは oc cluster up を使う。
http://syndesis.io/quickstart/

OpenShift のセットアップと起動

インストール

まずは、Docker が入ってなければまず Docker から入れる(ここでは省略)。macOS では Docker for Mac を勧める。

次に、OpenShift のコマンドラインツール oc をインストールする。

macOS

$ brew install openshift-cli

Linux

以下から最新版のバイナリを落としてパスに通すか、Linuxbrew を使っている人は Mac と同じようにしてインストールする。
https://github.com/openshift/origin/releases

Fedora の場合は、以下でOK。

$ sudo dnf install origin-clients

セットアップ

セットアップの詳細については、こちらも参照:
https://github.com/openshift/origin/blob/master/docs/cluster_up_down.md

--insecure-registry "172.30.0.0/16"

基本的には oc cluster up と実行するだけで、OpenShift のインスタンスをローカルで起動できる。しかし、そのままだとエラーが出て起動に失敗するので、Docker の insecure registry に 172.30.0.0/16 を登録する必要がある。

macOS

Docker for Mac の Preferences... を開いて、Daemon タブの Insecure registries:172.30.0.0/16 を登録して、Docker を再起動する。

Linux

/etc/docker/daemon.json (無ければ作成)を、以下のように編集する。

{
   "insecure-registries": [
     "172.30.0.0/16"
   ]
}

その後、Docker デーモンを再起動。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

ファイアウォール設定

CentOS / RHEL / Fedora を使っている場合は、以下のようにファイアウォールの設定が必要。

まずは、Docker ネットワーク(172.17.0.0/16 と仮定)のファイアウォール設定。

$ sudo firewall-cmd --permanent --new-zone dockerc
$ sudo firewall-cmd --permanent --zone dockerc --add-source 172.17.0.0/16
$ sudo firewall-cmd --permanent --zone dockerc --add-port 8443/tcp
$ sudo firewall-cmd --permanent --zone dockerc --add-port 53/udp
$ sudo firewall-cmd --permanent --zone dockerc --add-port 8053/udp

次に、ホストマシンのファイアウォール設定。443/tcp は Syndesis の起動に必須。でないとエラーが発生して起動しない。8443/tcp はマシンの外から OpenShift の Web コンソールにアクセスしたいときには必須。

$ sudo firewall-cmd --permanent --add-port 443/tcp
$ sudo firewall-cmd --permanent --add-port 8443/tcp

最後にファイアウォール設定を反映させる。

$ sudo firewall-cmd --reload

ローカル起動

oc cluster up で OpenShift は起動するが、oc cluster up はローカルでのテスト用コマンドなので、デフォルトは OpenShift インスタンスへの変更が永続化されない。変更を永続化するには、--host-data-dir=/path/to/data/dir パラメータを渡す。また、2回目起動以降は --use-existing-config パラメータも加える。さらに、マシンの外から OpenShift の Web コンソールにアクセスできるように、--public-hostname=xxx.xxx.xxx.xxx も付ける。

したがって、起動コマンドは以下の通り。(ローカルマシンの IP アドレスが 192.168.1.10 で、データディレクトリを /opt/openshift/data にした場合。--host-data-dir の場所はユーザが任意に決めていい。)

$ oc cluster up --public-hostname=192.168.1.10 --host-data-dir=/opt/openshift/data

(2回目以降)

$ oc cluster up --public-hostname=192.168.1.10 --host-data-dir=/opt/openshift/data --use-existing-config

Web コンソール

https://192.168.1.10:8443/ にアクセスして、ユーザ名:deveploper パスワード:developer でログイン(実際には初期設定ではパスワードはなんでもOK)。

終了

起動した OpenShift インスタンスを終了するには、以下のようにする。

$ oc cluster down

Syndesis のインストール

ここからようやく Syndesis のクイックスタートに入る。しかし、OpenShift のセットアップが正しく終わっていれば、あとはそんなに難しくはないはず。
http://syndesis.io/quickstart/

GitHub クレデンシャルの取得

まず、以下の URL から自分の GitHub アカウントにアプリケーションを登録して、クレデンシャルを取得する必要がある。
https://github.com/settings/developers

フォームは適当に埋めれば良いが、Authorization callback URL には以下を入力する(ローカルマシンの IP アドレスが 192.168.1.10 の場合)。

https://syndesis.192.168.1.10.nip.io

その後、得られたクレデンシャル(Client IDClient Secret)を、後続の作業のために環境変数にエクスポートする。

$ export GITHUB_CLIENT_ID=...
$ export GITHUB_CLIENT_SECRET=...

Syndesis のデプロイ

以下のコマンドを実行して、Syndesis の OpenShift テンプレートをインストールし、最後にアプリケーション syndesis-restricted を作成する。

$ oc create -f https://raw.githubusercontent.com/syndesisio/syndesis-openshift-templates/master/syndesis-restricted.yml
$ oc create -f https://raw.githubusercontent.com/syndesisio/syndesis-openshift-templates/master/support/serviceaccount-as-oauthclient-restricted.yml
$ oc new-app syndesis-restricted \
    -p ROUTE_HOSTNAME=syndesis.192.168.1.10.nip.io \
    -p OPENSHIFT_MASTER=$(oc whoami --show-server) \
    -p OPENSHIFT_PROJECT=$(oc project -q) \
    -p OPENSHIFT_OAUTH_CLIENT_SECRET=$(oc sa get-token syndesis-oauth-client) \
    -p GITHUB_OAUTH_CLIENT_ID=${GITHUB_CLIENT_ID} \
    -p GITHUB_OAUTH_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}

Syndesis の pod がすべてデプロイされるまで待つ。

$ oc get pods -w

Syndesis へログイン

この URL へアクセス: https://syndesis.192.168.1.10.nip.io

デプロイに成功していれば、ログイン画面が現れる。

syndesis-login.png

ユーザ名:deveploper パスワード:developer でログイン。Authorize Access という画面が出て、OAuth クライアントがこのユーザの情報へのアクセス許可を求めてくるので、すべて許可する。

次に、ユーザ情報を更新する画面が出るので適宜入力して送信。

syndesis-update-account.png

すると、先ほど取得した GitHub のクレデンシャルを元にこの Syndesis アプリケーションを GitHub 上で認証するか確認されるので、許可する。

これで以下の画面にリダイレクトされて、めでたく認証情報の初期設定と Syndesis へのログインが完了する。

syndesis-home.png

Syndesis の具体的な使い方は、また別の機会に。


  1. OpenShift とは "Enterprise Kubernetes for Developers" =オープンソースの PaaS で、Kubernetes をベースに開発や管理/監視用のツールセットが追加されたもの。Kubernetes 上でマイクロサービスを開発したいときに、OpenShift が使える。詳細はこちらなど。
    http://nekop.hatenablog.com/entry/2016/12/03/173936 

  2. Enterprise Integration Patterns: http://www.enterpriseintegrationpatterns.com/patterns/messaging/toc.html