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 ID
と Client 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
デプロイに成功していれば、ログイン画面が現れる。
ユーザ名:deveploper
パスワード:developer
でログイン。Authorize Access という画面が出て、OAuth クライアントがこのユーザの情報へのアクセス許可を求めてくるので、すべて許可する。
次に、ユーザ情報を更新する画面が出るので適宜入力して送信。
すると、先ほど取得した GitHub のクレデンシャルを元にこの Syndesis アプリケーションを GitHub 上で認証するか確認されるので、許可する。
これで以下の画面にリダイレクトされて、めでたく認証情報の初期設定と Syndesis へのログインが完了する。
Syndesis の具体的な使い方は、また別の機会に。
-
OpenShift とは "Enterprise Kubernetes for Developers" =オープンソースの PaaS で、Kubernetes をベースに開発や管理/監視用のツールセットが追加されたもの。Kubernetes 上でマイクロサービスを開発したいときに、OpenShift が使える。詳細はこちらなど。
http://nekop.hatenablog.com/entry/2016/12/03/173936 ↩ -
Enterprise Integration Patterns: http://www.enterpriseintegrationpatterns.com/patterns/messaging/toc.html ↩