5.6. Google Cloud Filestore CSI Driver Operator
5.6.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dedicated は、Google Compute Platform (GCP) Filestore Storage の Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。
CSI Operator およびドライバーを使用する場合は、永続ストレージ および CSI ボリュームの設定 を理解しておくことが推奨されます。
Google Cloud Filestore のストレージアセットにマウントする、CSI によってプロビジョニングされた PV を作成するために、openshift-cluster-csi-drivers namespace に、Google Cloud Filestore CSI Driver Operator と Google Cloud Filestore CSI Driver をインストールします。
- Google Cloud Filestore CSI Driver Operator は、デフォルトではストレージクラスを提供しませんが、必要に応じて作成 できます。Google Cloud Filestore CSI Driver Operator は、ストレージボリュームをオンデマンドで作成可能にすることで、動的なボリュームプロビジョニングをサポートしています。これにより、クラスター管理者がストレージを事前にプロビジョニングする必要がなくなります。
- Google Cloud Filestore CSI ドライバー を使用すると、Google Cloud Filestore PV を作成してマウントできます。
OpenShift Dedicated Google Cloud Filestore は Workload Identity をサポートします。これにより、ユーザーはサービスアカウントキーの代わりにフェデレーションアイデンティティーを使用して Google Cloud リソースにアクセスできます。GCP Workload Identity は、インストール時にグローバルに有効にしてから、Google Cloud Filestore CSI Driver Operator 用に設定する必要があります。
5.6.2. CSI について リンクのコピーリンクがクリップボードにコピーされました!
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。
CSI Operator は、in-tree ボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Dedicated ユーザーに付与します。
5.6.3. Google Cloud Filestore CSI Driver Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
5.6.3.1. Workload Identity を使用して Google Cloud Filestore CSI Driver Operator をインストールする準備 リンクのコピーリンクがクリップボードにコピーされました!
GCP Workload Identity を Google Compute Platform Filestore とともに使用する予定の場合は、Google Cloud Filestore Container Storage Interface (CSI) Driver Operator のインストール中に使用する特定のパラメーターを取得する必要があります。
前提条件
- cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
手順
Workload Identity を使用して Google Cloud Filestore CSI Driver Operator をインストールする準備をするには、以下を実行します。
プロジェクト番号を取得します。
以下のコマンドを実行してプロジェクト ID を取得します。
$ export PROJECT_ID=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.gcp.projectID}')以下のコマンドを実行し、プロジェクト ID を使用してプロジェクト番号を取得します。
$ gcloud projects describe $PROJECT_ID --format="value(projectNumber)"
ID プール ID とプロバイダー ID を検索します。
クラスターのインストール中に、これらのリソースの名前は、
--name parameterを使用して Cloud Credential Operator ユーティリティー (ccoctl) に渡されます。「Cloud Credential Operator ユーティリティーを使用した Google Cloud リソースの作成」を参照してください。Google Cloud Filestore Operator 用の Workload Identity リソースを作成します。
次のサンプルファイルを使用して
CredentialsRequestファイルを作成します。Credentials Request YAML ファイルの例
apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: openshift-gcp-filestore-csi-driver-operator namespace: openshift-cloud-credential-operator annotations: include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" spec: serviceAccountNames: - gcp-filestore-csi-driver-operator - gcp-filestore-csi-driver-controller-sa secretRef: name: gcp-filestore-cloud-credentials namespace: openshift-cluster-csi-drivers providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: GCPProviderSpec predefinedRoles: - roles/file.editor - roles/resourcemanager.tagUser skipServiceCheck: true次のコマンドを実行して、
CredentialsRequestファイルを使用して Google Cloud サービスアカウントを作成します。$ ./ccoctl gcp create-service-accounts --name=<filestore-service-account> \1 --workload-identity-pool=<workload-identity-pool> \2 --workload-identity-provider=<workload-identity-provider> \3 --project=<project-id> \4 --credentials-requests-dir=/tmp/credreq5 出力例
2025/02/10 17:47:39 Credentials loaded from gcloud CLI defaults 2025/02/10 17:47:42 IAM service account filestore-service-account-openshift-gcp-filestore-csi-driver-operator created 2025/02/10 17:47:44 Unable to add predefined roles to IAM service account, retrying... 2025/02/10 17:47:59 Updated policy bindings for IAM service account filestore-service-account-openshift-gcp-filestore-csi-driver-operator 2025/02/10 17:47:59 Saved credentials configuration to: /tmp/install-dir/1 openshift-cluster-csi-drivers-gcp-filestore-cloud-credentials-credentials.yaml- 1
- 現在のディレクトリー。
次のコマンドを実行して、新しく作成されたサービスアカウントのサービスアカウントメールを見つけます。
$ cat /tmp/install-dir/manifests/openshift-cluster-csi-drivers-gcp-filestore-cloud-credentials-credentials.yaml | yq '.data["service_account.json"]' | base64 -d | jq '.service_account_impersonation_url'出力例
https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/filestore-se-openshift-g-ch8cm@openshift-gce-devel.iam.gserviceaccount.com:generateAccessTokenこの出力例では、サービスアカウントのメールは
filestore-se-openshift-g-ch8cm@openshift-gce-devel.iam.gserviceaccount.comです。
結果
これで、Google Cloud Filestore CSI Driver Operator をインストールするために必要な次のパラメーターの準備ができました。
- プロジェクト番号 - ステップ 1.b
- プール ID - ステップ 2
- プロバイダー ID - ステップ 2
- サービスアカウントのメールアドレス - ステップ 3.c
5.6.3.2. Google Cloud Filestore CSI Driver Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Google Compute Platform (Google Cloud) の Filestore Container Storage Interface (CSI) Driver Operator は OpenShift Dedicated にインストールされません。クラスターに Google Cloud Filestore CSI Driver Operator をインストールするには、次の手順を使用します。
前提条件
- OpenShift Dedicated Web コンソールへアクセスできる。
- GCP Workload Identity を使用する場合は、GCP Workload Identity の特定のパラメーターがある。前述のセクション Workload Identity を使用して Google Cloud Filestore CSI Driver Operator をインストールする準備 を参照してください。
手順
Web コンソールから Google Cloud Filestore CSI Driver Operator をインストールするには、以下を実行します。
- OpenShift Cluster Manager にログインします。
- クラスターを選択します。
- Open console をクリックし、認証情報を使用してログインします。
次のコマンドを実行して、GCE プロジェクトで Filestore API を有効にします。
$ gcloud services enable file.googleapis.com --project <my_gce_project>1 - 1
<my_gce_project>を Google Cloud プロジェクトに置き換えます。
これは、Google Cloud Web コンソールを使用して行うこともできます。
Google Cloud Filestore CSI Operator をインストールします。
-
Ecosystem
Software Catalog をクリックします。 - フィルターボックスに Google Cloud Filestore と入力して、Google Cloud Filestore CSI Operator を見つけます。
- Google Cloud Filestore CSI Driver Operator ボタンをクリックします。
- Google Cloud Filestore CSI Driver Operator ページで、Install をクリックします。
Install Operator のページで、以下のことを確認してください。
- All namespaces on the cluster (default) が選択されている。
Installed Namespace が openshift-cluster-csi-drivers に設定されている。
GCP Workload Identity を使用する場合は、Workload Identity を使用した Google Cloud Filestore CSI Driver Operator のインストールの準備 セクションの手順で取得した次のフィールドの値を入力します。
- Google Cloud Project Number
- Google Cloud Pool ID
- Google Cloud Provider ID
- Google Cloud Service Account Email
Install をクリックします。
インストールが完了すると、Google Cloud Filestore CSI Operator が Web コンソールの Installed Operators セクションに表示されます。
-
Ecosystem
Google Cloud Filestore CSI Driver をインストールします。
-
administration
CustomResourceDefinitions ClusterCSIDriver をクリックします。 Instances タブで Create ClusterCSIDriver をクリックします。
以下の YAML ファイルを使用します。
apiVersion: operator.openshift.io/v1 kind: ClusterCSIDriver metadata: name: filestore.csi.storage.gke.io spec: managementState: Managed- Create をクリックします。
以下の条件が "true" に変わるのを待ちます。
- GCPFilestoreDriverCredentialsRequestControllerAvailable
- GCPFilestoreDriverNodeServiceControllerAvailable
- GCPFilestoreDriverControllerServiceControllerAvailable
-
administration
5.6.4. GCP Filestore Storage のストレージクラスの作成 リンクのコピーリンクがクリップボードにコピーされました!
Operator をインストールしたら、Google Compute Platform (GCP) Filestore ボリュームの動的プロビジョニング用のストレージクラスを作成する必要があります。
前提条件
- 実行中の OpenShift Dedicated クラスターにログインしている。
手順
ストレージクラスを作成するには、以下を行います。
次のサンプル YAML ファイルを使用してストレージクラスを作成します。
サンプル YAML ファイル
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: filestore-csi provisioner: filestore.csi.storage.gke.io parameters: connect-mode: DIRECT_PEERING1 network: network-name2 allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumerFilestore インスタンスを作成する VPC ネットワークの名前を指定します。
Filestore インスタンスを作成する VPC ネットワークを指定することを推奨します。VPC ネットワークが指定されていないと、Container Storage Interface (CSI) ドライバーは、プロジェクトのデフォルト VPC ネットワークにインスタンスを作成しようとします。
IPI インストールでは、VPC ネットワーク名は通常、クラスター名に接尾辞 "-network" を付けたものです。ただし、UPI インストールでは、VPC ネットワーク名はユーザーが選択した任意の値にすることができます。
共有 VPC (
connect-mode=PRIVATE_SERVICE_ACCESS) の場合、ネットワークは完全な VPC 名である必要があります。たとえばprojects/shared-vpc-name/global/networks/gcp-filestore-networkです。次のコマンドを使用して
MachineSetsオブジェクトを調べると、VPC ネットワーク名を確認できます。$ oc -n openshift-machine-api get machinesets -o yaml | grep "network:" - network: gcp-filestore-network (...)この例では、このクラスターの VPC ネットワーク名は "gcp-filestore-network" です。
5.6.5. NFS エクスポートオプション リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Filestore インスタンスは、同じ Google Cloud プロジェクトと Virtual Private Cloud (VPC) ネットワークを共有するすべてのクライアントにルートレベルの読み取り/書き込みアクセス権を付与します。ネットワークファイルシステム (NFS) エクスポートオプションを使用すると、Filestore インスタンスの特定の IP 範囲と特定のユーザー/グループ ID へのアクセスを制限できます。ストレージクラスを作成するときに、nfs-export-options-on-create パラメーターを使用して、これらのオプションを設定できます。
前提条件
- cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
- Google Cloud Filestore CSI Driver Operator と Google Cloud Filestore CSI Driver がインストールされている。
手順
次のサンプル YAML ファイルのようなファイルを使用してストレージクラスを作成します。
注記ストレージクラスの作成の詳細は、GCP Filestore Operator のストレージクラスの作成 セクションを参照してください。
NFS エクスポートオプションが含まれるストレージクラス YAML ファイルの例
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: SC-name provisioner: filestore.csi.storage.gke.io parameters: connect-mode: DIRECT_PEERING network: project-network nfs-export-options-on-create: '[1 { "accessMode": "READ_WRITE",2 "squashMode": "NO_ROOT_SQUASH",3 "anonUid": 655344 "anonGid": 655345 "ipRanges": [6 "10.0.0.0/16" ] }]' allowVolumeExpansion: true- 1
- NFS エクスポートオプションパラメーター
- 2
- Access mode: エクスポートされたディレクトリーに対する読み取り要求のみを許可する
READ_ONLY、または読み取り要求と書き込み要求の両方を許可するREAD_WRITEのいずれか。デフォルトはREAD_WRITEです。 - 3
- Squash mode: エクスポートされたディレクトリーでのルートアクセスを許可する
NO_ROOT_SQUASH、またはルートアクセスを許可しない ROOT_SQUASH のいずれか。デフォルトはNO_ROOT_SQUASHです。 - 4
- AnonUid: 匿名ユーザー ID を表す整数。デフォルト値は 65534 です。
AnonUidは、squashModeをROOT_SQUASHに設定した場合にのみ設定できます。それ以外の場合は、エラーが発生します。 - 5
- AnonGid: 匿名グループ ID を表す整数。デフォルト値は 65534 です。
AnonGidは、squashModeがROOT_SQUASHに設定されている場合にのみ設定できます。それ以外の場合は、エラーが発生します。 - 6
- IP ranges: ファイル共有をマウントできる、{octet1}.{octet2}.{octet3}.{octet4} 形式の IPv4 アドレスのリスト、または {octet1}.{octet2}.{octet3}.{octet4}/{mask size} 形式の CIDR 範囲のリスト。NfsExportOptions 内および NfsExportOptions 間で重複する IP 範囲は許可されません。許可されない場合、エラーが返されます。すべての NFS エクスポートオプションで、
FileShareConfigごとの IP 範囲またはアドレスは 64 個に制限されています。
5.6.6. クラスターと GCP Filestore の破棄 リンクのコピーリンクがクリップボードにコピーされました!
通常、クラスターを破棄すると、OpenShift Dedicated インストーラーはそのクラスターに属するすべてのクラウドリソースを削除します。ただし、Google Compute Platform (GCP) Filestore リソースの特殊な性質により、自動クリーンアッププロセスでは、すべてのリソースが削除されない場合がまれに発生します。
したがって、Red Hat では、アンインストールプロセスによってクラスター所有のすべての Filestore リソースが削除済みであることを確認するよう推奨しています。
手順
すべての GCP Filestore PVC が削除済みであるこを確認するには、以下を実行します。
- GUI または CLI を使用して Google Cloud アカウントにアクセスします。
kubernetes-io-cluster-${CLUSTER_ID}=ownedラベルを持つリソースを検索します。クラスター ID は削除されたクラスターに固有であるため、そのクラスター ID を持つリソースは残っていないはずです。
- 万が一リソースが残っている場合は、削除してください。