第3章 IBM Z および IBM LinuxONE への機密コンテナーのデプロイ
IBM Z® および IBM® LinuxONE 上で実行される Red Hat OpenShift Container Platform クラスターに機密コンテナーのワークロードをデプロイできます。
IBM Z® および IBM® LinuxONE 上の機密コンテナーは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
3.1. 準備 リンクのコピーリンクがクリップボードにコピーされました!
機密コンテナーを IBM Z® および IBM® LinuxONE にデプロイする前に、これらの前提条件と概念を確認してください。
IBM® Hyper Protect Confidential Container (HPCC) for Red Hat OpenShift Container Platform が実稼働対応になりました。HPCC は、マルチパーティー Hyper Protect Contract、デプロイメントアテステーション、コンテナーランタイムと OCI イメージの整合性の検証を提供することで、エンタープライズ規模での Confidential Computing テクノロジーを実現します。
HPCC は、IBM Z17® および IBM® LinuxONE Emperor 5 でサポートされています。詳細は、IBM HPCC のドキュメント を参照してください。
3.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 機密コンテナーのワークロードを実行しているクラスターに、最新バージョンの Red Hat OpenShift Container Platform がインストールされている。
- 高信頼環境内の OpenShift Container Platform クラスターに Red Hat build of Trustee をデプロイした。詳細は、Red Hat build of Trustee のデプロイ を参照してください。
- LinuxONE Emperor 4 を使用している。
- 論理パーティション (LPAR) で Secure Unpack Facility を有効化している。これは、IBM Secure Execution に必要です。詳細は、Enabling the KVM host for IBM Secure Execution を参照してください。
3.1.2. ピア Pod のリソース要件 リンクのコピーリンクがクリップボードにコピーされました!
クラスターに十分なリソースがあることを確認する。
ピア Pod 仮想マシン (VM) には、次の 2 つの場所にリソースが必要です。
-
ワーカーノード。ワーカーノードは、メタデータ、Kata shim リソース (
containerd-shim-kata-v2)、リモートハイパーバイザーリソース (cloud-api-adaptor)、およびワーカーノードとピア Pod VM 間のトンネル設定を保存します。 - クラウドインスタンス。これは、クラウド内で実行されている実際のピア Pod VM です。
Kubernetes ワーカーノードで使用される CPU およびメモリーリソースは、ピア Pod の作成に使用される RuntimeClass (kata-remote) 定義に含まれる Pod オーバーヘッド によって処理されます。
クラウド内で実行されているピア Pod VM の合計数は、Kubernetes ノード拡張リソースとして定義されます。この制限はノードごとに設定され、peer-pods-cm config map の PEERPODS_LIMIT_PER_NODE 属性によって設定されます。
拡張リソースの名前は kata.peerpods.io/vm で、Kubernetes スケジューラーが容量の追跡とアカウンティングを処理できるようにします。
OpenShift sandboxed containers Operator のインストール後に、環境の要件に基づいてノードごとの制限を編集できます。
mutating Webhook により、拡張リソース kata.peerpods.io/vm が Pod 仕様に追加されます。また、リソース固有のエントリーが存在する場合は、Pod 仕様から削除されます。こうすることで、Kubernetes スケジューラーがこれらの拡張リソースを考慮できるようになり、リソースが利用可能な場合にのみピア Pod がスケジュールされるようになります。
mutating Webhook は、次のように Kubernetes Pod を変更します。
-
mutating Webhook は、
TARGET_RUNTIME_CLASS環境変数で指定されたRuntimeClassNameの想定値であるか、Pod をチェックします。Pod 仕様の値がTARGET_RUNTIME_CLASSの値と一致しない場合、Webhook は Pod を変更せずに終了します。 RuntimeClassNameの値が一致する場合、Webhook は Pod 仕様に次の変更を加えます。-
この Webhook は、Pod 内のすべてのコンテナーおよび初期化コンテナーの
resourcesフィールドからすべてのリソース仕様を削除します。 -
Webhook は、Pod 内の最初のコンテナーのリソースフィールドを変更して、拡張リソース (
kata.peerpods.io/vm) を仕様に追加します。拡張リソースkata.peerpods.io/vmは Kubernetes スケジューラーによってアカウンティング目的で使用されます。
-
この Webhook は、Pod 内のすべてのコンテナーおよび初期化コンテナーの
mutating Webhook は、OpenShift Container Platform の特定のシステム namespace が変更されないように除外します。これらのシステム namespace でピア Pod が作成された場合、Pod の仕様に拡張リソースが含まれていない限り、Kubernetes 拡張リソースを使用したリソースアカウンティングは機能しません。
ベストプラクティスとして、特定の namespace でのみピア Pod の作成を許可するクラスター全体のポリシーを定義します。
3.1.3. Initdata リンクのコピーリンクがクリップボードにコピーされました!
initdata 仕様は、実行時に機密データまたはワークロード固有のデータを使用してピア Pod を初期化する柔軟な方法を提供し、そのようなデータを仮想マシン (VM) イメージに埋め込む必要性を回避します。このアプローチにより、機密情報の漏洩が減り、セキュリティーが強化され、カスタムイメージビルドがなくなることで柔軟性が向上します。たとえば、initdata には次の 3 つの設定を含めることができます。
- セキュアな通信のための X.509 証明書。
- 認証用の暗号化キー。
-
許容的なデフォルトの Kata エージェントポリシーをオーバーライドする際に実行時の動作を強制するため、オプションの Kata エージェント
policy.regoファイル。
initdata コンテンツは次のコンポーネントを設定します。
- Attestation Agent (AA) は、アテステーションのためにエビデンスを送信することで、ピア Pod の信頼性を検証します。
- Confidential Data Hub (CDH) は、ピア Pod 仮想マシン内の秘密とセキュアなデータアクセスを管理します。
- Kata エージェントは、ランタイムポリシーを適用し、Pod 仮想マシン内のコンテナーのライフサイクルを管理します。
initdata.toml ファイルを作成し、それを gzip 形式の Base64 エンコード文字列に変換します。この initdata の文字列を、次のいずれかの方法でワークロードに適用します。
-
グローバル設定: ピア Pod の config map で
INITDATAキーの値として initdata 文字列を追加して、すべてのピア Pod のデフォルト設定を作成します。 Pod 設定: initdata 文字列を Pod マニフェストにアノテーションとして追加します。これにより、個々のワークロードのカスタマイズが可能になります。
注記Pod マニフェスト内の initdata アノテーションは、その特定の Pod に対して、ピア Pod の config map 内のグローバルな
INITDATA値をオーバーライドします。Kata ランタイムは、Pod の作成時にこの優先順位を自動的に処理します。