# 使用委托凭据挂载对象存储卷
在使用CCE进行应用部署时，如果需要将对象存储服务（OBS）作为持久化存储挂载到容器中，传统做法依赖于手动配置的访问密钥（AKSK）。为了满足更高安全标准的需求，CCE支持使用委托挂载对象存储卷，实现精细化粒度的权限控制，无需再手动创建和管理AKSK密钥。
#### 前提条件
- [CCE容器存储（Everest）](https://support.huaweicloud.com/usermanual-cce/cce_10_0066.html)要求2.5.1及以上版本。
- 集群要求v1.28及以上版本，具体版本如下：
  - v1.28集群：v1.28.15-r80及以上版本
  
  - v1.29集群：v1.29.15-r40及以上版本
  
  - v1.30集群：v1.30.14-r40及以上版本
  
  - v1.31集群：v1.31.14-r0及以上版本
  
  - v1.32集群：v1.32.9-r0及以上版本
  
  - v1.33集群：v1.33.7-r0及以上版本
  
  - v1.34集群：v1.34.2-r0及以上版本
  
  - 其他更高版本
   
 
#### 约束与限制
- 使用委托凭据挂载对象存储卷时，关联的委托不允许删除，否则业务容器将无法访问已挂载的对象存储。
- 暂不支持安全容器。
- 使用工作负载委托不支持配置IAM5.0 信任委托。
 
#### 使用委托挂载对象存储卷
目前CCE支持使用全局委托和工作负载委托挂载对象存储卷，主要差异如下：
- 全局委托：直接使用在CCE容器存储（Everest）插件中配置的委托挂载对象存储卷。
- 工作负载委托：使用存储卷关联工作负载的委托权限挂载对象存储卷，可以实现更加精细化粒度的权限控制，但是需要您提前为对应的工作负载配置好工作负载的ServiceAccount和委托的关联关系，详情请参见[在CCE集群中使用容器组身份（Pod Identity）获取IAM凭证](https://support.huaweicloud.com/usermanual-cce/cce_10_1110.html)。
 
#### 动态创建对象存储卷
您可以通过以下方式进行创建。
- [控制台方式]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
  
  2. 在左侧导航栏选择"存储"，在右侧选择"存储卷声明"页签，单击右上角"创建存储卷声明 PVC"，在弹出的窗口中选择"对象存储"类型，创建方式选择"动态创建"。
  
  3. 在"访问密钥(AK/SK)"配置中根据需求选择"全局委托"或"使用工作负载委托"。 
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002507779878.png "点击放大")
     
     
     
  
  4. 其余配置请根据实际情况设置，参数说明详情请参见[控制台方式](https://support.huaweicloud.com/usermanual-cce/cce_10_0630.html#cce_10_0630__section59401538114911)。
   
- [kubectl命令行方式]
  ```
  apiVersion: v1
  kind: PersistentVolumeClaim
  metadata:
    name: pvc-obs-auto
    namespace: default
    annotations:
      everest.io/obs-volume-type: STANDARD    # 对象存储类型
      csi.storage.k8s.io/fstype: obsfs        # 实例类型
      everest.io/csi.authentication-source: "driver"   # 使用的委托方式，driver表示使用插件委托，pod表示使用工作负载的委托
  spec:
    accessModes:
      - ReadWriteMany             # 对象存储必须为ReadWriteMany
    resources:
      requests:
        storage: 1Gi
    storageClassName: csi-obs    # StorageClass类型为对象存储
  ```
  表1关键参数说明 
  | 参数                                   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  |:---|:---|
  | everest.io/csi.authentication-source | 表示使用委托挂载对象存储的方式。 取值范围："driver"或"pod" - driver：表示使用插件的全局委托挂载对接存储卷  - pod：表示使用工作负载委托挂载对接存储卷   注意： 配置委托挂载时，请不要同时指定自定义密钥（即csi.storage.k8s.io/node-publish-secret-name和csi.storage.k8s.io/node-publish-secret-namespace参数），如果配置了自定义密钥则优先使用自定义密钥进行对象存储挂载。 |
     
  其余参数说明请参见[kubectl命令行方式](https://support.huaweicloud.com/usermanual-cce/cce_10_0630.html#cce_10_0630__section104927484275)。
#### 静态创建对象存储卷
您可以通过以下方式进行创建。
- [控制台方式]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
  
  2. 在左侧导航栏选择"存储"，在右侧选择"存储卷声明"页签，单击右上角"创建存储卷声明 PVC"，在弹出的窗口中选择"对象存储"类型，创建方式选择"新建存储卷PV"。
  
  3. 在"访问密钥(AK/SK)"配置中根据需求选择"全局委托"或"使用工作负载委托"。 
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002539392293.png "点击放大")
     
     
     
  
  4. 其余配置请根据实际情况设置，参数说明详情请参见[控制台方式](https://support.huaweicloud.com/usermanual-cce/cce_10_0379.html#cce_10_0379__section59401538114911)。
   
- [kubectl命令行方式]
  ```
  apiVersion: v1
  kind: PersistentVolume
  metadata:
    name: pv-obs-example
    annotations:
      pv.kubernetes.io/provisioned-by: everest-csi-provisioner
  spec:
    accessModes:
    - ReadWriteMany
    capacity:
      storage: 1Gi
    csi:
      driver: obs.csi.everest.io
      fsType: obsfs
      volumeAttributes:
        everest.io/obs-volume-type: STANDARD
        everest.io/region: cn-north-4
        storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
        everest.io/csi.authentication-source: driver # 使用委托挂载对象存储
      volumeHandle: obs-normal-static-pv
    persistentVolumeReclaimPolicy: Delete
    storageClassName: csi-obs
  ```
  表2关键参数说明 
  | 参数                                 | 描述                                                                                                                                                                                                                                                                           |
  |:---|:---|
  | everest.io/csi.authentication-source | 表示使用委托挂载对象存储的方式。 取值范围："driver"或"pod" - driver：表示使用插件的全局委托挂载对接存储卷  - pod：表示使用工作负载委托挂载对接存储卷   |
     
  其余参数说明请参见[kubectl命令行方式](https://support.huaweicloud.com/usermanual-cce/cce_10_0379.html#cce_10_0379__section5984163201919)。
