ここでは、静的 OSS (Object Storage Service) ボリュームの使用方法について説明します。

始める前に

静的 OSS ボリュームが作成されていること。 詳細については、「 バケットの作成」をご参照ください。
OSS バケットがアタッチされているノードが OSS バケットと同じリージョンにある場合、OSS バケットのイントラネットアドレスを使用できます。

シークレットの作成

次のサンプル YAML ファイルは、シークレットを使用して AccessKey 情報を設定する方法を示しています。

apiVersion: v1
kind: Secret
metadata:
  name: oss-secret
  namespace: default
stringData:
  akId: ***
  akSecret: ***
シークレットは、アプリケーションと同じ名前空間で作成する必要があります。

akId および akSecretの値を、それぞれ AccessKey ID および AccessKey Secret と置き換えます。

PV および PVC の作成

次のサンプル YAML ファイルは、静的ボリュームを使用する目的で、永続ボリューム (PV) と永続ボリュームクレーム (PVC) を作成する方法を示しています。

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: data-id
    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 がアタッチされたときに AccessKey 情報取得に使用されるシークレット。
  • volumeHandle: PV 名。
  • bucket: アタッチする OSS バケット。
  • url: OSS バケットのエンドポイント。 OSS バケットがアタッチされているノードが OSS バケットと同じリージョンにある場合、OSS バケットのイントラネットアドレスを使用できます。
  • otherOpts: -o *** -o *** の形式で、OSS バケエットをアタッチする時のカスタムパラメーター。

PV 内での AccessKey 情報の直接設定

PV および PVC の作成上に述べたように、シークレットを使用して、プラグインの 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: data-id
    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