ここでは、静的 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