有没有办法将声明作为 VolumeClaimTemplate 传递,然后将其值提供给管道,以便在管道执行时创建 PipelineRun 而不是 PVC 时使用这些值?
我有这个 VolumeClaimTemplate(参见图片),需要通过 tkn start pipeline-name CLI 命令传递其详细信息:
我的整个 CLI 命令如下:
tkn pipeline start run-tests-portal-with-report --showlog \
-w name=shared-data,claimName=VolumeClaimTemplate,storageClassName=default-netapp-disk,accessModes=ReadWriteOnce,storage=1Gi,volumeMode=Filesystem \
-w name=git-credentials,secret=gh-token \
-p repo-url=https://github.com/my-project-url \
-p revision=PRJT-123
现在这是我在 openshift 中遇到的错误:
消息:>- Pod 状态 "PodScheduled":"False";消息:“0/12 个节点可用: 12 持久卷声明“VolumeClaimTemplate”未找到。抢占: 0/12个节点可用:12个抢占对调度没有帮助。”
我理解这个问题,但如何通过 CLI 告诉它“使用这个 VolumeClaimTemplate”,其中“StorageClass 是 default-netapp-disk”以及其他详细信息(尽管当我手动选择存储时) UI 中的类会自动设置访问模式、大小和卷模式),然后它将使用它在 PipelineRun 中运行时创建PersistentVolume?
我希望这已经足够解释了,这是否可行?
我尝试了很多方法但找不到解决方案,我什至不确定这是否可行。
您提供的命令将在
PipelineRun
中创建一个不正确的工作区,如下所示:
workspaces:
- name: source
persistantVolumeClaim:
claimName: VolumeClaimTemplate
使用
VolumeClaimTemplateFile
CLI 时,需要将 —workspace
选项与 tkn
参数一起使用,如下所示 (https://github.com/tektoncd/cli/pull/1066):
tkn pipeline start pipeline-with-workspace --workspace name=myworkspace,volumeClaimTemplateFile=/path/to/pvc.yaml
其中
pvc.yaml
是适合您的情况的文件:
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
storageClassName: default-netapp-disk
resources:
requests:
storage: 1Gi
通过运行命令,生成的
PipelineRun
将是:
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: my-pipelinerun-name
spec:
workspaces:
- name: myworkspace
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
storageClassName: default-netapp-disk
resources:
requests:
storage: 1Gi
pipelineRef:
name: pipeline-with-workspace