5.6. Google Compute Platform Filestore CSI ドライバーオペレーター
5.6.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dedicated は、Google Compute Platform (GCP) Filestore Storage の Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。
CSI Operator およびドライバーを使用する場合は、永続ストレージ および CSI ボリュームの設定 を理解しておくことが推奨されます。
GCP Filestore Storage アセットにマウントする CSI プロビジョニング PV を作成するには、GCP Filestore CSI Driver Operator と GCP Filestore CSI ドライバーを openshift-cluster-csi-drivers
namespace にインストールします。
- GCP Filestore CSI Driver Operator は、デフォルトではストレージクラスを提供しませんが、必要に応じて作成 できます。GCP Filestore CSI Driver Operator は、ストレージボリュームをオンデマンドで作成できるようにすることで動的なボリュームプロビジョニングをサポートし、クラスター管理者がストレージを事前にプロビジョニングする必要がなくなります。
- GCP Filestore CSI ドライバー を使用すると、GCP Filestore PV を作成してマウントできます。
OpenShift Dedicated GCP Filestore は Workload Identity をサポートします。これにより、ユーザーはサービスアカウントキーの代わりにフェデレーションアイデンティティーを使用して Google Cloud リソースにアクセスできます。GCP Workload Identity はインストール中にグローバルに有効にしてから、GCP Filestore CSI Driver Operator 用に設定する必要があります。詳細は、GCP Filestore CSI Driver Operator のインストール を参照してください。
5.6.2. CSI について リンクのコピーリンクがクリップボードにコピーされました!
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。
CSI Operator は、in-tree ボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Dedicated ユーザーに付与します。
5.6.3. GCP Filestore CSI Driver Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
5.6.3.1. Workload Identity を使用して GCP Filestore CSI Driver Operator をインストールする準備 リンクのコピーリンクがクリップボードにコピーされました!
GCP Workload Identity を Google Compute Platform Filestore と共に使用する予定の場合は、GCP Filestore Container Storage Interface (CSI) Driver Operator のインストール中に使用する特定のパラメーターを取得する必要があります。
前提条件
- cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
手順
Workload Identity を使用して GCP Filestore CSI ドライバー Operator をインストールする準備をします。
プロジェクト番号を取得します。
以下のコマンドを実行してプロジェクト ID を取得します。
export PROJECT_ID=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.gcp.projectID}')
$ export PROJECT_ID=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.gcp.projectID}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行し、プロジェクト ID を使用してプロジェクト番号を取得します。
gcloud projects describe $PROJECT_ID --format="value(projectNumber)"
$ gcloud projects describe $PROJECT_ID --format="value(projectNumber)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ID プール ID とプロバイダー ID を検索します。
クラスターのインストール中に、これらのリソースの名前は、
--name parameter
を使用して Cloud Credential Operator ユーティリティー (ccoctl
) に渡されます。「Cloud Credential Operator ユーティリティーを使用した GCP リソースの作成」を参照してください。GCP Filestore Operator の Workload Identity リソースを作成します。
次のサンプルファイルを使用して
CredentialsRequest
ファイルを作成します。Credentials Request YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行し、
CredentialsRequest
ファイルを使用して GCP サービスアカウントを作成します。./ccoctl gcp create-service-accounts --name=<filestore-service-account> \ --workload-identity-pool=<workload-identity-pool> \ --workload-identity-provider=<workload-identity-provider> \ --project=<project-id> \ --credentials-requests-dir=/tmp/credreq
$ ./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/credreq
5 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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'
$ 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'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/filestore-se-openshift-g-ch8cm@openshift-gce-devel.iam.gserviceaccount.com:generateAccessToken
https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/filestore-se-openshift-g-ch8cm@openshift-gce-devel.iam.gserviceaccount.com:generateAccessToken
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力例では、サービスアカウントのメールは
filestore-se-openshift-g-ch8cm@openshift-gce-devel.iam.gserviceaccount.com
です。
結果
これで、GCP Filestore CSI Driver Operator をインストールするために必要な次のパラメーターが揃いました。
- プロジェクト番号 - ステップ 1.b
- プール ID - ステップ 2
- プロバイダー ID - ステップ 2
- サービスアカウントのメール - ステップ 3.c
5.6.3.2. GCP Filestore CSI Driver Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Google Compute Platform (GCP) の Filestore Container Storage Interface (CSI) Driver Operator は OpenShift Dedicated にインストールされません。次の手順を使用して、GCP Filestore CSI Driver Operator をクラスターにインストールします。
前提条件
- OpenShift Dedicated Web コンソールへアクセスできる。
- GCP Workload Identity を使用する場合は、GCP Workload Identity の特定のパラメーターがある。前述のセクション Workload Identity を使用して GCP Filestore CSI Driver Operator をインストールする準備 を参照してください。
手順
ウェブコンソールから GCP Filestore CSI Driver Operator をインストールするには、以下を行います。
- OpenShift Cluster Manager にログインします。
- クラスターを選択します。
- Open console をクリックし、認証情報を使用してログインします。
次のコマンドを実行して、GCE プロジェクトで Filestore API を有効にします。
gcloud services enable file.googleapis.com --project <my_gce_project>
$ gcloud services enable file.googleapis.com --project <my_gce_project>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<my_gce_project>
を Google Cloud プロジェクトに置き換えます。
これは、Google Cloud Web コンソールを使用して行うこともできます。
GCP Filestore CSI Operator をインストールします。
-
Operators
OperatorHub をクリックします。 - フィルターボックスに GCP Filestore と入力して、GCP Filestore CSI Operator を見つけます。
- GCP Filestore CSI Driver Operator ボタンをクリックします。
- GCP Filestore CSI Driver Operator ページで、Install をクリックします。
Install Operator のページで、以下のことを確認してください。
- All namespaces on the cluster (default) が選択されている。
Installed Namespace が openshift-cluster-csi-drivers に設定されている。
GCP Workload Identity を使用する場合は、セクション ワークロードアイデンティティーを使用した GCP Filestore CSI ドライバー Operator のインストールの準備 の手順で取得した次のフィールドの値を入力します。
- GCP Project Number
- GCP Pool ID
- GCP Provider ID
- GCP Service Account Email
Install をクリックします。
インストールが完了すると、GCP Filestore CSI Operator が Web コンソールの Installed Operator セクションに表示されます。
-
Operators
GCP Filestore CSI ドライバーをインストールします。
-
administration
CustomResourceDefinitions ClusterCSIDriver をクリックします。 Instances タブで Create ClusterCSIDriver をクリックします。
以下の YAML ファイルを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックします。
以下の条件が "true" に変わるのを待ちます。
- GCPFilestoreDriverCredentialsRequestControllerAvailable
- GCPFilestoreDriverNodeServiceControllerAvailable
- GCPFilestoreDriverControllerServiceControllerAvailable
-
administration
5.6.4. GCP Filestore Storage のストレージクラスの作成 リンクのコピーリンクがクリップボードにコピーされました!
Operator をインストールしたら、Google Compute Platform (GCP) Filestore ボリュームの動的プロビジョニング用のストレージクラスを作成する必要があります。
前提条件
- 実行中の OpenShift Dedicated クラスターにログインしている。
手順
ストレージクラスを作成するには、以下を行います。
次のサンプル YAML ファイルを使用してストレージクラスを作成します。
サンプル YAML ファイル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Filestore インスタンスを作成する 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:"
$ oc -n openshift-machine-api get machinesets -o yaml | grep "network:" - network: gcp-filestore-network (...)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、このクラスターの 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 ロールを持つユーザーとしてクラスターにアクセスできる。
- GCP Filestore CSI Driver Operator と GCP Filestore CSI ドライバーがインストールされている。
手順
次のサンプル YAML ファイルのようなファイルを使用してストレージクラスを作成します。
注記ストレージクラスの作成の詳細は、GCP Filestore Operator のストレージクラスの作成 セクションを参照してください。
NFS エクスポートオプションが含まれるストレージクラス YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 を持つリソースは残っていないはずです。
- 万が一リソースが残っている場合は、削除してください。