ServiceFabric でカスタムイメージを利用する

こんにちは。小野寺です。

本日は Service Fabric で、カスタマイズした OS イメージをもとに環境を構築する (ARM テンプレートを使用する) 方法についてご案内します。
ただ、昨今様々な機能拡張がなされており、OS イメージのカスタマイズを行わずとも、コンテナーを使用することで要件を満たせるかもしれませんが、Service Fabric は ARM テンプレートを使うことでクラスタ設定のカスタマイズをより柔軟に行うことが可能です。本件を通してぜひ ARM テンプレートを使ったデプロイをお試しいただけますと幸いです。(カスタムイメージはすでに作成されているものとしますのでご承知おきください。)

[Azure Service Fabric の構成]

Azure Service Fabric を利用すると拡張性や信頼性の優れたアプリケーションを作成することができます。これは Service Fabric を構成している複数層にわたるサブシステムによるものです。

Azure Service Fabric ではこの Service Fabric の仕組みを Virtual Machine Scale Set 上に構築し、ご利用いただけるようにしています。(オンプレミス環境でも構築可能です。)

実際に Azure 上に Service Fabric クラスターをデプロイすると、以下のように、Service Fabric クラスターとともに Virtual Machine Scale Set もデプロイされます。 (Service Fabric ではノードと呼ばれます。)

そのため、Virtual Machine Scale Set  と同じように Azure Service Fabric でももちろんカスタムイメージを利用することが可能です。

[Azure Service Fabric の ARM テンプレートの取得]

とはいうものの、何もないところから、 Azure Service Fabric の ARM テンプレートを作成するのは至難の業です。そのため、Azure ポータルから、テンプレート JSON を取得してみましょう。

まずはポータルから Azure Service Fabric クラスターの作成を進めてみましょう。

  1. リソースの作成から Service Fabric クラスターを探します。
  2. そのまま、Service Fabric クラスターの作成の最終検証まで進めると、画面下部に テンプレートとパラメータのダウンロードというメニューが表示されます。
  3. テンプレートとパラメータの JSON が表示されますので、上部 ダウンロードからファイルをダウンロードしてください。

少し操作の手間はかかりますが上記手順を進めることで、実際に Service Fabric クラスターをデプロイしなくてもテンプレ―ト JSON が取得できました。

取得したテンプレート JSON を確認すると、Azure Service Fabric クラスターとともにデプロイされた Virtual Machine Scale Set では、ServiceFabricNode と呼ばれる extension がインストールされることがわかるかと思います。

つまり、VMSS と同じように カスタム OS イメージを作成しておき、ServiceFabricNode 拡張機能をインストール、VMSS の OS イメージでカスタムイメージが指定されていればよいということになります。

[カスタムイメージの登録とテンプレート JSON の修正]

まずは利用するカスタムイメージを登録します。イメージの登録については、下記 blog をご参照ください。

では、登録したカスタムイメージを利用するように、 ARM テンプレートを修正してみましょう。

~~ 念のため最新環境にて検証が終わり次第更新いたします ~~