IBM Cloud Docs
IBM Cloud Object Storage 驱动程序

IBM Cloud Object Storage 驱动程序

您可以使用 IBM Cloud Object Storage 驱动程序模板在多个 s3 存储器提供程序 (例如 IBM,AWS,Wasabi 和 Azure等) 中创建和访问数据。 请查看以下步骤,以将 IBM Cloud Object Storage 驱动程序部署到 Satellite 集群。

在可以将存储器模板部署到您所在位置的集群之前,请确保通过在控制台中选择 对 Satellite Config 启用集群管理访问权 选项或者在创建集群时包含 --enable-config-admin 选项来设置 Satellite 配置。

不能将 Satellite 存储服务的作用域限定为资源组。 但是,如果要将其他资源 (例如,位置和集群) 限定为资源组,那么需要为帐户中的所有资源添加 Satellite 阅读器和链接管理员角色。

先决条件

  1. 创建 Satellite 位置

  2. 在对象存储器提供程序中创建一组服务凭证。

  3. 创建包含 s3 凭证的私钥

在集群中创建包含对象存储器凭证的私钥

在包含服务凭证的集群中创建 Kubernetes 私钥。

  1. 遵循基于对象存储器提供程序的步骤在集群中创建私钥。 创建私钥时,所有值都会自动编码为 Base64。 在下面的示例中,秘密名称是 cos-write-access

    • IBM Cloud Object Storage

      1. 查找服务实例 ID。

        ibmcloud resource service-instance <service_name> | grep GUID
        
      2. 在集群中创建私钥。

        oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=API-KEY --from-literal=service-instance-id=SERVICE-INSTANCE-ID
        
    • AWS 或 Wasabi

      oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=access-key=ACCESS-KEY-ID --from-literal=secret-key=SECRET-ACCESS-KEY
      

在控制台中创建和分配配置

  1. 查看 参数参考

  2. 从 "位置" 控制台,选择要在其中创建存储配置的位置。

  3. 选择 存储器 > 创建存储器配置

  4. 输入配置名称。

  5. 选择存储类型

  6. 选择版本并单击下一步

  7. 如果您选择的 存储器类型 接受定制参数,请在 参数 选项卡上输入这些参数。

  8. 如果您选择的 存储器类型 需要私钥,请在 私钥 选项卡上输入私钥。

  9. 存储类 选项卡上,查看配置所部署的存储类或创建定制存储类。

  10. 分配给服务 选项卡上,选择要将配置分配给的服务。

  11. 单击 完成 以分配存储器配置。

在 CLI 中创建配置

  1. 查看要使用的模板版本的 参数参考

  2. 登录到 IBM Cloud CLI。

    ibmcloud login
    
  3. 列出 Satellite 位置并记下 Managed from 列。

    ibmcloud sat location ls
    
  4. 将 Satellite 位置的 Managed from 区域作为目标。 例如,对于 wdc target us-east。 有关更多信息,请参阅 Satellite 区域

    ibmcloud target -r us-east
    
  5. 如果使用除 default 以外的资源组,请将其作为目标。

    ibmcloud target -g <resource-group>
    
  6. 针对要使用的模板版本,复制以下某个示例命令。 有关该命令的更多信息,请参阅 命令参考 中的 ibmcloud sat storage config create

    用于创建 V 2.2 配置的示例命令。

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-object-storage-plugin --template-version 2.2 --param "helm-release-name=HELM-RELEASE-NAME"  [--param "parameters=PARAMETERS"]  --param "license=LICENSE"  [--param "s3provider=S3PROVIDER"]  --param "cos-storageclass=COS-STORAGECLASS"  [--param "cos-endpoint=COS-ENDPOINT"]
    
  7. 根据要使用的设置定制命令。

  8. 运行命令创建配置。

  9. 验证是否已创建配置。

    ibmcloud sat storage config get --config CONFIG
    

在 API 中创建配置

  1. 生成 API 密钥,然后请求刷新令牌。 有关详细信息,请参阅 使用 API 密钥生成 IBM Cloud IAM 令牌

  2. 查看要使用的模板版本的 参数参考

  3. 复制以下某个示例请求并替换要使用的变量。

    用于创建 V 2.2 配置的示例请求。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-object-storage-plugin\", \"storage-template-version\": \"2.2\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"HELM-RELEASE-NAME\", { \"entry.name\": \"PARAMETERS\", { \"entry.name\": \"LICENSE\", { \"entry.name\": \"S3PROVIDER\", { \"entry.name\": \"COS-STORAGECLASS\", { \"entry.name\": \"COS-ENDPOINT\",\"user-secret-parameters\": }
    

在 CLI 中创建任务

  1. 列出存储配置,并记下要分配给集群的存储配置。

    ibmcloud sat storage config ls
    
  2. 获取要向其分配存储器的集群,集群组或服务的标识。

    要确保集群已向 Satellite 配置注册或要创建组,请参阅 设置集群以与 Satellite 配置配合使用

    用于列出集群组的示例命令。

    ibmcloud sat group ls
    

    用于列出集群的示例命令。

    ibmcloud oc cluster ls --provider satellite
    

    用于列出 Satellite 服务的示例命令。

    ibmcloud sat service ls --location <location>
    
  3. 将存储器配置分配给先前检索的集群,组或服务。 有关更多信息,请参阅 ibmcloud sat storage assignment create 命令

    用于将配置分配给集群组的示例命令。

    ibmcloud sat storage assignment create --group GROUP --config CONFIG --name NAME
    

    用于将配置分配给集群的示例命令。

    ibmcloud sat storage assignment create --cluster CLUSTER --config CONFIG --name NAME
    

    用于将配置分配给服务集群的示例命令。

    ibmcloud sat storage assignment create --service-cluster-id CLUSTER --config CONFIG --name NAME
    
  4. 确认任务已创建。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    

在 API 中创建存储器分配

  1. 复制以下某个示例请求。

    用于将 配置分配给集群的示例请求。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignmentByCluster" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"CLUSTER-ID\", \"controller\": \"LOCATION-ID\", \"name\": \"ASSIGNMENT-NAME\"}"
    

    请求 将配置分配给集群组的示例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"string\", \"groups\": [ \"CLUSTER-GROUP\" ], \"name\": \"ASSIGNMENT-NAME\"}"
    
  2. 将变量替换为详细信息并运行请求。

  3. 通过列出分配来验证是否已创建分配。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

在控制台中更新存储器分配

您可以使用 Satellite 控制台 对分配应用最新补丁更新。

  1. Satellite 控制台中的“位置”页面,选择您的位置。

  2. 单击 存储器 选项卡以查看配置。

  3. 单击要更新的配置。

  4. 单击信息 信息 (i) 图标以应用最新修订版或补丁。

  5. 可选: 为存储器分配启用自动补丁更新。 启用自动补丁更新可确保分配始终具有最新的安全修订。

如果启用自动补丁更新,那么仍必须手动应用主要更新。

在 CLI 中手动升级分配

升级分配以使用最新的存储器模板修订版。

  1. 列出 Satellite 存储分配,记录要升级的 Satellite 分配。

    ibmcloud sat storage assignment ls
    
  2. 列出 Satellite 存储模板以查看最新的可用版本。

    ibmcloud sat storage template ls
    
  3. 升级 Satellite 分配。

    用于升级分配的示例命令。

    ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
    

在 CLI 中为配置和分配启用自动补丁更新

您可以使用 sat storage assignment autopatch enable CLI 为分配启用自动补丁更新。 启用自动补丁更新将自动应用最新的存储模板修订 (补丁)。 您仍必须手动应用主要更新。

  1. 列出 Satellite 存储配置。 记下配置 ID。

    ibmcloud sat storage assignment ls
    
  2. 运行以下某个示例命令以对配置及其关联的分配启用自动补丁更新。 输入您在上一步中获取的配置 ID。

    用于对分配启用自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch enable --config CONFIG  (--all | --assignment ASSIGNMENT-ID [--assignment ASSIGNMENT-ID])
    

    用于对给定配置下的所有存储器分配启用自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch enable --config CONFIG --all
    

    用于禁用特定配置下所有分配的自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --all
    

    用于禁用单个分配和特定配置的自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID
    

    用于对多个分配和特定配置禁用自动补丁更新的示例命令。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID --assignment ASSIGNMENT-ID
    

在 API 中升级配置和分配

您可以使用 /v2/storage/satellite/updateAssignment API 通过新的集群或集群组更新分配。 将 updateConfigVersion 设置为 true 以应用修订更新。

  1. 复制以下示例请求,并替换要更新的集群组和分配的变量。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/updateAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"groups\": [ \"CLUSTER-GROUPS\" ], \"name\": \"ASSIGNMENT-NAME\", \"updateConfigVersion\": true, \"uuid\": \"ASSIGNMENT-ID\"}"
    
  2. 运行请求。

  3. 获取分配的详细信息以验证更新。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

在 API 中为分配启用自动补丁更新

您可以使用 /v2/storage/satellite/setAssignmentAutoupgrade API 为分配启用自动补丁更新。 启用自动补丁更新将自动应用最新的存储模板修订 (补丁)。 您仍必须手动应用主要更新。

  1. 复制以下示例请求,并替换要更新的集群组和分配的变量。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/setAssignmentAutoupgrade" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d { "config": "string", "controller": "string", "autopatch": boolean,"assignment" : { "all": boolean, "uuid": ["string", "string", ...], } }
    
  2. 运行请求。

  3. 获取分配的详细信息以验证升级。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

部署使用 IBM Cloud Object Storage 的应用程序

您可以使用 ibm-object-s3fs 驱动程序来创建可在集群工作负载中使用的 PVC。

  1. 创建引用对象存储器配置的 PVC。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: demo #Enter a name for your PVC.
      namespace: default
      annotations:
      ibm.io/auto-create-bucket: "false"
      ibm.io/auto-delete-bucket: "false"
      ibm.io/bucket: BUCKET-NAME #Enter the name of your object storage bucket.
      ibm.io/secret-name: SECRET-NAME #Enter the name of the secret you created earlier.
      ibm.io/secret-namespace: NAMESPACE #Enter the namespace where you want to create the PVC.
    spec:
        accessModes:
        - ReadWriteOnce
        resources:
            requests:
                storage: 10Gi
        storageClassName: ibmc-s3fs-cos #The storage class that you want to use.
    
  2. 在集群中创建 PVC。

    oc apply -f pvc-cos.yaml
    
  3. 为安装您创建的 PVC 的 pod 创建 YAML 配置文件。

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo-pod
      namespace: default
    spec:
      securityContext:
        runAsUser: 2000
        fsGroup: 2000
      volumes:
      - name: demo-vol
        persistentVolumeClaim:
            claimName: demo
      containers:
      - name: test
        image: nginxinc/nginx-unprivileged
        imagePullPolicy: Always
        volumeMounts:
        - name: demo-vol
          mountPath: /mnt/cosvol
    
  4. 在群集中创建 pod。

    oc apply -f demo-pod.yaml
    
  5. 验证 pod 是否已部署。 请注意,应用程序进入 Running 状态可能需要几分钟时间。

    oc get pods
    
    NAME                                READY   STATUS    RESTARTS   AGE
    demo-pod                            1/1     Running   0          2m58s
    
  6. 通过登录到 pod,验证应用程序是否可以写入块存储卷。

    oc exec demo-pod -- bash -c "touch /mnt/cosvol/test.txt && ls /mnt/cosvol" test.txt
    

使用控制台除去 IBM Cloud Object Storage 存储器配置

  1. 从 Satellite 存储仪表板中,选择要删除的存储配置。
  2. 选择 操作 > 删除
  3. 输入存储器配置的名称。
  4. 选择删除

使用命令行除去 IBM Cloud Object Storage 存储器配置

如果不再需要 IBM Cloud Object Storage 配置,那么可以从集群中除去应用程序,PVC,PV 和分配。

  1. 列出存储器分配并查找用于集群的存储分配。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    
  2. 除去分配。 除去分配后,将从属于存储分配的所有集群中除去驱动程序 pod 和存储类。

    ibmcloud sat storage assignment rm --assignment <assignment_ID>
    
  3. 验证是否已从集群中除去驱动程序。

    1. 列出集群中的存储类,并验证是否已除去这些存储类。

      oc get sc
      
    2. 列出 kube-system 名称空间中的 pod,并验证是否已除去存储驱动程序 pod。

      oc get pods -n kube-system | grep cos
      
  4. 可选: 除去存储器配置。

    1. 列出存储配置。

      ibmcloud sat storage config ls
      
    2. 除去存储器配置。

      ibmcloud sat storage config rm --config <config_name>
      

参数参考

2.2 参数参考

2.2.2参数参考
显示名称 CLI 选项 类型 描述 必需? 缺省值
发行版名称 helm-release-name 配置 Helm 图表发行版名称。 ibm-object-storage-plugin
Helm 图表其他参数 parameters 配置 Helm 图表其他参数。 不适用
Object Storage 插件许可证 license 配置 Object Storage 插件许可证:Apache 许可证 V2.0。 设置为 true 以接受许可并安装插件。 不适用
Object Storage 提供程序 s3provider 配置 可用的提供程序有 IBMAWSWasabi。 对于其他提供商,您必须提供 Object Storage service endpoint 参数。 不适用
Object Storage 区域 cos-storageclass 配置 输入对象存储器所在的区域。 对于 IBM COS 区域,请参阅 https://ibm.biz/cos-endpoints-list。 对于 Wasabi,请参阅 https://ibm.biz/wasabi-endpoints。 对于 AWS,请参阅 https://ibm.biz/aws-endpoints。 不适用
Object Storage 服务端点 cos-endpoint 配置 Object Storage 服务端点。 在使用除 IBM、AWS 或 Wasabi 以外的 Object Storage 提供程序时必需。 当两者都设置时,优先使用 Object Storage provider 不适用

IBM Cloud Object Storage 的存储类引用

云对象存储类参考
存储类名 卷绑定方式 Retain
ibm-s3fs-cos 立即
ibm-s3fs-cos-perf 立即

获取有关 IBM Cloud Object Storage 的帮助和支持

使用 IBM Cloud Object Storage时,请先尝试以下资源,然后再打开支持案例。

  1. 查看 Block Storage for VPC 文档 中的常见问题解答。
  2. 查看 故障诊断文档 以进行故障诊断并解决常见问题。
  3. 通过转至 "状态" 页面,检查 IBM Cloud 平台和资源的状态。
  4. 查看 Stack Overflow 以了解其他用户是否迂到了相同的问题。 使用 ibm-cloudCOS 标记任何问题。
  5. 如果迂到 Block Storage for VPC问题,请向 IBM Cloud® 支持提交支持请求。