目次


ローカルの開発用 Hyperledger Composer REST サーバーにインターネット上でアクセスする

Secure Gateway を使用してローカル Hyperledger Composer REST サーバーにアクセスする

Comments

注: 現在、IBM Blockchain Platform では、開発に一貫して Hyperledger Fabric を使用するようになっています。ユーザーは任意で Hyperledger Composer を使用することもできますが、その場合、IBM は Hyperledger Composer のサポートを提供しません。

開発者がブロックチェーン・ソリューションを開発する際に迅速なスタートを切りたいと思ったら、ローカルの開発用システム上で Hyperledger Composer を使用することでその目的を果たせます。ビジネス・ネットワークを作成してローカルにデプロイした後、そのネットワークを公開する REST サーバーをデプロイすれば、フロントエンド・アプリケーションから容易にアクセスすることもできます。

けれども、ターゲットのフロントエンド・アプリケーションがモバイル・システム向けであったり ( Cloud Foundry アプリケーションや Docker コンテナーなど)、クラウド・ランタイム環境で実行されたりするときに、アプリがローカルのブロックチェーン・ビジネス・ネットワークにアクセスしなければならないとしたらどうなるでしょうか?別の言い方をすれば、概して、開発者はインターネットにはアクセスできてもインターネットからはアクセスできないホスト上でネットワーク・サービスを実行し、そのネットワーク・サービスとの接続を確立する方法を模索するものです。こうしたネットワーク・サービスは、ファイアウォールの背後で保護されるか、動的 IP アドレス上で実行される可能性が考えられます。

上述の問題は、インターネット・ベースのプロキシーを作成し、このプロキシーを使用して接続を受け入れてから、その接続を目的のサービスに転送することで解決できます。このチュートリアルで、IBM Secure Gateway Service を利用して Hyperledger Composer REST サーバー用にこのようなプロキシーを作成する方法を学んでください。

学習の目的

このチュートリアルを完了すると、ブロックチェーン・ビジネス・ネットワークの REST サーバーを作成する方法と、この REST サーバーをインターネット上でアクセス可能にする方法を理解できます。チュートリアルではまず、ローカル仮想マシン上で稼動する Hyperledger Composer を使用して単純なビジネス・ネットワークを構成する方法を説明します。次に、IBM Secure Gateway Service を利用して、仮想マシン上の REST サーバーへの接続をプロキシーする、インターネットからアクセスできるネットワーク・サービスを提供する方法を説明します。

前提条件

このチュートリアルに従うには、次のものが必要です。

このチュートリアルでは、Hyperledger Composer を使用してブロックチェーン・ビジネス・ネットワークを開発する部分については取り上げません。Hyperledger Composer でブロックチェーン・ビジネス・ネットワークを開発する方法について詳しくは、このリンク先の Hyperledger Composer チュートリアルを参照してください。

所要時間

このチュートリアルの手順を完了するには、約 30 ~ 45 時間かかります。目的のビジネス・ネットワークをゼロから作成する場合は、そのための時間を加算してください。

手順

これから説明する手順では、REST API エンドポイントとして Composer ビジネス・ネットワークに対応可能なローカル仮想マシン (VM) を作成します。まず、Vagrant を使用して Docker をサポートする VM を構成します。VM を構成した後は、このリンク先のチュートリアル「Installing the development environment」で説明している Hyperledger Composer のセットアップ手順に従ってローカル環境をセットアップします。ローカルの Composer REST サーバーが稼動中になったら、Secure Gateway インスタンスを構成して IBM Cloud 上で API を公開します。

Docker をサポートする VM を構成する

  1. プロジェクト用のディレクトリーを作成します。

    mkdir composer

  2. 作成したディレクトリーに、Vagrantfile の内容をコピーします。
  3. 作成したディレクトリーから、Vagrant イメージを起動します (起動するまでに時間がかかる場合があります)。

    vagrant up

  4. VM が起動したら、ログインして Hyperledger Fabric の構成を開始します。

    vagrant ssh

Hyperledger Fabric をセットアップする

  1. このリンク先のチュートリアル「Installing prerequisites」で説明している前提条件のセットアップ手順に従って、Ubuntu 用の Hyperledger Composer 環境をセットアップします。セットアップ手順は、VM 上の root ユーザーとしてではなく、一般ユーザーとして行ってください。exit を実行して vagrant からログアウトします。プロンプトが表示されたら vagrant ssh を実行して再接続します。
    chmod u+x prereqs-ubuntu.sh
    ./prereqs-ubuntu.sh
  2. 前提条件のインストールが完了したら、このリンク先のチュートリアル「Installing the development environment」で説明している手順に従って、Hyperledger Fabric ローカル開発環境をセットアップします。まずは CLI ツールをインストールするところから始めてください。
    npm install -g composer-rest-server@0.20
    npm install -g generator-hyperledger-composer@0.20
    npm install -g yo
  3. Composer Playground をインストールします。

    npm install -g composer-playground@0.20

  4. 任意:「Installing the development environment」のステップ 3 に従って、IDE をセットアップします。
  5. 「Installing the development environment」のステップ 4 に従って、Hyperledger Fabric Docker イメージをインストールします。
    curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
    tar -xvf fabric-dev-servers.tar.gz
    cd ~/fabric-dev-servers
    export FABRIC_VERSION=hlfv12
    ./downloadFabric.sh
  6. 「Installing the development environment」の「Controlling your dev environment」で説明している手順に進み、開発用 Fabric を起動して PeerAdmin カードを作成します。
    export FABRIC_VERSION=hlfv12
    ./startFabric.sh
    ./createPeerAdminCard.sh
  7. Composer 用の Web アプリ (「Playground」) を起動します。注: ドキュメントでの説明とは異なり、Web アプリを起動してもブラウザー・セッションは自動的に開始されません。このコマンドを実行しているのはワークステーション上ではなく、VM 内であるためです。

    composer-playground

    サービスが開始されたら、ブラウザーのタブで http://localhost:8080/ にナビゲートします (Vagrantfile 構成では、このローカル・ポートが VM にマッピングされています)。

  8. Composer Playground 内で通常どおりにビジネス・ネットワークを開発してテストします。Composer Playground を使用したことがない場合は、入門チュートリアルとして、このリンク先の「Playground Tutorial」をお勧めします。
  9. 目的のビジネス・ネットワークのテストが完了したら、ネットワーク所有者のカード (この例では admin@marbles-network) を指定して Composer REST サーバーをデプロイします。入力プロンプトに対するレスポンスの説明については、このリンク先のチュートリアル「Developer tutorial for creating a Hyperledger Composer solution」のステップ 5 を参照してください。同チュートリアルで説明されている Secure Gateway の接続手順は、次のオプションを使用してテストされています。
    composer-rest-server
    
    ? Enter the name of the business network card to use: admin@marbles-network
    ? Specify if you want namespaces in the generated REST API: always use namespaces
    ? Specify if you want to use an API key to secure the REST API: No
    ? Specify if you want to enable authentication for the REST API using Passport: No
    ? Specify if you want to enable the explorer test interface: Yes
    ? Specify a key if you want to enable dynamic logging:
    ? Specify if you want to enable event publication over WebSockets: Yes
    ? Specify if you want to enable TLS security for the REST API: No

    同じオプションを使用して REST サーバーを再起動するには、次のコマンドを実行します。

    composer-rest-server -c admin@marbles-network -n always -u true -w true
    
    Discovering types from business network definition ...
    Discovering the Returning Transactions..
    Discovered types from business network definition
    Generating schemas for all types in business network definition ...
    Generated schemas for all types in business network definition
    Adding schemas for all types to Loopback ...
    Added schemas for all types to Loopback
    Web server listening at: http://localhost:3000
    Browse your REST API at http://localhost:3000/explorer

    ターミナル内で REST サーバーを実行中のままにしてください。REST API サーバーを使い終わったら、ターミナル内で Ctrl-C キーを使用してサーバーを終了できます。

  10. REST API サーバーをテストするには、ブラウザー内で http://localhost:3000/explorer を開きます。

クラウド上で API を公開する Secure Gateway インスタンスを構成する

  1. IBM Cloud カタログを開き、Secure Gateway のエントリーを選択して、IBM Cloud アカウント内で Secure Gateway インスタンスを作成します。それには、有償アカウントまたはトライアル・プロモーション・コードが必要です。開発用 Hyperledger Fabric ネットワークのトラフィック転送を実装するには、月あたりのデータ転送量が 500 MB の Essentials サービス・プランで十分対応できます。このプランが選択されていることを確認してから「Create (作成)」をクリックします。
  2. Secure Gateway Service の詳細パネル内で「Add Gateway (ゲートウェイの追加)」をクリックします。表示されるパネル内で名前を入力します。例えば、「Blockchain」と入力します。他のゲートウェイ設定はデフォルトのままにします。つまり、「Requre security token to connect clients (クライアントへの接続にはセキュリティー・トークンが必要)」を選択し、「Token expriation (トークン有効期限)」を 90日に設定します。「Add Gateway (ゲートウェイの追加)」ボタンをクリックしてゲートウェイを作成します。
  3. Secure Gateway Service の詳細パネルに表示されている「Connect Client (クライアントの接続)」ボタンをクリックし、VM 上で稼動するクライアントをセットアップして、Secure Gateway Service に接続します。
  4. クライアントへの接続方法として「Docker」を選択し、表示される docker run コマンドをゲートウェイ ID とセキュリティー・トークンを含めてコピーします。
  5. 新しいローカル・ターミナル・ウィンドウを開き、カレント・ディレクトリーを Vagrantfile が格納されているフォルダーに変更してから、vagrant ssh を使用して VM に接続します。先ほどコピーした docker run コマンドをこのターミナル内に貼り付けて、Secure Gateway クライアントを起動します。CLI はターミナル内で実行中の状態にしておきます。このターミナルを閉じないでください。コンテナーが起動すると、接続が成功したことを伝えるメッセージが表示されます。次はそのメッセージの一例です。
    [2018-10-20 18:34:01.451] [INFO] (Client ID 1) No password provided. The UI will not require a password for access
    [2018-10-20 18:34:01.462] [WARN] (Client ID 1) UI Server started. The UI is not currently password protected
    [2018-10-20 18:34:01.463] [INFO] (Client ID 1) Visit localhost:9003/dashboard to view the UI.
    [2018-10-20 18:34:01.760] [INFO] (Client ID 11) Setting log level to INFO
    [2018-10-20 18:34:02.153] [INFO] (Client ID 11) The Secure Gateway tunnel is connected
    [2018-10-20 18:34:02.304] [INFO] (Client ID HxzoYUW6z74_PZ9) Your Client ID is HxzoYUW6z74_PZ9
    HxzoYUW6z74_PZ9>

    クライアントが起動したら、Secure Gateway Service の詳細を表示する Web UI パネルを閉じます。

  6. vagrant VM 上の別のターミナルで、ip address show コマンドを使用して VM の IP アドレスを確認します。多数のインターフェースがリストアップされます。その中から、enp または eth で始まるインターフェースを選択してください。以降の例で使用する VM の IP アドレスは 10.0.2.15 です。
  7. Secure Gateway クライアント Docker コンテナーのターミナルに戻り、acl エントリーを作成します。この ACL エントリーで、ポート 3000 上で実行中の Composer REST API サーバーへのトラフィックを許可します。

    acl allow 10.0.2.15:3000 1

  8. Secure Gateway Service を介した Composer REST API サーバーへの基本的な HTTP 接続を定義します。詳細なセキュリティー設定については、Secure Gateway のドキュメントを参照してください。Secure Gateway Service サービスの詳細パネルで「Destinations (宛先)」タブをクリックします。次に、「+」アイコンをクリックして「Add Destination (宛先の追加)」ウィザードを開きます。「Guided Setup (ガイド付きセットアップ)」を選択します。
  9. 「Where is your resource located? (リソースはどこにありますか?)」項目で、「On-premises (オンプレミス)」を選択してから「Next (次へ)」をクリックします。
  10. 「What is the host and port of your destination? (宛先のホストとポートを指定してください)」に対しては、ホスト名としてステップ 20 で確認した IP アドレス、ポートとして 3000 を入力します。入力し終わったら「Next (次へ)」をクリックします。
  11. 接続プロトコルとして「HTTP」を選択し、「Next (次へ)」をクリックします。
  12. 宛先の認証として「None (なし)」を選択し、「Next (次へ)」をクリックします。
  13. 「… make your destination private, add IP table rules below (宛先を非公開にするには、以下の IP テーブルにルールを追加します)」項目では IP アドレスとポートの入力は省略して、「Next (次へ)」をクリックします。
  14. 宛先の名前として「Composer REST server」のような名前を入力し、「Add Destination (宛先の追加)」をクリックします。
  15. 宛先が作成されると、その宛先のタイルを表す歯車アイコンが表示されるので、このアイコンをクリックして詳細を表示します。「Cloud Host : Port (クラウド内のホスト : ポート)」の値をコピーします (cap-sg-prd-2.integration.ibmcloud.com:17870 のような値になっています。このホストとポートは、アクセス可能な、クラウド内のエンドポイントです。トラフィックは、Secure Gateway Service によって、稼動中の Composer REST サーバーに転送されます。
  16. Web ブラウザー内で、ホストとポートの後に /explorer を続けた URL を開きます。例えば、最終的な URL は http://cap-sg-prd-2.integration.ibmcloud.com:17870/explorer/ のようになります。

まとめ

これで、Secure Gateway の宛先のホスト名とポートを使用して Composer REST サーバーにアクセスし、デプロイ済みのビジネス・ネットワーク内でアクションを実行する方法を把握できたはずです。このサーバーにはインターネットにアクセスできるシステムであれば、どのシステムからも到達できるので、開発とテストに使用するには最適ですが、本番環境には適していません。

クラウド内のエンドポイントにアクセスしなくても、(vagrant VM 内ではなく) ホスト上にローカルにアプリケーションをデプロイすることができます。Vagrantfile ではローカル・ポート 3000 を Composer REST サーバーにマッピングしています。このマッピングにより、http://localhost:8080/ エンドポイントを使用してアプリケーションをローカルで開発することができます。開発が完了してクラウドに (Cloud Foundry アプリケーションまたは Docker コンテナーとして) アプリケーションをデプロイするときに、エンドポイントをクラウドの URL (例えば、http://cap-sg-prd-2.integration.ibmcloud.com:17870/) に切り替えます。

Hyperledger Composer は、ビジネス・ネットワークへの基本的な Angular インターフェースを生成できます。そのための手順は、このリンク先のチュートリアル「Writing Web Applications」で説明しています。

DevOps を使用してこの Angular アプリケーションを Cloud Foundry にデプロイする方法については、このリンク先のチュートリアル「Continuously deploy your Angular application」を参照してください。このチュートリアルには、生成された Angular アプリケーションに応じて 2 つ変更しなければならない箇所があります。その 1 つは、プロジェクトの完全なコンテンツを使用するために、デリバリー・パイプラインのビルド・ステージでビルド・アーカイブ・ディレクトリーを空のままにすることです。もう 1 つの変更点として、このアプリケーションは環境から REST API エンドポイントを読み取るので、デリバリー・パイプラインのデプロイ・ステージで環境プロパティー REST_SERVER_URL にクラウド URL の値を追加する必要があります。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=1065800
ArticleTitle=ローカルの開発用 Hyperledger Composer REST サーバーにインターネット上でアクセスする
publish-date=05232019