ワークフローの手順でデータまたは状態を共有する必要がある場合は、ワークフローにボリュームをマウントできます。ワークフローには、OSSボリュームとNASボリュームをマウントできます。 このトピックでは、静的にプロビジョニングされたボリュームをワークフローにマウントする方法について説明します。
使用上の注意
OSSボリュームとNASボリュームは、異なるシナリオで使用されます。さまざまなタイプのボリュームの使用上の注意、制限、および課金については、ストレージの概要を参照してください。
例
OSSボリュームの使用
次のサンプルコードに基づいてOSSボリュームを作成します。
詳細については、静的にプロビジョニングされたOSSボリュームのマウントを参照してください。
apiVersion: v1 kind: Secret metadata: name: oss-secret namespace: argo stringData: akId: <yourAccessKey ID> # 実際のAccessKey IDに置き換えます。 akSecret: <yourAccessKey Secret> # 実際のAccessKeyシークレットに置き換えます。 --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-oss namespace: argo labels: alicloud-pvname: pv-oss spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: pv-oss # 実際のPV名に置き換えます。 nodePublishSecretRef: name: oss-secret namespace: argo volumeAttributes: bucket: <your bucket name> # 実際のOSSバケット名に置き換えます。 url: "oss-<your region id>-internal.aliyuncs.com" # <your region id>をOSSバケットのリージョンIDに置き換えます。たとえば、中国(北京)の場合はoss-cn-beijing-internal.aliyuncs.comです。 otherOpts: "-o max_stat_cache_size=0 -o allow_other -o multipart_size=30 -o parallel_count=20" # -o max_stat_cache_size=0 path: "/" # OSSバケットのルートディレクトリ。OSSバケットのサブディレクトリを指定することもできます。例:testdir/testdir1。 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-oss namespace: argo spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-ossオプションのパラメーター
OSSボリュームのカスタムパラメーターを
-o *** -o ***形式で設定できます。例:-o umask=022 -o max_stat_cache_size=0 -o allow_other。パラメーター
説明
umask
ossfs内のファイルのパーミッションマスクを変更します。たとえば、
umask=022を指定すると、ossfs内のファイルのパーミッションマスクは755に変更されます。デフォルトでは、OSS SDKまたはOSSコンソールを使用してアップロードされたファイルのパーミッションマスクは、ossfsでは640です。したがって、読み取りと書き込みを分割する場合は、umaskパラメーターを指定することをお勧めします。max_stat_cache_size
メタデータをメタデータキャッシュに格納できるファイルの最大数。メタデータのキャッシュにより、リスト操作を高速化できます。ただし、OSSコンソール、OSS SDK、ossutilなどのossfs以外の方法を使用してファイルを変更した場合、ファイルのキャッシュされたメタデータは同期的に更新されません。その結果、キャッシュされたメタデータが古くなり、LIST操作の結果が不正確になる可能性があります。
allow_other
他のユーザーがマウントされたディレクトリにアクセスできるようにします。ただし、これらのユーザーはディレクトリ内のファイルにアクセスできません。
その他のパラメーターの詳細については、オプションを参照してください。
次のサンプルコードを使用して、OSSボリュームを使用するワークフローを作成します。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: volumes-existing- namespace: argo spec: entrypoint: volumes-existing-example volumes: # my-existing-volumeをvolumes-existing-exampleテンプレートに引数として渡します。 # k8s Podの仕様と同じ構文です。 - name: workdir persistentVolumeClaim: claimName: pvc-oss templates: - name: volumes-existing-example steps: - - name: generate template: whalesay - - name: print template: print-message - name: whalesay container: image: mirrors-ssl.aliyuncs.com/busybox:latest command: [sh, -c] args: ["echo generating message in volume; echo hello world | tee /mnt/vol/hello_world.txt"] # ボリュームにメッセージを生成しています。 volumeMounts: - name: workdir mountPath: /mnt/vol - name: print-message container: image: mirrors-ssl.aliyuncs.com/alpine:latest command: [sh, -c] args: ["echo getting message from volume; find /mnt/vol; cat /mnt/vol/hello_world.txt"] # ボリュームからメッセージを取得しています。 volumeMounts: - name: workdir mountPath: /mnt/vol
NASボリュームの使用
次のサンプルコードを使用して、静的にプロビジョニングされたNASボリュームを作成します。
詳細については、静的にプロビジョニングされたNASボリュームのマウントを参照してください。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas namespace: argo labels: alicloud-pvname: pv-nas spec: capacity: storage: 100Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas # PVの名前を指定します。 volumeAttributes: server: "<your nas filesystem id>.cn-beijing.nas.aliyuncs.com" path: "/" mountOptions: - nolock,tcp,noresvport - vers=3 --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas namespace: argo spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi selector: matchLabels: alicloud-pvname: pv-nas次のサンプルコードを使用して、NASボリュームを使用するワークフローを作成します。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: volumes-existing- namespace: argo spec: entrypoint: volumes-existing-example volumes: # my-existing-volumeをvolumes-existing-exampleテンプレートに引数として渡します。 # k8s Podの仕様と同じ構文です。 - name: workdir persistentVolumeClaim: claimName: pvc-nas templates: - name: volumes-existing-example steps: - - name: generate template: whalesay - - name: print template: print-message - name: whalesay container: image: mirrors-ssl.aliyuncs.com/busybox:latest command: [sh, -c] args: ["echo generating message in volume; echo hello world | tee /mnt/vol/hello_world.txt"] # ボリュームにメッセージを生成しています。 volumeMounts: - name: workdir mountPath: /mnt/vol - name: print-message container: image: mirrors-ssl.aliyuncs.com/alpine:latest command: [sh, -c] args: ["echo getting message from volume; find /mnt/vol; cat /mnt/vol/hello_world.txt"] # ボリュームからメッセージを取得しています。 volumeMounts: - name: workdir mountPath: /mnt/vol