金融記録、医療情報、AI モデルの重みなどの機密データを扱うワークロードを実行する場合、Intel® Trust Domain Extensions (Intel® TDX) を使用すると、アプリケーションのコードを変更することなく、ハードウェアレベルのメモリ隔離を実現できます。このトピックでは、Alibaba Cloud Container Service for Kubernetes (ACK) クラスターに Intel® TDX Confidential VM を利用したノードプールを作成し、そのプールにワークロードをデプロイする方法について説明します。
仕組み
Intel® TDX は、CPU ハードウェアベースのテクノロジーであり、ECS インスタンスにハードウェア支援の隔離と暗号化を提供して、CPU レジスタ、メモリデータ、割り込みインジェクションなどのランタイムデータを保護します。これにより、実行中のプロセスや機密データへの不正アクセスのリスクを低減します。
Intel® TDX Confidential VM を利用したノードプールは、ACK の標準的なスケーリングおよび管理機能と統合されています。既存のアプリケーションを、アプリケーションコードを変更することなく TDX 対応のノードプールに移行できます。
Intel® TDX の詳細については、「Intel® Trust Domain Extensions (Intel® TDX)」をご参照ください。
利用シーン
Intel® TDX Confidential VM ノードプールは、ハードウェアによるデータ隔離を必要とするワークロードに適しています。
金融リスク管理:トランザクション処理とリスクスコアリングデータをランタイムで保護
医療データのプライバシー:分析および推論中に患者データを隔離
AI 生成コンテンツ (AIGC) と大規模言語モデル (LLM) の推論とファインチューニング:使用中のモデルの重みとトレーニングデータを保護
コンフィデンシャルデータベース:データベースプロセスに対してハードウェアレベルの隔離を強制
ビッグデータアプリケーション:ハードウェアによる保証のもとで機密データセットを処理
次の図は、Intel® TDX と Intel® Advanced Matrix Extensions (AMX) がモデル推論ワークロードにエンドツーエンドのセキュリティを提供する方法を示しています。
サポートされる構成
TDX Confidential VM ノードプールには、次の制約が適用されます。
| 構成 | サポートされる値 |
|---|---|
| リージョン | 中国 (北京) のみ |
| ゾーン | ゾーン I |
| インスタンスタイプ | ecs.g8i.xlarge 以上 |
| オペレーティングシステム | Alibaba Cloud Linux 3.2104 LTS 64 ビット |
| ECS イメージタイプ | Confidential VM |
| Auto Scaling | この手順では対象外 (デフォルトで無効) |
その他の既知の問題と機能制限については、「既知の問題と機能制限」をご参照ください。
前提条件
開始する前に、次のものが揃っていることを確認してください。
中国 (北京) リージョンに ACK Pro クラスターがあること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
ACK コンソールと ECS コンソールの両方にアクセスできること
ステップ 1: ノードプールの作成
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。
右上隅にある [ノードプールの作成] をクリックします。次の表のパラメーターを設定し、[注文の確認] をクリックします。 [詳細オプション (オプション)] で、Pod のスケジューリングを簡素化するためにノードラベルを追加します。すべてのノードプールパラメーターの完全な説明については、「ノードプールの作成と管理」をご参照ください。
パラメーター 設定 vSwitch vSwitch を [ゾーン I] Auto Scaling 無効 (デフォルト) インスタンスタイプ g8i.xlarge 以上 予想ノード 0 (デフォルト) オペレーティングシステム Alibaba Cloud Linux 3.2104 LTS 64 ビット ラベルキー ラベル値 nodepool-labeltdx-vm-pool
ステップ 2: TDX が有効な ECS インスタンスの作成
TDX 対応 ECS インスタンスを作成する手順は、スタンダードインスタンスを作成する手順と類似しており、2 つのパラメーターが異なります。その他のすべてのパラメーターについては、「カスタム起動タブでインスタンスを作成する」をご参照ください。
ECS コンソールにログインします。左側のナビゲーションウィンドウで、[インスタンス & イメージ] > [インスタンス] を選択します。
上部のナビゲーションバーで、リソースのリージョンとリソースグループを選択します。

[インスタンスの作成] をクリックし、次のパラメーターを設定します。
パラメーター 設定 ネットワークとゾーン 北京ゾーン I を選択します。このゾーンでは、ecs.g8i.xlarge 以上のインスタンスタイプのみがサポートされます。 イメージ Confidential VM を選択し、次に Alibaba Cloud Linux 3.2104 LTS 64-bit を選択します。 プロンプトに従って残りの設定を完了し、インスタンスを作成します。
(オプション) ステップ 3: ECS インスタンスでの TDX ステータスの確認
ECS インスタンスにログインし、次のコマンドを実行して TDX がアクティブであることを確認します。
TDX が有効になっているか確認します。
lscpu | grep -i tdx_guest次の出力は、TDX が有効になっていることを示します。

TDX ドライバーがインストールされているか確認します。
ls -l /dev/tdx_guest次の出力は、TDX ドライバーがインストールされていることを示します。

ステップ 4: ECS インスタンスをノードプールに追加
ACK コンソールで、[クラスター] に移動し、クラスター名をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。
ノードプールの [操作] 列で、[その他] > [既存ノードの追加] を選択します。
[既存 ECS インスタンスの選択] ページで、[モード] を [自動] に設定し、ステップ 2 で作成した ECS インスタンスを選択し、プロンプトに従って設定を完了します。詳細については、「既存の ECS インスタンスの追加」をご参照ください。
ステップ 5: アプリケーションのデプロイ
TDX が有効なノードプールに Pod をデプロイします。nodeSelector フィールドはステップ 1 で追加したノードラベルをターゲットにし、Pod が TDX 対応ノードで実行されるようにします。
ACK コンソールを使用
ACK コンソールで、[クラスター] に移動し、クラスター名をクリックして、左側のナビゲーションウィンドウで [ワークロード] > [Pod] を選択します。
右上隅にある [YAML から作成] をクリックします。[サンプルテンプレート] を [カスタム] に設定し、次の YAML を貼り付けて、[作成] をクリックします。
apiVersion: v1 kind: Pod metadata: labels: name: pod-tdx-vm name: pod-tdx-vm spec: containers: - image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest name: hello command: - sh - -c - 'echo hello && sleep infinity' nodeSelector: # Pod を TDX 対応ノードにスケジューリングします nodepool-label: tdx-vm-pool「[Pods]」ページで、ポッドのステータスがRunningであることを確認します。
kubectl を使用
kubectl クライアントをクラスターに接続します。詳細については、「kubectl を使用した ACK クラスターへの接続」をご参照ください。
次の内容で
pod-tdx-vm.yamlという名前のファイルを作成します。apiVersion: v1 kind: Pod metadata: labels: name: pod-tdx-vm name: pod-tdx-vm spec: containers: - image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest name: hello command: - sh - -c - 'echo hello && sleep infinity' nodeSelector: # Pod を TDX 対応ノードにスケジューリングします nodepool-label: tdx-vm-poolPod をデプロイします。
kubectl apply -f pod-tdx-vm.yamlPod が実行中であることを確認します。
kubectl get pod pod-tdx-vm期待される出力:
NAME READY STATUS RESTARTS AGE pod-tdx-vm 1/1 Running 0 52sステータスが
Runningで、準備完了コンテナが1/1であれば、アプリケーションが TDX 対応ノードプールにデプロイされたことを確認できます。