本文为您介绍如何通过 YAML 的方式使用 OSS 静态存储卷。

前提条件

您已经创建 OSS 静态存储卷,请参见创建存储空间
说明 相同 region 的 OSS Bucket 可以使用内网地址进行挂载。

创建 Secret

以下为通过 Secret 来配置用户的 AccessKey 信息的 YAML 示例文件:

apiVersion: v1
kind: Secret
metadata:
  name: oss-secret
  namespace: default
stringData:
  akId: ***
  akSecret: ***
说明 创建 Secret 选择的 Namespace 需要和应用所在 Namespaces 一致。

本示例中,akIdakSecret 需要替换成用户的 AccessKeyID 和 AccessKeySecret。

创建静态卷 PV/PVC

以下为创建静态卷 PV/PVC 的 YAML 示例文件:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: oss-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: oss-csi-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: ossplugin.csi.alibabacloud.com
    volumeHandle: oss-csi-pv // 需要和pv名字一致;
    nodePublishSecretRef:
      name: oss-secret
      namespace: default
    volumeAttributes:
      bucket: "oss"
      url: "oss-cn-hangzhou.aliyuncs.com"
      otherOpts: "-o max_stat_cache_size=0 -o allow_other"
  • nodePublishSecretRef:定义挂载 PV 时通过 Secret 对象来获取 AccessKey 信息。
  • volumeHandle:配置 PV 的名称。
  • bucket: 需要挂载的 OSS Bucket。
  • url:挂载 OSS 的接入域名,挂载节点和 Bucket 相同 region 时,可使用内网地址。
  • otherOpts:挂载 OSS 时支持输入定制化参数,格式为:-o *** -o ***

配置 PV/PVC 的 AccessKey

创建静态卷 PV/PVC是通过 Secret 为 plugin 提供 AccessKey 信息,您也可以直接在 PV 中配置 AccessKey 信息。示例 YAML 文件如下:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: oss-csi-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: ossplugin.csi.alibabacloud.com
    volumeHandle: oss-csi-pv // 需要和pv名字一致;
    volumeAttributes:
      bucket: "oss"
      url: "oss-cn-hangzhou.aliyuncs.com"
      otherOpts: "-o max_stat_cache_size=0 -o allow_other"
      akId: "***"
      akSecret: "***"

创建应用

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        volumeMounts:
          - name: oss-pvc
            mountPath: "/data"
      volumes:
        - name: oss-pvc
          persistentVolumeClaim:
            claimName: oss-pvc

您也可以通过控制台的方式使用 OSS 静态存储卷,请参见通过控制台使用 OSS 静态存储卷