クイックスタート: FUSE CSI ドライバを使用して Cloud Storage バケットにアクセスする


このクイックスタート ガイドでは、Google Kubernetes Engine(GKE)アプリケーション内から、ローカル ファイル システムのように Cloud Storage バケットにアクセスする方法について説明します。このクイックスタートでは、バケットをマウントする Pod を作成するためのKubernetes マニフェストを例示し、Pod のファイル システムを使用してバケットの内容を操作する方法を紹介します。

このページは、クラウド リソースのプロビジョニングと管理、ならびにワークロードのデプロイを行うデベロッパー、ストレージ スペシャリスト、その他のユーザーを対象としています。一般的なロールの詳細については、一般的な GKE ユーザー ロールとタスクをご覧ください。

このページを読む前に、KubernetesCloud Storage FUSE CSI ドライバについて理解しておいてください。

このクイックスタートでは、GKE Autopilot モードを使用します。Standard モードを使用する場合は、GKEに Cloud Storage FUSE CSI ドライバを設定するをご覧ください。

始める前に

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Trusted Cloud project.

  3. Enable the GKE and Cloud Storage APIs.

    Enable the APIs

  4. Make sure that you have the following role or roles on the project: Kubernetes Engine Admin, Storage Admin, Service Account User

    Check for the roles

    1. In the Trusted Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Trusted Cloud console, go to the IAM page.

      IAM に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Workforce Identity プール内のユーザーの ID です。詳細については、IAM ポリシーで Workforce プールユーザーを表すをご覧いただくか、管理者にお問い合わせください。

    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。
    8. GKE Autopilot クラスタを作成する

      1. Trusted Cloud コンソールで、[Autopilot クラスタの作成] ページに移動します。

        [Autopilot クラスタの作成] に移動

      2. [クラスタの基本] で、次の操作を行います。

        1. [名前] フィールドに、クラスタの名前を入力します。

        2. その他の設定はデフォルトのままにします。

      3. クラスタを作成するには、[作成] をクリックします。

      Cloud Storage バケットを作成する

      1. Trusted Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

        [バケット] に移動

      2. [ 作成] をクリックします。

      3. [バケットの作成] ページの [始める] セクションで、次の操作を行います。

        1. バケット名の要件を満たす、グローバルに一意のバケット名を入力します。

        2. その他の設定はデフォルトのままにします。

      4. バケットを作成するには、[作成] をクリックします。

      Cloud Storage バケットにオブジェクトをアップロードする

      1. Trusted Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

        [バケット] に移動

      2. バケットのリストで、作成したバケットの名前をクリックします。

      3. バケットのオブジェクト タブで、次のいずれかを行います。

        • デスクトップまたはファイル マネージャーから Trusted Cloud コンソールのメインペインにファイルをドラッグします。

        • ファイルをアップロード」ボタンをクリックします。表示されたダイアログで、アップロードするファイルを選択し、[開く] をクリックします。

      Cloud Storage バケットへのアクセスを構成する

      GKE クラスタから Cloud Storage バケットにアクセスできるようにするには、Cloud Storage バケットへのアクセスを構成するの手順に沿って操作します。

      FUSE を使用して Cloud Storage バケットにアクセスする Pod をデプロイする

      1. In the Trusted Cloud console, activate Cloud Shell.

        Activate Cloud Shell

        コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。

      2. デフォルト プロジェクトを設定するには、Pod をデプロイするプロジェクトのプロジェクト ID を使用します。

        gcloud config set project PROJECT_ID
        

        PROJECT_ID は、実際のプロジェクト ID に置き換えます。

      3. 次の内容で 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"
        EOF
        
        • BUCKET_NAME は、Cloud Storage バケット名で置き換えます。
        • 別の名前空間またはサービス アカウントを使用している場合は、namespace フィールドと serviceAccountName フィールドを適宜置き換えます。

        このマニフェストのコンテンツは、バケットを /data パスにマウントする gcsfuse-test という Pod を開始します。

      4. Pod が実行されていることを確認するには、次のコマンドを使用します。

        kubectl get pod gcsfuse-test
        

        出力は次のようになります。

        NAME           READY   STATUS    RESTARTS   AGE
        gcsfuse-test   2/2     Running   0          12s
        

        Cloud Storage FUSE CSI ドライバは、Pod にサイドカー コンテナを接続して、Cloud Storage とのやり取りを管理します。

        Pod が実行されていない場合は、kubectl describe pod gcsfuse-test コマンドを実行してイベントログを取得し、問題の診断に役立てることができます。詳細については、GitHub のトラブルシューティングをご覧ください。

      5. Pod が実行されたら、ファイル システムを調べることができます。

        kubectl exec -it gcsfuse-test -- find /data
        
      6. クリーンアップ

        このチュートリアルで使用したリソースについて、 Trusted Cloud by S3NS アカウントに課金されないようにするには、Pod を削除します。

        kubectl delete pod gcsfuse-test
        

        次のステップ