PR

APIファーストの設計ツール「Apicurio」「Microcks」を使ってみよう!

2020年3月12日(木)
杉本 拓

Microcksのインストール

次に、APIのモックサーバーとして機能するOSSのMicrocksを紹介します。MicrocksはKubernetesに対応したAPIのモックを簡単に作成できるツールで、Apicurio Studioと連携させるとAPIの実装に入る前にAPIのプロトタイピングをより高速に行えるようになります。JenkinsやTekton用のプラグイン、CLIツールなども提供されており、モックを使用した開発を継続的インテグレーション(CI)のパイプラインに組み込むこともできます。

Microcksも公式サイトにインストール方法や使い方などが記載されているので、Microcksをインストールして実際に試してみましょう。MicrocksはKubernetes/OpenShift/Docker Compose上で動作しますが、ここではOpenShiftのデスクトップ版であるMinishiftを使ってローカルマシンにインストールします。MicrocksはOpenShiftのテンプレートとして提供されているので、OpenShift/Minishiftの環境があれば簡単にインストールできます。なお、Minishiftのインストール方法はOpenShiftのコミュニティサイトを参照ください。ここではOpenShift/Minishiftがインストールされている前提で進めます。

以下のコマンドでMicrocksをローカルのMinishift環境にインストールできますが、ホスト名のIPアドレスの部分は適宜自分の環境に合わせて変えてください。なお、このコマンドではKeycloakも含めたテンプレートを使用してインストールしていますが、別のテンプレートを使用して別途インストールされたKeycloakを使用することもできます。

$ oc login -u developer
$ oc new-project microcks --display-name="Microcks"
$ oc login -u system:admin
$ oc create -f https://raw.githubusercontent.com/microcks/microcks/master/install/openshift/openshift-ephemeral-full-template.yml -n openshift
$ oc new-app --template=microcks-ephemeral \
   --param=APP_ROUTE_HOSTNAME=microcks-microcks.192.168.99.100.nip.io \
   --param=KEYCLOAK_ROUTE_HOSTNAME=keycloak-microcks.192.168.99.100.nip.io \
   --param=OPENSHIFT_MASTER=https://192.168.99.100:8443 \
   --param=OPENSHIFT_OAUTH_CLIENT_NAME=microcks-client \
   --param=KEYCLOAK_ADMIN_USERNAME=admin \
   --param=KEYCLOAK_ADMIN_PASSWORD=password

Microcksのコンポーネントがデプロイされたら、OpenShiftの管理コンソール (https://:8443/console/)でMicrocksのプロジェクトにアクセスすると、microcksのSpringBootのPod、KeycloakのPod、Keycloak用のPostgreSQLのPod、MongoDBのPod、Postman-runtimeのPodが表示されます(図8)。

図8:microcksのSpringBoot、Keycloak、Keycloak用のPostgreSQL、MongoDB、Postman-runtimeのPodが表示される

MicrocksのデプロイによりOpenShiftのルートも自動的に作成され、http://microcks-microcks.192.168.99.100.nip.io のようなURLにアクセスするとMicrocksのログイン画面が表示されます(図9)(IPアドレスは環境によって異なるため、oc get routes コマンドで実際のルートを確認してください)。

図9:Microcksのログイン画面が表示される

デフォルトではKeycloak経由でOpenShiftの認証プロバイダと連携しており、OpenShift/Minishiftに登録されているユーザでログインできるようになっています。ここではMicrocksのログイン画面で[Openshift v3]のメニューをクリックし、developerユーザとしてEmail、First name、Last nameの情報でログインしてみましょう(図10)。

図10:developerユーザとしてEmail、First name、Last nameの情報でログイン

ログインすると、Microcksのダッシュボード画面が表示されます(図11)。

図11:Microcksのダッシュボード画面

Microcksではモック対象のAPI情報をMicrocksのリポジトリに格納しており、左側のメニューから[APIs | Services]を選択すると登録されているAPI(サービス)の一覧が表示されます。インストール直後は何も登録されていないため、左のメニューから[Importers]を選択してAPI(サービス)の情報を登録していきます。また、APIツールとして有名なPostmanやSoapUIで設定した内容をエクスポートして登録することもできます。ここではSoapUIで作成済みのHello REST APIの情報を取り込んでみましょう。[Importers]メニューが選択された画面で[Create]ボタンをクリックし、インポートジョブの情報を入力します(図12)。

図12:SoapUIで作成済みのHello REST APIの情報を取り込む

Name: Hello REST API
Repository URL:https://raw.githubusercontent.com/microcks/microcks/master/samples/HelloAPI-soapui-project.xml

[Next]ボタンを2回クリックし、[Create]ボタンをクリックするとインポートジョブが作成され、実行されます(図13)。

図13:インポートジョブが作成/実行される

インポートジョブが完了し、APIの情報がリポジトリに登録されると、[APIs | Services]の画面でそのAPIの情報が表示されます(図14)。

図14:インポートジョブ終了後に登録されたAPIの情報が表示される

APIの詳細情報ではHello REST APIのモックのURLを確認できるので、そのAPIをテストできるようになります(図15)。

図15:APIの詳細情報ではHello REST APIのモックのURLからテストも可能

試しに、作成されたHello REST APIのモックにcurlコマンドで実行してみると、ダミーのレスポンスが返ってきます。

$ curl http://microcks-microcks.192.168.64.100.nip.io/rest/Hello+API+Mock/0.8/v1/hello
{
	'name':'David',
	'greeting':'Hello David !'
}

また、MicrocksではKeycloakを使用してユーザの権限管理を行っています。oc get routesコマンドでKeycloakのルートを表示し、管理コンソールにログインしてみましょう。以下の例の場合はhttp://keycloak-microcks.192.168.64.100.nip.ioにアクセスします(ユーザIDとパスワードはMicrocksのインストール時にコマンド引数で指定した値、ここではadmin/passwordとなります)。

$ oc get routes
NAME       HOST/PORT                                PATH      SERVICES            PORT       TERMINATION   WILDCARD
keycloak   keycloak-microcks.192.168.64.100.nip.io             microcks-keycloak   keycloak                 None
microcks   microcks-microcks.192.168.64.100.nip.io             microcks            spring                   None

Keycloakの管理コンソールにログインし、Microcksレルムでdeveloperユーザを表示します(図16)。

図16:Keycloakの管理コンソールからMicrocksレルムでdeveloperユーザを表示

デフォルトではdeveloperユーザに管理者権限はないので、Microcksのリポジトリ(API情報やジョブの削除など)やユーザを管理できるように管理者権限を追加してみましょう。developerユーザを選択し、developerユーザの詳細設定画面のタブでRole Mappingsを選択します。Realm Rolesの[Available Roles]からadminをロールとして追加し、Client Rolesのドロップダウンリストからrealm-managementを、Available Rolesからmanage-usersを選択してロールとして追加します(図17)。

図17:developerユーザに管理者権限を追加する

権限を追加すると、Microcksの画面でも設定を削除したりユーザを管理したりできるようになります(図18、19)。

図18:Microcksの画面でも設定を削除したり…

図19:ユーザを管理したりできるようになる

レッドハット株式会社
外資系ソフトウェアベンダーにおいて、SOA、分散システム、アジャイル開発、デジタルマーケティング、コンテンツ管理などの分野でのコンサルティング業務に従事。2016年よりRed Hatにおいて、APIとインテグレーションのソリューションアーキテクトとしてクラウド時代のインテグレーションのあり方を提案し、導入のための支援を行っている。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています

APIファーストの設計ツール「Apicurio」「Microcks」を使ってみよう! | Think IT(シンクイット)

Think IT(シンクイット)

サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。