はじめに
概要
Nutanixは2020年9月、Karbon Platform Services(KPS)を発表しました。これはKubernetesをベースとしたマルチクラウドPaaSを実現するものです。プレスリリースと製品紹介は以下をご覧ください。
プレスリリース
Karbon Platform Services製品紹介ページ
アーキテクチャ
アーキテクチャは下図で、以下のコンポーネントから成り立っています。
-
コントロールプレーン(紫の部分)
SaaSベースで開発者、管理者向けのUIを提供し、インフラとアプリケーションのライフサイクル管理をマルチテナントで提供しています。 -
サービスドメイン(黄緑の部分)
ベアメタル環境、Nutanix環境、VMware環境、パブリッククラウド環境とロケーションを選ばずKubernetesクラスタを展開し、その上にランタイム/ネットワーク/データ/可観測性の各領域における代表的な機能群のうち、管理者によって選択されたサービスを展開します。
管理画面の見え方はこちらです。プロジェクト(テナント)毎にどのようなプラットフォーム機能を有効化するのか選択できます。
メリット
開発者/運用者を、インフラを含めたユーティリティの管理業務から解放し、競争力の源泉となるアプリケーションを迅速、安全、継続的に本番環境へとデリバリすることで、組織のビジネスゴール達成を支援します。
ユニークな点
同じメリットを謳うKubernetesベースの製品は世にあまた存在していますが、以下がKPSのユニークな点です。
-
マルチクラウド対応
サービスドメインをあらゆる環境にデプロイし、SaaSコントロールプレーンから統合的に管理可能です。インフラの配置先をロックインしません。 -
グローバルデータパイプライン
あるサイトで発生するデータを、KPSのサービスドメインで処理した後、マルチクラウド対応のグローバルデータパイプラインを利用することでリアルタイムに転送可能です。技術要件やコスト要件に基づいて最適な場所にデータを配置出来ます。データの配置場所についてもロックインしません。 -
プラネットスケール
アプリケーション開発者が書いたコードをコントロールプレーンにアップロードすると、数千のサイトにアプリケーションの一斉配信が出来ます。REST API対応によりCI/CDパイプラインとの連携も可能です。 -
IoTエッジのユースケースに強い
ご存知の方もいらっしゃるかもしれませんが、KPSは以前、Xi IoTというIoTエッジに特化したソリューションで提供していたものを汎用的なPaaS製品としてリブランド致しました。上記の「グローバルデータパイプライン」、「プラネットスケール」はIoTユースケースのために実装されたものです。よって特にIoTエッジのユースケースに強みを持っています。
Nutanix Karbonとの違い
Nutanixに詳しい方は「Karbonってそもそもあったじゃん?」と疑問を持たれるかもしれませんが、KarbonとKPSはそれぞれ用途が異なる製品となっています。
下図左のNutanix KarbonはいわゆるKubernetes as a Service(KaaS)に位置付けられる製品であり、Nutanixクラスタ上において「Kubernetesクラスタのライフサイクル管理をシンプルに」する製品です。よって、ユーザアプリケーションやファンクションの実装にあたっては補完的なユーティリティ群を管理者が構築/管理運用を行う必要があります。ユーティリティ群のバージョンや詳細設計位に柔軟性があるメリットがある反面、管理者はそれぞれの構成要素の運用にリソースを投じ、安定稼働に責任を追わなくてはいけません。
一方、右のKPSはKubernetesベースのPaaSであり、インフラとしてのKubernetesクラスタや補完的なユーティリティの管理運用をまるっとプラットフォーム機能として抽象化、ビルトインされた形で提供します。これにより開発者や運用者はよりユーザアプリケーションやファンクションの実装や管理に集中出来ます。プラットフォーム機能に制限がある等、柔軟性にデメリットが出てくる可能性がある反面、俊敏性や管理者の生産性にメリットがあります。
これらのアプローチはどちらが良い悪いという議論ではなく、最終的なビジネスゴール、技術要件、コスト要件等を元に、これら2つの選択肢からベストなアプローチを決定されることを推奨致します。
本記事では
前置きが長くなりましたが、本記事ではこんなKPSをとりあえず使ってみることを目的に、始め方、Nutanix AHVにおけるサービスドメインの構築、サンプルのマイクロサービスアプリケーションの構築までを前後編に分けてご紹介致します。今回はその前編として、サービスドメインの構築までを行います。
構築手順
1. 事前準備
1-1. My Nutanixアカウントの作成
こちらにアクセスし、My Nutanixアカウントを作成します
1-2. AHV用イメージのURL取得
こちらにアクセスし、"Service Domain VM QCOW2 File for AHV"の右にある点3つアイコンをクリックするし、"Copy Download Link"をクリックします。My Nutanixへのログインが必要です。
1-3. イメージのアップロード
ご自身の環境のPrism Elementにアクセスし、"+イメージをアップロード"から以下入力し、"保存"をクリックします。
Name: お好きなイメージ名
Storage Container: イメージの格納先コンテナ
Image Source: "From URL"をクリックし、1-2で取得したダウンロードリンクをペーストします。
2. Karbon Platform Servicesを始める
2-1. KPSトライアルの開始
こちらにアクセスし、"Karbon Platform Services"の下の"Start Trial"をクリックします。(画像はLaunchとなっていますが、新規アカウントの場合、Start Trialとなっています。)
下記画像のようなWelcomeメッセージが現れます。"Get Started"をクリックします。
更新情報が現れます。"OK, Got it!"をクリックします。
3. サービスドメイン構築
3-1. サービスドメインのベースとなる仮想マシンの構築
Nutanix上においてサービスドメインと呼ばれる、Kubernetesクラスタのベースとなる仮想マシンを起動します。Prism Elementにログインし、"仮想マシン" -> "+仮想マシンを作成"の順で進めます。
Name: お好きな仮想マシン名を入力
vCPU(s): 8
Number of Cores Per vCPU: 1
Memory: 16 GiB
Disk: "+Add New Disk"を選択後、以下入力し、"Add"
タイプ: DISK
オペレーション: イメージサービスからクローン
バスタイプ: SCSI
イメージ: 1-3でアップロードしたイメージを選択
Boot Configuration: Legacy BIOS
Network Adapters (NIC): "+Add New NIC"から接続させるネットワークを選択
Custom Script: チェックを有効化
Type Or Paste Script: 以下を入力
#cloud-config
final_message: "cloud-config completed"
仮想マシンが電源オフ状態で作成されますので、"Power On"をクリックして電源をオンにします。
電源が上がりました。このとき、"IP Address"カラムからこの仮想マシンのIPアドレスを確認します。
3-2. 仮想マシンの起動とシリアル番号確認
ブラウザから、http://(3-1で作成した仮想マシンのIPアドレス):8080/v1/sn
にアクセスすると、以下画像のような画面が現れれば、仮想マシンの起動が確認出来ます。これを後のステップで使用するため、タブを消さないで残しておきます。
3-3. 複数ノードのサービスドメインを作成したいときは...
このまま進むと、単一ノードのサービスドメイン(=Kubernetesクラスタ)が作成されますが、複数ノードによるサービスドメインを作成することも可能です。その場合、3-1,3-2のステップをノード数分繰り返します。注意: トライアルにおいては最大3ノード分のサービスドメイン作成のみとなっていますので、ご注意下さい。
3-4. KPSコントロールプレーンへのサービスドメイン登録
KPSにログインし、中央の"+Add Service Domain"をクリックします。
以下入力し、"Next"をクリックします。
Name: サービスドメインの名前
Type: 単一ノードのサービスドメインであれば"Single-Node", 複数ノードであれば"Multi-Node"
Node Details:
作成した仮想マシンそれぞれについて、以下入力し、チェックをクリックします。
Serial Number: 3-2で取得したシリアル番号を入力
IP Address: IPアドレスを入力
Gateway: デフォルトゲートウェイのIPアドレスを入力
Subnet: サブネットマスクを入力
Add Categories: KPSではカテゴリーという属性情報を使用してスケーラブルなリソース管理が可能ですが、こちらではカテゴリーを付与せずに進めます。
以下入力し、"Add"をクリックします。
Environment Variables: サービスドメインに固有の環境変数を設定し、Kubernetesアプリケーションから参照して利用する事ができますが、ここでは設定せずに進めます。
GPU Usage: もしあなたのサービスドメインが(v)GPUを搭載している場合、その利用方法を選択できます。Kubernetes AppやデータパイプラインでGPUを使用する場合は"Use GPU for Kubernetes Apps and Data Pipelines"を、AI学習モデル管理機能を用いてGPUを使用する場合は"Use GPU for AI Inferencing"を選択します。ここではGPUを搭載していませんが、"Use GPU for Kubernetes Apps and Data Pipelines"を選んで進めます。
SSH Access: 通常サービスドメインへのアクセスは認められてませんが、要件上、あるいはトラブルシューティング等特別な理由でNutanixより権限付与されたユーザについてはチェックを有効化することでサービスドメインじへのSSHアクセスが可能となります。
サービスドメインの登録が完了し、"Not Onboarded"状態となります。
15~20分ほど待機すると、"Healthy"状態となります。
以上でサービスドメインの登録が完了しました。前編はここまでで、次回後編としてサンプルアプリケーションのデプロイを行っていきます。
参考文献
IoTユースケースについてはこちらのブログが詳しいです。
開発チームブログ1
開発チームブログ2
開発チームがホストしているGithub