Logo
    Logo

    Search

    R3-Solana連携

    Blockchainトレンド

    Corda活用事例

    Corda技術

    おすすめ記事

    記事を探す

    その他

    お客様サポート

    SBI R3 Japan HP

    お問い合わせ

    AWS Elastic Kubernetes Serviceを用いたCENMデプロイガイド

    公開日
    Aug 26, 2021
    カテゴリ
    Corda技術を知る
    タグ
    🛠️Node運用🐝Kubernetes (k8s)
    筆者
    image
    icon
    この記事で学べること

    AWS上でKubernetesを用いたCENMのデプロイ・設定方法について理解できる。

    icon
    目次
    • はじめに
    • 必要環境
    • CENMをデプロイする
    • ツールの設定
    • EKSをセットアップ
    • EFSをセットアップ
    • CENMデプロイシェルをダウンロードする
    • EKSクラスタへEFSプロビジョナをデプロイする
    • CENMをブートストラップする
    • CordaノードをCENMに参加する
    • おわりに

    はじめに

    このデプロイガイドでは、AWSのElastic Kubernetes Service(以下、EKS)上にCorda Enterprise Network Manager(以下、CENM)をテストデプロイするための簡単な手順を紹介します。デプロイには、CENMのDockerイメージに付属するBashスクリプトとHelmテンプレートを使用します。

    なお、本手順はR3公式ドキュメントのCENM Deployment on AWSをベースに、CENMへのノード参加手順や一部記述を補記したものになります。

    必要環境

    • 有効なAWSサブスクリプション
    • Linux、MacOSまたはWindows用のUnix互換環境(CygwinやWSL等(デプロイには Bashスクリプトを使用するため))
    • CENMコマンドラインインタフェース(CLI)(CENMに接続し管理するために使用しますが、デプロイには必須ではありません。)

    CENMをデプロイする

    CENMのEKSへのデプロイは以下の手順で行います。

    本手順でデプロイを完了すると以下の構成のCENMが構築されます。(下記構成図は簡易的なものであり、正確に実際のAWS上の構成を表しているわけではありません。)

    image

    ツールの設定

    • Kubectlをインストールします。
    • Eksctlをインストールします。
    • Helmをインストールします。
    • Helmのバージョンが3.2以上であることを確認してください。

      image
    • Dockerをインストールします。(CENM CLIを使用する場合に使用します。本手順では必須ではありません。)
    • Docker HubからCENM CLIツールのイメージをダウンロードします。(本手順ではCENM CLIの使い方については説明していません。詳細はこちらをご確認ください。)
    image

    EKSをセットアップ

    EKSクラスターは最低でも10GBのメモリを必要とするため、適切なインスタンスとノード数を選択します。AWSコンソールからクラスターを管理できるように--managedオプションをつけてください。

    下記のコマンドはCENMをデプロイするEKSクラスターを構成するための一例です。必要に応じてオプションを変更してください。

    image

    各オプションの意味は以下の通りです。

    • -name クラスター名
    • -version k8sバージョン
    • -node-type ノードのEC2インスタンスタイプ(デフォルトはm5.large)
    • -node ノード数(デフォルトは2)
    • -managed マネージドコンソールでの管理有無
    • -region リージョンとAZ

    EFSをセットアップ

    パフォーマンスの観点からEFSは上記EKSと同じリージョンを選択することをお勧めします。

    EFSを以下の手順で設定します。

    1. EFSコンソールにて、「ファイルシステムの作成」をクリック
    2. 「カスタマイズ」をクリック
      1. ファイルシステムの名前を入力
      2. その他の項目を必要に応じて変更する
      3. 「次へ」ボタンをクリック
    3. ネットワーク
      1. EKSクラスタで使用しているのと同じVPCを選択する
      2. AZ:デフォルト
      3. サブネットID:デフォルト
      4. IPアドレス:デフォルト
      5. セキュリティグループ:上記で作成したEKSクラスターの設定タブ→ネットワーキングタブに遷移し、「クラスターセキュリティグループ」に記載されているセキュリティグループを選択する
      6. 「次へ」ボタンをクリック
    4. ファイルシステムポリシー
      1. 変更せずに、「次へ」ボタンをクリック

    EFSが作成されたら、アクセスポイントを作成する。

    1. 「アクセスポイント」を作成をクリック
      1. 名前を入力
      2. ルートディレクトリパス:/
      3. ユーザID:1000
      4. グループID:1000
      5. セカンダリセキュリティグループ:空のまま
      6. 所有者ユーザ:1000
      7. 所有者グループ:1000
      8. アクセス許可:0777
      9. 「アクセスポイントを作成」をクリック

    CENMデプロイシェルをダウンロードする

    以下のリポジトリをGithubからクローンしてきます。任意のバージョンを選択できますが、本手順ではv1.5を使用しています。

    CENM deployment repo

    EKSクラスタへEFSプロビジョナをデプロイする

    上記でクローンしてきたリポジトリ内のcenm-deployment/k8s/efs.yamlを以下のように編集します。

    image
    • [REGION]:EFSのリージョン
    • [EFS file system ID]:EFSのファイルシステムID(EFSのコンソールで確認できます。)

    下記コマンドを実行し、EFSプロビジョナを生成します。

    image

    下記コマンドを実行し、ストレージクラスを生成します。

    image

    CENMをブートストラップする

    CENMをブートストラップするには、/k8s/helm/bootstrap.cenm スクリプトを実行します。このスクリプトには --ACCEPT_LICENSE Y 引数が含まれていますが、これは必須であり、使用許諾契約書を読んで同意したことを確認するものです。

    image
    • ACCEPT_LICENSE [Y] :ブートストラッパーによるデプロイメントのライセンスに同意します。
    • h :ヘルプメッセージを出力します。
    • i|--idman [name] :既存のIdentity Managerサービスを指定します。
    • n|--notary [name] :既存のNotaryサービスを指定します。
    • p|--prefix [prefix] :Helmチャートのリリースプリフィックスを指定します。
    • m|--mpv [version] :ネットワークの最小プラットフォームバージョンを指定します。
    • a|--auto :上記の値を自動で補完します。

    今回は以下のコマンドでブートストラップします。

    image

    デプロイが完了するまで10分以上かかります。デプロイの状況について下記コマンドで確認できます。

    image

    PodのステータスがCompleteまたはRunningになっていればデプロイ成功です。

    ここでステータスが上記以外の場合は、以下のコマンドを実行し、Podの詳細情報を取得します。

    image

    下記のようなメッセージが表示された場合、ノードのメモリ不足だということが分かります。

    ※クラスタ作成時にインスタンスとしてデフォルトのm5.largeを選択した場合、本手順の構成では最低でもノードを4つ建てないとメモリ不足によりPodのデプロイに失敗するのでご注意ください。

    image

    既存の外部向けIPを使用する場合は、下記のコマンドでブートストラップします。

    image

    CordaノードをCENMに参加する

    上記手順でデプロイしたCENMの検証のため、自分のCordaノードをCENMに参加します。

    ※ここではCordaノードの準備については説明せず、各自でCordaノードを準備済みという前提で進めていきます。

    ノードをCENMに参加するために、node.confファイルに以下を追記します。

    image

    <IDENTITY-MANAGER-IP>と<NETWORK-MAP-IP>はkubectl get svcコマンドで取得した、Identity ManagerとNetwork MapのIPを入力します。

    次に、network-root-truststore.jks を Corda ノードにアップロードします。次のコマンドを使って、CENM Signing Service からローカルにダウンロードします。

    image

    取得したnetwork-root-truststore.jksをCordaノードのcertificates配下に配置します。

    また、ローカルのCordaノードがOSSで実装されている場合、node.confに以下の記述が必要になります。

    image
    • devMode=trueではCENMを利用できないので、falseに変更します。
    • networkService{}で参加するネットワークのエンドポイントIPを指定します。
    • デフォルトではCordapp JARsの署名者として許可されていない公開鍵リストにCorda開発鍵が含まれるためcordappSignerKeyFingerprintBlacklist=[]を指定することで、Corda開発鍵をCordapp JARsの署名者として許可します。Cordapp JARsを別途署名する場合は、こちらの方法をご参照ください。

    次に、Cordaコアのあるディレクトリで以下のコマンド実行し、CENMにノードを登録します。

    image

    以下のようなメッセージが表示されれば登録完了です。

    image

    お疲れ様でした。

    おわりに

    本ガイドではCENM deployment repoを使用した、CENMのEKSへのテストデプロイ手順について説明しました。本手順はCENM Deployment with Docker, Kubernetes, and Helm chartsとCENM Deployment on AWSベースに最短でCENMをEKSにデプロイできるよう構成したものです。より詳細を知りたい方は元の手順をご参照ください。また、CENMを構成する各コンポーネントについて深く知りたい方はこちらで詳しく説明されています。

    📬
    最後までお読みいただきありがとうございます。当社へのご質問・ご要望がございましたら、📪SBI R3 Japan お問い合わせフォーム📪よりお気軽にお問い合わせください!

    <ご質問・ご要望の例>

    • Corda Portalの記事について質問したい
    • ブロックチェーンを活用した新規事業を相談したい
    • 企業でのブロックチェーン活用方法を教えて欲しい 等々
    📢
    また、厳選されたCordaに関する最新情報をお伝えるするメールマガジンやX、当社主催のイベントコミュニティを運営しております。ぜひご登録ください。
    • Cordaメールマガジンに登録
    • X(旧Twitter)をフォロー
    • 弊社イベントコミュニティ(Connpass)に参加
    Logo

    © copyright SBI R3 Japan 2025

    GitHubYouTubeXFacebookLinkedIn