Help us understand the problem. What is going on with this article?

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

More than 3 years have 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 

tadayosi
OSSソフトウェアエンジニア
https://github.com/tadayosi
red-hat
Red Hat はオープンソースのエンタープライズ IT ソリューションを提供するプロバイダーです。サブスクリプション・モデルを通じて、Red Hat のお客様はクラウド、Linux、管理、ミドルウェア、モバイル、ストレージ、および仮想化のテクノロジーを利用できます。また、Red Hat ではサポートや、トレーニング、コンサルティングのサービスも提供しています。
https://www.redhat.com/ja
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away