すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:CSI プラグインの使用

最終更新日:Apr 30, 2025

Container Service for Kubernetes (ACK) のコンテナーストレージ機能は、Alibaba Cloud が提供するストレージサービスと統合されており、Kubernetes ネイティブのストレージサービスと互換性があります。 ACK クラスタに Container Storage Interface (CSI) プラグインをデプロイして、Alibaba Cloud ストレージサービスを使用できます。 ディスクボリューム、File Storage NAS (NAS) ボリューム、Object Storage Service (OSS) ボリューム、およびローカルボリュームは、ACK クラスタのポッドに自動的にマウントできます。 このトピックでは、登録済みクラスターで CSI プラグインを使用する方法について説明します。

前提条件

  • 登録済みクラスターが作成され、外部クラスターが登録済みクラスターに接続されていること。 詳細については、「登録済みクラスターを作成する」をご参照ください。

  • 登録済みクラスターの Kubernetes バージョンが 1.24 以降であること。

  • 外部クラスターがデータセンターにデプロイされている場合は、Alibaba Cloud ストレージリソースをクラスター内のノードにボリュームとしてマウントする前に、Express Connect 回線 を使用してデータセンターが Alibaba Cloud に接続されていることを確認してください。

考慮事項

  • 外部クラスターが Alibaba Cloud にデプロイされており、Elastic Compute Service (ECS) インスタンスがクラスターに追加されている場合は、ECS インスタンスにラベルを追加する必要があります。 ECS インスタンスにラベルを追加する方法の詳細については、「ACK に登録されている外部クラスターの ECS インスタンスにラベルを追加する」をご参照ください。

  • ノードプール機能を使用して外部クラスターに ECS インスタンスを追加する場合、alibabacloud.com/external=true ラベルが ECS インスタンスに自動的に追加されます。

ステップ 1:RAM ユーザーに CSI プラグインを管理する権限を付与する

onectl を使用する

  1. オンプレミスマシンに onectl をインストールします。 詳細については、「onectl を使用して登録済みクラスターを管理する」をご参照ください。

  2. onectl は、Resource Access Management (RAM) ユーザーの AccessKey ペアを使用して Alibaba Cloud リソースにアクセスします。 次のコマンドを実行して、RAM ユーザーに CSI コンポーネントを管理する権限を付与します。

    onectl ram-user grant --addon csi-plugin

    期待される出力:

    Ram policy ack-one-registered-cluster-policy-csi-plugin granted to ram user ack-one-user-ce313528c3 successfully.

コンソールを使用する

登録済み外部クラスターに CSI プラグインをインストールする前に、関連するクラウドリソースにアクセスするための AccessKey ペアをクラスターに設定する必要があります。 AccessKey ペアを設定する前に、RAM ユーザーを作成し、Alibaba Cloud リソースにアクセスするための権限を RAM ユーザーに付与します。

  1. RAM ユーザーを作成する

  2. カスタムポリシーを作成する。 次のカスタムポリシーの例では、ディスク、スナップショット、スナップショットポリシー、リソースラベル、インスタンス、ファイルシステム、およびリポジトリを管理するための権限が付与されます。

    サンプルコードを表示

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "ecs:AttachDisk",
                    "ecs:DetachDisk",
                    "ecs:DescribeDisks",
                    "ecs:CreateDisk",
                    "ecs:ResizeDisk",
                    "ecs:CreateSnapshot",
                    "ecs:DeleteSnapshot",
                    "ecs:CreateAutoSnapshotPolicy",
                    "ecs:ApplyAutoSnapshotPolicy",
                    "ecs:CancelAutoSnapshotPolicy",
                    "ecs:DeleteAutoSnapshotPolicy",
                    "ecs:DescribeAutoSnapshotPolicyEX",
                    "ecs:ModifyAutoSnapshotPolicyEx",
                    "ecs:AddTags",
                    "ecs:DescribeTags",
                    "ecs:DescribeSnapshots",
                    "ecs:ListTagResources",
                    "ecs:TagResources",
                    "ecs:UntagResources",
                    "ecs:ModifyDiskSpec",
                    "ecs:CreateSnapshot",
                    "ecs:DeleteDisk",
                    "ecs:DescribeInstanceAttribute",
                    "ecs:DescribeInstances"
                ],
                "Resource": [
                    "*"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "nas:DescribeFileSystems",
                    "nas:DescribeMountTargets",
                    "nas:AddTags",
                    "nas:DescribeTags",
                    "nas:RemoveTags",
                    "nas:CreateFileSystem",
                    "nas:DeleteFileSystem",
                    "nas:ModifyFileSystem",
                    "nas:CreateMountTarget",
                    "nas:DeleteMountTarget",
                    "nas:ModifyMountTarget",
                    "nas:TagResources",
                    "nas:SetDirQuota",
                    "nas:EnableRecycleBin",
                    "nas:GetRecycleBinAttribute"
                ],
                "Resource": [
                    "*"
                ],
                "Effect": "Allow"
            },
            {
                "Action": [
                    "oss:PutBucket",
                    "oss:GetObjectTagging",
                    "oss:ListBuckets",
                    "oss:PutBucketTags",
                    "oss:GetBucketTags",
                    "oss:PutBucketEncryption",
                    "oss:GetBucketInfo"
                ],
                "Resource": [
                    "*"
                ],
                "Effect": "Allow"
            }
        ]
    }
  3. カスタムポリシーを RAM ユーザーにアタッチする

  4. RAM ユーザーの AccessKey ペアを作成する

    警告

    AccessKey のセキュリティを強化するために、ネットワークアクセス制御用の AccessKey ペアベースのポリシーを設定し、AccessKey の呼び出し元を信頼できるネットワーク環境に制限することをお勧めします。

  5. AccessKey ペアを使用して、登録済みクラスターに alibaba-addon-secret という名前のシークレットを作成します。

    CSI コンポーネントをインストールすると、システムは AccessKey ペアを使用してクラウドリソースに自動的にアクセスします。

    kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'
    説明

    <your access key id><your access key secret> は、前の手順で取得した AccessKey ペアに置き換えます。

ステップ 2:CSI プラグインをインストールする

onectl を使用する

次のコマンドを実行して、CSI コンポーネントをインストールします。

onectl addon install csi-plugin
onectl addon install csi-provisioner

期待される出力:

Addon csi-plugin, version **** installed.
Addon csi-provisioner, version **** installed.

コンソールを使用する

  1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [ストレージ] タブをクリックし、[csi-plugin][csi-provisioner] を見つけて、[インストール] をクリックします。

  4. [注記] メッセージで、プラグインのバージョンを確認し、[OK] をクリックします。

ステップ 3:ボリュームをマウントする