Estoy tratando de reemplazar el almacenamiento en memoria de la implementación de Grafana con persistent storage usando kustomize . Lo que estoy tratando de hacer es eliminar el in-memory storage y luego mapear persistent storage . Pero cuando lo estoy implementando, me da un error.
Error
La implementación "grafana" no es válida: spec.template.spec.containers[0].volumeMounts[1].name: No encontrado: "grafana-storage"
Versión personalizada
{Version:kustomize/v4.0.5 GitCommit:9e8e7a7fe99ec9fbf801463e8607928322fc5245 BuildDate:2021-03-08T20:53:03Z GoOs:linux GoArch:amd64}
personalización.yaml
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - https://github.com/prometheus-operator/kube-prometheus - grafana-pvc.yaml patchesStrategicMerge: - grafana-patch.yamlgrafana-pvc.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: grafana-storage namespace: monitoring labels: billingType: "hourly" region: sng01 zone: sng01 spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi storageClassName: ibmc-file-bronzegrafana-parche.yaml
apiVersion: apps/v1 kind: Deployment metadata: labels: app: grafana name: grafana namespace: monitoring spec: template: spec: volumes: # use persistent storage for storing users instead of in-memory storage - $patch: delete <---- trying to remove the previous volume name: grafana-storage - name: grafana-storage persistentVolumeClaim: claimName: grafana-storage containers: - name: grafana volumeMounts: - name: grafana-storage mountPath: /var/lib/grafanapor favor ayuda.
El $patch: delete no parece funcionar como cabría esperar.
Puede ser bueno abrir un problema en kustomize github: https://github.com/kubernetes-sigs/kustomize/issues y preguntar a los desarrolladores al respecto.
Aunque aquí está el parche que probé, y parece funcionar:
apiVersion: apps/v1 kind: Deployment metadata: labels: app: grafana name: grafana namespace: monitoring spec: template: spec: volumes: - name: grafana-storage emptyDir: null persistentVolumeClaim: claimName: grafana-storage containers: - name: grafana volumeMounts: - name: grafana-storage mountPath: /var/lib/grafanaLo siguiente también debería funcionar en teoría:
spec: volumes: - $retainKeys: - name - persistentVolumeClaim name: grafana-storage persistentVolumeClaim: claimName: grafana-storagePero en la práctica no es así, y creo que es porque kustomize tiene sus propias implementaciones de fusión estratégica (diferente a k8s).