Confidential GKE Node の使用

このページでは、Confidential Google Kubernetes Engine ノード機能の使用方法について説明します。Confidential GKE Node は、ワークロードに使用中データの暗号化機能を提供します。

概要

Confidential GKE Node は Compute Engine のConfidential VMs 上に構築され、VM の使用中のメモリの内容を暗号化します。Confidential GKE Node が有効なクラスタでは、すべてのノードに対して Confidential VMs の使用が自動的に適用されます。つまり、ノードは、ノード上で実行されるワークロードを含めて、使用中に暗号化されます。コントロール プレーンを可視化するには、アクセスの透明性を使用します。

Confidential GKE Node をデプロイするための追加料金は、Compute Engine Confidential VMs の料金を除き発生しません。ただし、Confidential GKE Node は、起動時に標準ノードよりわずかに多くのログデータを生成する場合があります。ログの料金については、Google Cloud のオペレーション スイートの料金をご覧ください。

対象

Confidential GKE Node は次の状況で使用できます。

  • Confidential GKE Node は、Rapid リリース チャンネルで GKE バージョン 1.18.6-gke.1600 以降で利用できます。
  • Confidential GKE Node は、N2D インスタンスを使用できるゾーンとリージョンで使用できます。
  • Confidential GKE Node は、Container-Optimized OSContainer-Optimized OS 上の containerd(cos_containerdで使用できます。
  • Confidential GKE Node では、ノードプール内でConfidential VMs を使用します。
  • Confidential VMs は、Compute Engine の N2D インスタンスでのみ使用できます。

始める前に

作業を始める前に、次のことを確認してください。

次のいずれかの方法で gcloud のデフォルトの設定を指定します。

  • gcloud init。デフォルトの設定全般を確認する場合に使用します。
  • gcloud config。プロジェクト ID、ゾーン、リージョンを個別に設定する場合に使用します。

gcloud init の使用

エラー One of [--zone, --region] must be supplied: Please specify location を受信した場合は、このセクションの内容を実施します。

  1. gcloud init を実行して、次の操作を行います。

    gcloud init

    リモート サーバーで SSH を使用している場合は、--console-only フラグを指定して、コマンドがブラウザを起動しないようにします。

    gcloud init --console-only
  2. 手順に従って gcloud を承認し、Google Cloud アカウントを使用します。
  3. 新しい構成を作成するか、既存の構成を選択します。
  4. Google Cloud プロジェクトを選択します。
  5. デフォルトの Compute Engine ゾーンを選択します。

gcloud config の使用

  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project project-id
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone compute-zone
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region compute-region
  • gcloud を最新バージョンに更新します。
    gcloud components update

新しいクラスタで Confidential GKE Node を有効にする

Confidential GKE Node を有効にして新しいクラスタを作成するには、gcloud コマンドライン ツールで --enable-confidential-nodes オプションを指定します。

gcloud beta container clusters create CLUSTER_NAME \
  --release-channel=rapid \
  --machine-type N2D_MACHINE_TYPE \
  --enable-confidential-nodes

次のように置き換えます。

  • CLUSTER_NAME: 新しいクラスタの名前。

  • --release-channel=rapid: リリース チャンネルは rapid である必要があります。

  • N2D_MACHINE_TYPE: クラスタのデフォルト ノードプールのマシンタイプ。N2d マシンタイプである必要があります。

Confidential GKE Node を使用してクラスタを作成すると、このクラスタ内で作成できるノードプールは機密ノードのみになります。

Confidential GKE Node が有効になっていることを確認する

クラスタが Confidential GKE Node を使用しているかを確認するには、gcloud コマンドライン ツールを使用して次のコマンドを実行します。

gcloud beta container clusters describe CLUSTER_NAME

Confidential GKE Node が有効化されていると、コマンドの出力に次の行が含まれます。

  confidentialNodes:
    enabled: true

ノードの機密性を検証するには、Compute Engine ログで個々のノードの証明書リリース イベントを確認します。詳細については、Cloud Monitoring を使用して Confidential VMs を検証するをご覧ください。

Confidential GKE Node でのアプリケーションの実行

Confidential Computing に対する Google のアプローチは、既存のアプリケーションを簡単にリフト&シフトできるようにすることです。現在実行しているすべての GKE ワークロードは、コードに一切変更を加えることなく、Confidential GKE Node 上で実行できます。

任意で、Confidential GKE Node を使用しているクラスタでのみワークロードを実行すべきことを宣言したい場合は、cloud.google.com/gke-confidential-nodes ノードセレクタを使用できます。このセレクタを使用する Pod の仕様の例を以下に示します。

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: my-confidential-app
    image: gcr.io/myproject/my-confidential-app
    nodeSelector: cloud.google.com/gke-confidential-nodes:true

制限事項

新しいクラスタで Confidential GKE Node を有効にする前に、次の制限事項を考慮してください。

  • 現在、Google Cloud Console を使用して Confidential GKE Node を含むクラスタを作成することはできません。代わりに gcloud コマンドライン ツールを使用してください。
  • 既存のクラスタで Confidential GKE Node を有効にすることはできません。
  • クラスタで GKE Confidential GKE ノードを有効にすると、無効にできなくなります。
  • Confidential GKE Node は GPU に対応していません。
  • Confidential GKE Node は、単一テナントノードに対応していません。
  • Confidential GKE Node は、ノード自動プロビジョニング機能に対応していません。
  • 現在、Confidential GKE Node が有効になっている場合、ローカル SSD または永続ディスクを追加できません。
  • Container-Optimized OS ノードのみがサポートされています。Ubuntu ノードと Windows ノードはサポートされていません。
  • コントロール プレーン(マスター)ノードの Confidential VMs はサポートされていません。

次のステップ