クイックスタート: 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 ドライバを設定するをご覧ください。
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud 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.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud 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] ページに移動します。 Google Cloud
IAM に移動 - プロジェクトを選択します。
-
[Principal] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。
- 自分のメールアドレスを含む行の [**ロール**] 列で、ロールのリストに必要なロールが含まれているかどうか確認します。
ロールを付与する
-
コンソールで、[IAM] ページに移動します。 Google Cloud
IAM に移動 - プロジェクトを選択します。
- [**アクセスを許可**] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [**ロールを選択**] をクリックして、ロールを検索します。
- 追加のロールを付与するには、 [Add another role] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
GKE Autopilot クラスタを作成する
Google Cloud コンソールで、[Autopilot クラスタの作成] ページに移動します。
[クラスタの基本] で、次の操作を行います。
[名前] フィールドに、クラスタの名前を入力します。
その他の設定はデフォルトのままにします。
クラスタを作成するには、[作成] をクリックします。
Cloud Storage バケットを作成する
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[ 作成] をクリックします。
[バケットの作成] ページの [始める] セクションで、次の操作を行います。
バケット名の要件を満たす、グローバルに一意のバケット名を入力します。
その他の設定はデフォルトのままにします。
バケットを作成するには、[作成] をクリックします。
Cloud Storage バケットにオブジェクトをアップロードする
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、作成したバケットの名前をクリックします。
バケットのオブジェクト タブで、次のいずれかを行います。
デスクトップまたはファイル マネージャーから Google Cloud コンソールのメインペインにファイルをドラッグします。
「ファイルをアップロード」ボタンをクリックします。表示されたダイアログで、アップロードするファイルを選択し、[開く] をクリックします。
Cloud Storage バケットへのアクセスを構成する
GKE クラスタから Cloud Storage バケットにアクセスできるようにするには、Cloud Storage バケットへのアクセスを構成するの手順に沿って操作します。
Cloud Shell を設定する
コンソールで Cloud Shell をアクティブにします。 Google Cloud
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
クリーンアップ
このチュートリアルで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、Pod を削除します。
kubectl delete pod gcsfuse-test