クイックスタート: FUSE CSI ドライバを使用して Cloud Storage バケットにアクセスする
このクイックスタート ガイドでは、Google Kubernetes Engine(GKE)アプリケーション内から、ローカル ファイル システムのように Cloud Storage バケットにアクセスする方法について説明します。このクイックスタートでは、バケットをマウントする Pod を作成するためのKubernetes マニフェストを例示し、Pod のファイル システムを使用してバケットの内容を操作する方法を紹介します。
このページは、クラウド リソースのプロビジョニングと管理、ならびにワークロードのデプロイを行うデベロッパー、ストレージ スペシャリスト、その他のユーザーを対象としています。一般的なロールの詳細については、一般的な GKE ユーザー ロールとタスクをご覧ください。
このページを読む前に、Kubernetes と Cloud Storage FUSE CSI ドライバについて理解しておいてください。
このクイックスタートでは、GKE Autopilot モードを使用します。Standard モードを使用する場合は、GKEに Cloud Storage FUSE CSI ドライバを設定するをご覧ください。
始める前に
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the GKE and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
プロジェクトに次のロールが付与されていることを確認します。 Kubernetes Engine 管理者、ストレージ管理者、サービス アカウント ユーザー
ロールを確認する
-
コンソールで、[IAM] ページに移動します。 Cloud de Confiance
IAM に移動 - プロジェクトを選択します。
-
[Principal] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。
- 自分のメールアドレスを含む行の [**ロール**] 列で、ロールのリストに必要なロールが含まれているかどうか確認します。
ロールを付与する
-
コンソールで、[IAM] ページに移動します。 Cloud de Confiance
IAM に移動 - プロジェクトを選択します。
- [**アクセスを許可**] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Workforce Identity プール内のユーザーの ID です。詳細については、 IAM ポリシーで Workforce プールユーザーを表すをご覧いただくか、管理者にお問い合わせください。
- [**ロールを選択**] をクリックして、ロールを検索します。
- 追加のロールを付与するには、 [Add another role] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
GKE Autopilot クラスタを作成する
Cloud de Confiance コンソールで、[Autopilot クラスタの作成] ページに移動します。
[クラスタの基本] で、次の操作を行います。
[名前] フィールドに、クラスタの名前を入力します。
その他の設定はデフォルトのままにします。
クラスタを作成するには、[作成] をクリックします。
Cloud Storage バケットを作成する
- Cloud de Confiance コンソールで Cloud Storage の [バケット] ページに移動します。
[ 作成] をクリックします。
[バケットの作成] ページの [始める] セクションで、次の操作を行います。
バケット名の要件を満たす、グローバルに一意のバケット名を入力します。
その他の設定はデフォルトのままにします。
バケットを作成するには、[作成] をクリックします。
Cloud Storage バケットにオブジェクトをアップロードする
- Cloud de Confiance コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、作成したバケットの名前をクリックします。
バケットのオブジェクト タブで、次のいずれかを行います。
デスクトップまたはファイル マネージャーから Cloud de Confiance コンソールのメインペインにファイルをドラッグします。
「ファイルをアップロード」ボタンをクリックします。表示されたダイアログで、アップロードするファイルを選択し、[開く] をクリックします。
Cloud Storage バケットへのアクセスを構成する
GKE クラスタから Cloud Storage バケットにアクセスできるようにするには、Cloud Storage バケットへのアクセスを構成するの手順に沿って操作します。
Cloud Shell を設定する
コンソールで Cloud Shell をアクティブにします。 Cloud de Confiance
Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。セッションが初期化されるまで数秒かかることがあります。
FUSE を使用して Cloud Storage バケットにアクセスする Pod をデプロイする
Pod をデプロイするデフォルト プロジェクトを設定します。
gcloud config set project PROJECT_IDPROJECT_IDは、実際のプロジェクト ID に置き換えます。次の内容で Pod マニフェストを作成して適用します。
cat << EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: gcsfuse-test namespace: default annotations: gke-gcsfuse/volumes: "true" spec: terminationGracePeriodSeconds: 60 containers: - image: busybox name: busybox command: ["sleep"] args: ["infinity"] volumeMounts: - name: gcsfuse-test mountPath: /data readOnly: true serviceAccountName: default volumes: - name: gcsfuse-test csi: driver: gcsfuse.csi.storage.gke.io volumeAttributes: bucketName: BUCKET_NAME mountOptions: "implicit-dirs" EOFBUCKET_NAMEは、Cloud Storage バケット名で置き換えます。- 別の名前空間またはサービス アカウントを使用している場合は、
namespaceフィールドとserviceAccountNameフィールドを適宜置き換えます。
このマニフェストのコンテンツは、バケットを
/dataパスにマウントするgcsfuse-testという Pod を開始します。Pod が実行されていることを確認するには、次のコマンドを使用します。
kubectl get pod gcsfuse-test出力は次のようになります。
NAME READY STATUS RESTARTS AGE gcsfuse-test 2/2 Running 0 12sCloud Storage FUSE CSI ドライバは、Pod にサイドカー コンテナを接続して、Cloud Storage とのやり取りを管理します。
Pod が実行されていない場合は、
kubectl describe pod gcsfuse-testコマンドを実行してイベントログを取得し、問題の診断に役立てることができます。詳細については、GitHub のトラブルシューティングをご覧ください。Pod が実行されたら、ファイル システムを調べることができます。
kubectl exec -it gcsfuse-test -- find /data
クリーンアップ
このチュートリアルで使用したリソースについて、 Cloud de Confiance by S3NS アカウントに課金されないようにするには、Pod を削除します。
kubectl delete pod gcsfuse-test