如何为GitLab AutoDevops部署的Deployment添加PersistentVolumeClaim
问题1:你的YAML配置存在明确错误
核心问题是新增的volumeMounts、volumes字段位置错误:你将这两个字段放在了模板开头{{- if not .Values.application.initializeCommand -}}对应的结束标记{{- end -}}之外。
整个Deployment资源的定义全部包裹在这个if判断块内,你新增的内容写到了判断块外,渲染后会出现结构断裂,YAML解析器无法识别正确结构,报错指向的POSTGRES_HOST行只是结构错乱后的虚假指向,和该字段本身无关。
正确的修改方式如下:
- 将
volumeMounts移到resources字段之后、{{- end -}}之前,和ports/livenessProbe等容器级配置保持同级(8空格缩进) - 将
volumes移到containers字段同级的位置,和imagePullSecrets保持同级(6空格缩进) - 新增
readOnly: true配置满足你只读访问节点存储的需求
修改后的对应部分模板示例:
resources: {{ toYaml .Values.resources | indent 12 }} # 新增volumeMounts在此处 volumeMounts: - mountPath: /data name: test-pvc readOnly: true {{- end -}} # 新增volumes在此处 volumes: - name: test-pvc persistentVolumeClaim: claimName: test-api-claim
问题2:有更简便的原生方案实现PVC挂载,无需修改Chart模板
你使用的1.0.7版本auto-deploy-app Chart原生支持extraVolumes和extraVolumeMounts参数,直接通过values配置即可完成挂载,不需要修改deployment.yaml模板,后续升级Chart也不会冲突,有两种实现方式:
方案1:通过CI/CD变量配置(无需修改项目文件)
在GitLab项目「设置- CI/CD -变量」中新增变量HELM_UPGRADE_EXTRA_ARGS,值为:
--set extraVolumeMounts[0].name=test-pvc --set extraVolumeMounts[0].mountPath=/data --set extraVolumeMounts[0].readOnly=true --set extraVolumes[0].name=test-pvc --set extraVolumes[0].persistentVolumeClaim.claimName=test-api-claim
方案2:通过Chart的values.yaml配置
在项目./chart目录下的values.yaml中添加以下内容:
extraVolumeMounts: - name: test-pvc mountPath: /data readOnly: true extraVolumes: - name: test-pvc persistentVolumeClaim: claimName: test-api-claim
内容的提问来源于stack exchange,提问作者orerry13
相关产品推荐
相关产品推荐

