AWS Elastic Kubernetes Serviceを用いた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上の構成を表しているわけではありません。)

mceclip3.png

 

ツールの設定

  • Kubectlをインストールします。

  • Eksctlをインストールします。

  • Helmをインストールします。

    Helmのバージョンが3.2以上であることを確認してください。

    mceclip0.png
  • Dockerをインストールします。(CENM CLIを使用する場合に使用します。本手順では必須ではありません。)

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

    mceclip1.png

EKSをセットアップ

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

mceclip2.png

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

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

EFSをセットアップ

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

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

  1. EFSコンソールにて、「ファイルシステムの作成」をクリック
  2. 「カスタマイズ」をクリック

    1. ファイルシステムの名前を入力

    2. 「保存時のデータの暗号化を有効にする」のチェックを外す

    3. その他の項目を必要に応じて変更する

    4. 「次へ」ボタンをクリック

  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を以下のように編集します。

mceclip3.png

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

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

mceclip4.png

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

mceclip5.png

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

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

mceclip6.png

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

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

mceclip7.png

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

mceclip8.png

PodのステータスがCompleteまたはRunningになっていればデプロイ成功です。
ここでステータスが上記以外の場合は、以下のコマンドを実行し、Podの詳細情報を取得します。

mceclip9.png

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

mceclip1.png

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

mceclip10.png

 

CordaノードをCENMに参加する

上記手順でデプロイしたCENMの検証のため、自分のCordaノードをCENMに参加します。
※ここではCordaノードの準備については説明せず、各自でCordaノードを準備済みという前提で進めていきます。

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

mceclip11.png

<IDENTITY-MANAGER-IP>と<NETWORK-MAP-IP>はkubectl get svc コマンドで取得した、Identity ManagerとNetwork MapのIPを入力します。
次に、network-root-truststore.jks を Corda ノードにアップロードします。次のコマンドを使って、CENM Signing Service からローカルにダウンロードします。

mceclip12.png

取得したnetwork-root-truststore.jksをCordaノードのcertificates配下に配置します。
また、ローカルのCordaノードがOSSで実装されている場合、node.confに以下の記述が必要になります。

mceclip13.png

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

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

mceclip14.png

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

mceclip2.png
お疲れ様でした。

 

おわりに

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

 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています