在 Kubernetes 中挂载持久"dynamic"文件的解决方案



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

现在,我正在尝试挂载"凭据.xml"文件(持久卷(,就像我使用"脚本"和"作业"文件夹挂载所做的那样。但它不起作用,因为它是一个文件,而不是一个文件夹。

挂载为 ConfigMap 的解决方案在这里不适用,因为无法预定义文件,因为用户在仪表板中修改了凭据的任何更改。

我正在寻找一种解决方案来像"持久卷"一样挂载此文件

这是我的 YAML 部署(值(文件(它不适用于"詹金斯凭据"挂载(:

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

谢谢

由于所有 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。

最新更新