fix: set storageClassName=local-path in PVC patch to match live cluster
Some checks failed
scrum-manager/pipeline/head There was a failure building this commit

kubectl apply computes a 3-way merge. The base PVC has no storageClassName
(nil), but the already-bound PVC in the cluster has storageClassName=local-path.
This diff caused apply to attempt a mutation on a bound PVC — forbidden by k8s.

Fix: patch the PVC with storageClassName=local-path so desired state matches
live state and apply produces no diff on the PVC.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
tusuii
2026-02-27 23:08:36 +05:30
parent 5ed8d0bbdc
commit 254052d798
2 changed files with 13 additions and 6 deletions

View File

@@ -19,10 +19,15 @@ resources:
- ../../base - ../../base
- ingress.yaml - ingress.yaml
# NOTE: mysql-pv.yaml and mysql-pvc-patch.yaml are only needed on clusters patches:
# without a default StorageClass. This cluster uses 'local-path' (dynamic # This patch explicitly sets storageClassName: local-path to match the live
# provisioner), so the base PVC works as-is and must NOT be patched after # PVC in the cluster. Without it, the base PVC (no storageClassName = nil)
# it is already bound. # diffs against the existing "local-path" value and kubectl apply tries to
# mutate a bound PVC, which Kubernetes forbids.
- path: mysql-pvc-patch.yaml
target:
kind: PersistentVolumeClaim
name: mysql-data-pvc
images: images:
- name: scrum-frontend - name: scrum-frontend

View File

@@ -3,8 +3,10 @@ kind: PersistentVolumeClaim
metadata: metadata:
name: mysql-data-pvc name: mysql-data-pvc
spec: spec:
storageClassName: manual # Must explicitly match the storageClassName already on the live PVC.
volumeName: mysql-pv # Without this, kubectl apply diffs nil (base has no field) vs "local-path"
# (cluster) and tries to mutate a bound PVC — which Kubernetes forbids.
storageClassName: local-path
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources: