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

:CSIプラグインの使用

最終更新日:Oct 08, 2024

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

前提条件

考慮事項

  • 外部クラスターがAlibaba Cloudにデプロイされ、ECS (Elastic Compute Service) インスタンスがクラスターに追加されている場合、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ユーザーを作成し、RAMユーザーにAlibaba Cloudリソースへのアクセス権限を付与します。

  1. RAMユーザーを作成します。 詳細については、「RAMユーザーの作成」をご参照ください。

  2. カスタムポリシーを作成します。

    カスタムポリシーの作成方法の詳細については、「カスタムポリシーの作成」をご参照ください。

    次の例は、ディスク、スナップショット、スナップショットポリシー、リソースラベル、インスタンス、ファイルシステム、およびリポジトリを管理する権限を付与するために使用できるカスタム権限ポリシーです。 関連するAPI操作の詳細については、「関数別の操作のリスト」をご参照ください。

    サンプルコードを表示する

    {
        "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ユーザーにアタッチします。 詳細については、「RAMユーザーへの権限付与」をご参照ください。

  4. RAMユーザーの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-plugincsi-provisionerを見つけ、インストールをクリックします。

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

ステップ3: ボリュームのマウント