1

这个想法是将用户生成的数据持久存储在 Jenkins Dashboard(作业、脚本编写器、凭据等)中,因此当我在每次重新启动后挂载这些卷时,我能够在作业中检索存储的数据(挂载的卷)和脚本家。(我没有将 JcasC(yaml 文件)的解决方案用于作业、脚本编写器……因为用户将从 UI 中动态定义它们)。

现在,我正在尝试挂载“credentials.xml”文件(持久卷),就像我使用“scriptler”和“jobs”文件夹挂载所做的那样。但它不起作用,因为它是一个文件,而不是文件夹。

作为 ConfigMap 挂载的解决方案在此处不适用,因为该文件无法预定义,因为用户在仪表板中针对凭据的任何更改进行了修改。

我正在寻找一种像“持久卷”一样挂载这个文件的解决方案

这是我的 YAML 部署(值)文件(它不适用于“jenkins-credentials”挂载):

persistence:
  volumes:
    - name: jenkins-jobs
      persistentVolumeClaim:
        claimName: jenkins-jobs

    - name: jenkins-scriptlers
      persistentVolumeClaim:
        claimName: jenkins-scriptlers

    - name: jenkins-credentials
      configMap:
        name: cm-credentials-xml

  mounts:
    - name: jenkins-jobs
      mountPath: /var/jenkins_home/jobs
      readOnly: false

    - name: jenkins-scriptlers
      mountPath: /var/jenkins_home/scriptler
      readOnly: false

    - name: jenkins-credentials
      mountPath: /var/jenkins_home/credentials.xml
      #subPath: credentials.xml
      readOnly: false

谢谢

4

1 回答 1

2

由于所有 VolumeMounts 共享相同的“卷”和目录,因此/var/jenkins_home您实际上需要一个主卷。像这样的东西应该工作。(我测试了自己安装文件并为我工作)这假设您的持久卷的根(/)具有主要内容。

persistence:
  volumes:
    - name: jenkins-home
      persistentVolumeClaim:
        claimName: jenkins-home

  mounts:
    - name: jenkins-home
      mountPath: /var/jenkins_home/jobs
      subpath: jobs
      readOnly: false

    - name: jenkins-home
      mountPath: /var/jenkins_home/scriptler
      subPath: scriptler
      readOnly: false

    - name: jenkins-home
      mountPath: /var/jenkins_home/credentials.xml
      subPath: credentials.xml
      readOnly: false

注意:这不是 K8s 配置,所以我假设它是 Jenkins 配置 YAML。

于 2020-06-22T23:37:21.620 回答