LoginSignup
10
6

More than 5 years have passed since last update.

Docker対応したAPI Connectを導入、稼動させる

Last updated at Posted at 2017-01-16

はじめに

2016年末に提供されたAPI Connect V5.0.6 から、開発者向けにDocker ContainerへAPI Connectがインストールできるようになった。V5.0.5以前は、API ConnectのコンポーネントであるDataPower、API Manager、開発者ポータルは仮想イメージとしてのみ提供されており、開発者端末への導入は、それなりにハードルが高かった。

Docker Containerに導入できるようになったことで、従来よりも簡単に開発者向け端末で利用できるようになりそうだ。docker-composeを利用し、API Connectの複数のコンポーネントをまとめて導入、管理できるようになっている。

マニュアルに従い、Docker ContainerにAPI Connectを導入し、サンプルを動かす所まで実施してみる。

(仮想イメージの導入に関しては、IBM API Connect の導入 IBM DataPower Gatewayの導入編IBM API Connect の導入 Managementサーバーの導入編 に詳しく説明されている。)

ながれ

Docker ContainerへのAPI Connectの導入、稼動に関しては、Knowledege Centerに記載があるので、こちらの流れに従う。

  1. 前提環境の準備
  2. Docker Container に API Connect を導入
  3. API Connect の構成実施
  4. カタログの設定
  5. microservice アプリケーションの公開
  6. 開発者ポータルで、Client キー&シークレットの確認
  7. ゲートウェイ経由の microservice の呼び出し

以降は、この流れに従う。

1. 前提環境の準備

Knowledege Centerや、Docker Hubによると、以下が前提とある。

  • Docker HostのOSは、API ConnectがサポートするOS
  • Docker
    • docker1.12.0 or later
    • docker-compose 1.8.1 or later
  • API Connect Toolkit
  • ミニマムHWリソース
    • 2cpu
    • 8GB RAM

API ConnectがサポートするOSの調べ方は、過去記事を参考。
環境は、Windows7 professional sp1環境上にVMWareを用意し、Docker HostのOSとしてUbuntu14.04LTSを導入し、Ubuntuイメージに2Cpu、8GB RAMを割り当てた。導入したDocker関連は、以下。

  • docker 1.12.6
  • docker-compose 1.9.0

Dockerの導入に関しては、Dockerのマニュアルや、DockerをLinux(Ubuntu 14.04 LTS)にインストールする方法と解説を参考に導入した。
docker-composeも同様に、Dockerのマニュアルを参考に導入した。

2. Docker Container に API Connectを導入

Docker Hostの適当なディレクトリーに移動する。以下のコマンドを実施し、git の API Connect Docker リポジトリーの clone を作成する。

$ git clone https://github.com/strongloop/apiconnect-docker

作成した clone のディレクトリーに移動し、以下コマンドを実行。コマンド実行は、ダウンロードが行われるため、インターネットアクセスが必要で、時間もかかる。
$ cd apiconnect-docker
$ docker run -it --rm --env SHOW_LICENSE=1 ibmcom/apiconnect:manager-v5.0.6.0

clone ディレクトリー内で、SMTPサーバーを指定されているファイル「.env」を編集する。以下はgmailを指定した場合の例。

.env
ACCEPT_LICENSE=true
APIC_VERSION=v5.0.6.0
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SENDER=xxxxxxxxxx@gmail.com
SMTP_USERNAME=xxxxxxxxxx@gmail.com
SMTP_PASSWORD=password

API Connectは、Gateway、API Manager、開発者ポータルなど複数のサービスで稼動する。clone ディレクトリー内に、複数 Container を構成管理するYAMLファイルが提供されており、これを利用し、Container を起動する。Gateway として DataPower を利用する場合は、docker-compose.yamlファイル、Gateway として Microgateway を利用する場合は、docker-compose-microgateway.yaml が用意されている。
ここでは、DataPower を利用した。clone ディレクトリ内で、以下のコマンドを実行し、Container を起動する。初回のコマンド実行時には、ダウンロード等が行われるため、時間がかかる。

$ docker-compose up -d

起動が終了後、以下コマンドを実行し、稼動状況を確認する。

$ docker-compose ps

apic@ubuntu:~/apiconnect-docker$ docker-compose ps
    Name                   Command               State               Ports
--------------------------------------------------------------------------------------
apim            /tini -- /startup.sh             Up
datapower       /start.sh                        Up       443/tcp
esmaster        /docker-entrypoint.sh /bin ...   Up       9200/tcp, 9300/tcp
ibmlogstash     /bin/sh -c /startup.sh           Up
ibmportal       /root/tini -- /root/start_ ...   Up
make-ssh-keys   /bin/sh -c /genkey.sh            Exit 0
microservice    /bin/sh -c /usr/bin/app.sh ...   Up       8080/tcp
nginx           /bin/sh -c /run.sh               Up       0.0.0.0:443->443/tcp, 80/tcp
apic@ubuntu:~/apiconnect-docker$

全てのサービスへのアクセスを確認するために、Docker Host の IPアドレスと API Connect ホスト名をマッピングする。Docker Hostの/etc/hostsファイルを編集する。

xxx.xxx.xxx.xxx  apim ibmportal datapower microservice

ここまでで導入は完了。かなり簡単に導入ができた!!
これ以降は、環境の設定、サンプルAPIの公開、APIへのアクセスを行っていく。

以降の手順では、画面キャプチャーが英語となっているが、日本語表示も可能

3. API Connect の構成実施

次に、GatewayとしてDataPowerの登録と、APIを提供する組織の登録を行う。

3.1 DataPowerの登録

Cloud Manager(https://apim/cmc) にアクセスを行う。起動まで時間がかかるケースがあるのと、最初のアクセスでは証明書の受け入れが必要。ログインし、ライセンス条項を受け入れる。

  • ユーザー:admin
  • password: !n0r1t5@C cmc01.JPG

プロファイル情報を更新する。
cmc03.JPG

プロファイルの更新が終わると、Cloud Managerの画面が表示されるのでDataPowerの設定を行う。Servicesをクリックし、"Gateway" 箇所までスクロールし、歯車マークをクリックする。
cmc04_1.jpg

Addressに「datapower」と入力し、"save" をクリックする。
cmc05_1.JPG

DataPower Servicesで、"Add Server" をクリックする。
cmc06_1.JPG

DataPowerの情報を入力し、"Create"をクリックする。登録が終わるまで時間がかかる。

  • Display Name: idg
  • Address: datapower
  • Username: admin
  • Password: admin

cmc07_1.JPG

これで、DataPowerが登録される。
cmc08_1.JPG

3.2 APIを提供する組織の登録

続いて、APIを提供する組織の登録を行う。組織を開き、"Add" をクリックする。
cmc09_1.jpg

組織名や、ユーザー情報を入力し、"Add" をクリックする。ここでは組織名を「dev」とした。
cmc10_1.JPG

APIを提供する組織の登録後、ユーザー情報で登録したメールアドレスにメールが届く。このメールからパスワードの設定を行うと、API Managerへのアクセスが可能になる。
cmc11_1.JPG

4. カタログの設定

ここでは、カタログの設定から開発者ポータルを作成する。
API Manager (https://apim/apim) にアクセスを行い、APIを提供する組織で登録したユーザーでログインする。
apim01.JPG

ログイン後、最初のアクセスの場合、黒い画面で"Draft APIs"という画面が出力されるので、"Got it!"ボタンを押す。
apim02.JPG

APIに関するページが表示され、画面左上のマークをクリックするとメニューが表示される。
apim03_1.JPG

Dashboardをクリックする。Dashboardの黒い画面が表示されるので、"Got it!"をクリックする。
apim04_1.JPG

Sandboxカタログをクリックし、Sandboxカタログの設定を行う
apim06_1.jpg

Settingsタブを選択し、左メニューのPortalをクリックし、以下を設定確認し、画面右上の保存ボタンをクリックする。

保存ボタンをクリックすると、Portalを作成するという画面が表示される。一定時間経過後、開発者ポータルにアクセスが可能となる。
apim08.JPG

これで、カタログの設定は終了。

5. microservice アプリケーションの公開

次に、microservice アプリケーションを公開するステップを行う。このステップでは、apicコマンドを使用するため、apiconnect Developer toolkitの導入が必要である。
toolkitの導入は、Windowsの記事ではあるが、API Connect をWindowsにインストールする際のTipsを参考に。
ここでは、Docker HostのUbuntuに、以下を導入。

  • node v4.4.4
  • npm v4.1.1
  • apic v5.0.6(apiconnect: v2.5.8)

作成したgit cloneのディレクトリーから、micoroservice ディレクトリに移動し、以下のように apic login コマンドを実行する。ユーザーは、apim にログインしたユーザーと同じ。

apic@ubuntu:~/apiconnect-docker$ cd microservice/
apic@ubuntu:~/apiconnect-docker/microservice$ apic login
Enter the API Connect server
? Server: apim
? Username: xxxxx@xxx.com
? Password (typing will be hidden) *********
Logged into apim successfully
apic@ubuntu:~/apiconnect-docker/microservice$

次に、サンプルで用意されているAPIを、公開する。以下のコマンドを実行する。

apic@ubuntu:~/apiconnect-docker/microservice$ apic publish definitions/loopback-example-database-product.yaml --catalog sb --organization dev --server apim

Staged definitions/loopback-example-database-product.yaml to dev:sb [loopback-example-database:1.0.0]
Published definitions/loopback-example-database-product.yaml to dev:sb [loopback-example-database:1.0.0]
apic@ubuntu:~/apiconnect-docker/microservice$

これでmicroserviceアプリケーションの公開が終了。

6. 開発者ポータルで、Client キー&シークレットの確認

ここでは、開発者ポータルにアクセスし、公開したmicroserviceにアクセスする際にClientキーとClientシークレットを確認する。
https://ibmportal/登録した組織名/sb にアクセスする。
dev01.JPG

"create an account"をクリックし、新規ユーザー登録を行う。ここでのユーザーは開発者のため、メールアドレスは、APIを提供する組織の登録で使用したメールアドレスとは別のアドレスが必要。
dev03.JPG

APIを提供する組織の登録と同様に、該当のメールアドレスにメールが送信される。メールにあるURLをクリックするとユーザーがアクティベーションされる。登録したユーザーでログインする。
dev04.JPG

"Apps"をクリックし、"Create new App"をクリックする。
dev05_1.JPG

アプリ名に「microservice」と入力し、作成する。
dev06_1.JPG

作成されると、"Show Client Secret"にチェックを入れると、Clientシークレットを確認することができる。この表示は一度だけのため、Clientシークレットを使用する場合、コピーをしておく必要がある。次のAPI呼び出しの手順で使用するため、コピーしておく。
リセット機能があるので、忘れた場合はリセットを行う。
dev07_2.jpg

スクロールすると、同様にClientキーを確認できる。同様にコピーしておく。
dev08_2.JPG

"API Products"から、公開した"loopback-example-database (1.0.0)"をクリックする。
dev02_1.JPG

Plansで"Default Plan"を"subscribe"をクリックする。
dev09_1.JPG

先ほど作成した"microservice"にチェックをいれ"Subscribe"をクリックする。
dev10_1.JPG

この操作で、公開したmicoroserviceの利用登録まで完了した。

7. ゲートウェイ経由の microservice の呼び出し

次に、curlを使用して、公開したmicroserviceの呼び出しを行う。呼び出しに必要な情報は以下。POSTでデータ登録を行い、GETでそのデータを取得する。

まず、以下コマンドを実行してPOSTを実行する。Clientキー、Clientシークレットは適宜修正が必要。

apic@ubuntu:~$ curl -k --request POST --url https://datapower/dev/sb/api/Accounts --header 'accept: application/json' --header 'content-type: application/json' --header 'x-ibm-client-id: a395c4b2-3115-4544-ad0c-e1c15cb3acfb' --header 'x-ibm-client-secret: kE8eN8lC8jW2yB4wJ4iY1fP7uP7dT7mD8aK3aK3jA8kN5bH0dA' --data '{"email":"myemail@myhost.com","createdAt":"2016-11-26T15:29:45.233Z","lastModifiedAt":"2016-11-25T20:17:02.033Z"}'

{"email":"myemail@myhost.com","createdAt":"2016-11-26T15:29:45.233Z","lastModifiedAt":"2016-11-25T20:17:02.033Z","id":1}
apic@ubuntu:~$

次に、以下コマンドを実行してGETを実行する。入力した値がGETされていることが確認できる。

apic@ubuntu:~$ curl -k --request GET --url https://datapower/dev/sb/api/Accounts --header 'accept: application/json' --header 'content-type: application/json' --header 'x-ibm-client-id: a395c4b2-3115-4544-ad0c-e1c15cb3acfb' --header 'x-ibm-client-secret: kE8eN8lC8jW2yB4wJ4iY1fP7uP7dT7mD8aK3aK3jA8kN5bH0dA'

[{"email":"myemail@myhost.com","createdAt":"2016-11-26T15:29:45.233Z","lastModifiedAt":"2016-11-25T20:17:02.033Z","id":1}]
apic@ubuntu:~$

まとめ

Docker ContainerにAPI Connectの導入から実行まで行った。
仮想イメージの導入よりも、かなり簡単に、API Connectの各コンポーネントの導入、構成ができた。
docker-compose を利用し、複数 Container がまとめて導入できるようになっている。

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6