Karbon Platform Services ~NutanixによるマルチクラウドPaaS~ を使ってみる 前編


はじめに

概要

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!"をクリックします。

KPSのコントロールプレーンにログイン出来ました。

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-init
#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