このページでは、GKE 用に Cloud Storage FUSE CSI ドライバを設定して使用するための準備を行う方法について説明します。
Cloud Storage FUSE CSI ドライバを使用する手順は次のとおりです。
Cloud Storage バケットを作成する
まだ作成していない場合は、Cloud Storage バケットを作成します。これらのバケットは、GKE クラスタにボリュームとしてマウントします。パフォーマンスを改善するには、[ロケーション タイプ] を [リージョン] に設定し、GKE クラスタに一致するリージョンを選択します。
Cloud Storage FUSE の CSI ドライバを有効にする
GKE Autopilot クラスタまたは Standard クラスタを使用しているかどうかに応じて、次の手順を行います。フルマネージドの Kubernetes エクスペリエンスを実現するには、Autopilot クラスタを使用することをおすすめします。ワークロードに最適なモードを選択するには、GKE の運用モードを選択するをご覧ください。
Autopilot
Cloud Storage FUSE の CSI ドライバは、Autopilot クラスタでデフォルトで有効になっています。Cloud Storage バケットへのアクセスを構成するに進むことができます。
スタンダード
Standard クラスタで Cloud Storage FUSE CSI ドライバが有効になっている場合は、Cloud Storage バケットへのアクセスを構成するに進みます。
Cloud Storage FUSE の CSI ドライバが有効な Standard クラスタを作成するには、gcloud container clusters create
コマンドを使用します。
gcloud container clusters create CLUSTER_NAME \
--addons GcsFuseCsiDriver \
--cluster-version=VERSION \
--location=LOCATION \
--workload-pool=PROJECT_ID.svc.id.goog
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前。VERSION
: GKE のバージョン番号。 1.24 以降を選択する必要があります。LOCATION
: クラスタの Compute Engine のリージョンまたはゾーン。PROJECT_ID
: プロジェクト ID。
既存の Standard クラスタでドライバを有効にするには、[gcloud container clusters update
](/sdk/gcloud/reference/container/clusters/update)` コマンドを使用します。
gcloud container clusters update CLUSTER_NAME \
--update-addons GcsFuseCsiDriver=ENABLED \
--location=LOCATION
クラスタで Cloud Storage FUSE CSI ドライバが有効になっていることを確認するには、次のコマンドを実行します。
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--format="value(addonsConfig.gcsFuseCsiDriverConfig.enabled)"
Cloud Storage バケットへのアクセスを構成する
Cloud Storage FUSE CSI ドライバは Workload Identity Federation for GKE を使用するため、GKE Pod が Cloud Storage に保存されているデータにアクセスする方法についてきめ細かい権限を設定できます。
GKE クラスタから Cloud Storage バケットにアクセスできるようにするには、Pod 仕様でマウントする Cloud Storage バケットに対して Workload Identity Federation for GKE を使用して認証します。
- Workload Identity Federation for GKE が有効になっていない場合は、こちらの手順に沿って有効にします。
クラスタの認証情報を取得します。
gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
次のように置き換えます。
CLUSTER_NAME
: GKE 用 Workload Identity 連携が有効になっているクラスタの名前。LOCATION
: クラスタの Compute Engine のリージョンまたはゾーン。
Kubernetes ServiceAccount に使用する Namespace を作成します。
default
Namespace を使用することも、既存の Namespace を使用することもできます。kubectl create namespace NAMESPACE
NAMESPACE
は、Kubernetes ServiceAccount の Kubernetes Namespace の名前に置き換えます。アプリケーションで使用する Kubernetes ServiceAccount を作成します。また、
default
Kubernetes ServiceAccount を含む任意の Namespace で既存の Kubernetes ServiceAccount を使用することもできます。kubectl create serviceaccount KSA_NAME \ --namespace NAMESPACE
KSA_NAME
は、Kubernetes ServiceAccount の名前に置き換えます。Cloud Storage の IAM ロールのいずれかを Kubernetes ServiceAccount に付与します。Kubernetes ServiceAccount に特定の Cloud Storage バケットへのアクセスのみを許可する場合と、プロジェクト内のすべてのバケットへのグローバル アクセスを許可する場合に応じて、次の手順を行います。
特定のバケットへのアクセス
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \ --role "ROLE_NAME"
次のように置き換えます。
BUCKET_NAME
: Cloud Storage バケット名。PROJECT_NUMBER
: GKE クラスタの数値のプロジェクト番号。プロジェクト番号を確認するには、プロジェクトの識別をご覧ください。PROJECT_ID
: GKE クラスタのプロジェクト ID。NAMESPACE
: Kubernetes ServiceAccount の Kubernetes Namespace の名前。KSA_NAME
: 新しい Kubernetes ServiceAccount の名前。ROLE_NAME
: Kubernetes ServiceAccount に割り当てる IAM ロール。- 読み取り専用ワークロードの場合は、ストレージ オブジェクト閲覧者ロール(
roles/storage.objectViewer
)を使用します。 - 読み取り / 書き込みワークロードの場合は、Storage Object ユーザーロールを使用します(
roles/storage.objectUser
)。
- 読み取り専用ワークロードの場合は、ストレージ オブジェクト閲覧者ロール(
グローバル バケット アクセス
gcloud projects add-iam-policy-binding GCS_PROJECT \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \ --role "ROLE_NAME"
次のように置き換えます。
GCS_PROJECT
: Cloud Storage バケットのプロジェクト ID。PROJECT_NUMBER
: GKE クラスタの数値のプロジェクト番号。プロジェクト番号を確認するには、プロジェクトの識別をご覧ください。PROJECT_ID
: GKE クラスタのプロジェクト ID。NAMESPACE
: Kubernetes ServiceAccount の Kubernetes Namespace の名前。KSA_NAME
: 新しい Kubernetes ServiceAccount の名前。ROLE_NAME
: Kubernetes ServiceAccount に割り当てる IAM ロール。- 読み取り専用ワークロードの場合は、ストレージ オブジェクト閲覧者ロール(
roles/storage.objectViewer
)を使用します。 - 読み取り / 書き込みワークロードの場合は、Storage Object ユーザーロールを使用します(
roles/storage.objectUser
)。
- 読み取り専用ワークロードの場合は、ストレージ オブジェクト閲覧者ロール(
次のステップ
- Pod 仕様に沿ってバケットを指定することで、Cloud Storage バケットをマウントする方法について学習します。
- PersistentVolume リソースを使用して Cloud Storage バケットをマウントする方法を確認する。
- Workload Identity Federation for GKE を使用するようにアプリケーションを構成する方法の詳細