)]}'
{"grafana/templates/deployment.yaml":[{"author":{"_account_id":17591,"name":"Steve Wilkerson","email":"wilkers.steve@gmail.com","username":"srwilkers"},"change_message_id":"be3a5b8287e219f9224756f59b7f84c64c794a31","unresolved":false,"context_lines":[{"line_number":102,"context_line":"              subPath: datasources.yaml"},{"line_number":103,"context_line":"            - name: pod-provisioning-notifiers"},{"line_number":104,"context_line":"              mountPath: {{ .Values.conf.grafana.paths.provisioning }}/notifiers"},{"line_number":105,"context_line":"            - name: pod-grafana-png"},{"line_number":106,"context_line":"              mountPath: /var/lib/grafana/png"},{"line_number":107,"context_line":"            - name: grafana-etc"},{"line_number":108,"context_line":"              mountPath: /etc/grafana/grafana.ini"},{"line_number":109,"context_line":"              subPath: grafana.ini"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_e865ebb5","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":45},"updated":"2019-07-18 15:24:28.000000000","message":"See comments below","commit_id":"2fbc1b31b9a7beccb9c0966920b69a8deb2f05c2"},{"author":{"_account_id":17591,"name":"Steve Wilkerson","email":"wilkers.steve@gmail.com","username":"srwilkers"},"change_message_id":"be3a5b8287e219f9224756f59b7f84c64c794a31","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          emptyDir: {}"},{"line_number":128,"context_line":"        - name: pod-provisioning-notifiers"},{"line_number":129,"context_line":"          emptyDir: {}"},{"line_number":130,"context_line":"        - name: pod-grafana-png"},{"line_number":131,"context_line":"          emptyDir: {}"},{"line_number":132,"context_line":"        - name: grafana-bin"},{"line_number":133,"context_line":"          configMap:"},{"line_number":134,"context_line":"            name: grafana-bin"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_880d57e9","line":131,"range":{"start_line":130,"start_character":0,"end_line":131,"end_character":22},"updated":"2019-07-18 15:24:28.000000000","message":"Could this cause issues if a user ends up with a large number of dashboard/panel snapshots that are set to never expire? Using an emptyDir here seems a bit risky - do we have alternatives, or are we just simply trusting people to do the right thing?  From what I\u0027m seeing, the default expiration for snapshots seems to be Never","commit_id":"2fbc1b31b9a7beccb9c0966920b69a8deb2f05c2"},{"author":{"_account_id":28735,"name":"Denys Myrhorodskyi","email":"dmyrhorodskyi@mirantis.com","username":"dmyrhorodskyi"},"change_message_id":"1a1e0709ed3ccc40ed647c28f1dec323a666e19a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          emptyDir: {}"},{"line_number":128,"context_line":"        - name: pod-provisioning-notifiers"},{"line_number":129,"context_line":"          emptyDir: {}"},{"line_number":130,"context_line":"        - name: pod-grafana-png"},{"line_number":131,"context_line":"          emptyDir: {}"},{"line_number":132,"context_line":"        - name: grafana-bin"},{"line_number":133,"context_line":"          configMap:"},{"line_number":134,"context_line":"            name: grafana-bin"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_008a101a","line":131,"range":{"start_line":130,"start_character":0,"end_line":131,"end_character":22},"in_reply_to":"7faddb67_72767641","updated":"2019-07-29 12:38:17.000000000","message":"I checked it by draining and cordoning node which runs statefulset pod and it was rescheduled to another node. K8s viersion 1.13.2.","commit_id":"2fbc1b31b9a7beccb9c0966920b69a8deb2f05c2"},{"author":{"_account_id":17591,"name":"Steve Wilkerson","email":"wilkers.steve@gmail.com","username":"srwilkers"},"change_message_id":"5899ee5007dcd153e294477c70c2bec394ab7776","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          emptyDir: {}"},{"line_number":128,"context_line":"        - name: pod-provisioning-notifiers"},{"line_number":129,"context_line":"          emptyDir: {}"},{"line_number":130,"context_line":"        - name: pod-grafana-png"},{"line_number":131,"context_line":"          emptyDir: {}"},{"line_number":132,"context_line":"        - name: grafana-bin"},{"line_number":133,"context_line":"          configMap:"},{"line_number":134,"context_line":"            name: grafana-bin"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_72767641","line":131,"range":{"start_line":130,"start_character":0,"end_line":131,"end_character":22},"in_reply_to":"7faddb67_7c619611","updated":"2019-07-24 15:25:07.000000000","message":"The grafana database only uses the emptydir at /var/lib/grafana/data when the database type is set to sqlite3 - the chart\u0027s database type default is set to mysql (mariadb in our case), so the emptydir here shouldn\u0027t be used in this case.\n\nIn the past, I\u0027ve noticed occasional crashes during Grafana\u0027s startup when deploying multiple replicas - these crashes are almost always a result of multiple Grafana replicas trying to update the backing database at the same time.  One of the solutions I toyed around with was moving Grafana to a statefulset to enforce sequential startup to avoid those types of crashes.  That would also address the solution you mentioned - allowing us to back the snapshot directory with a PVC instead of an emptydir.  The only downside I see is that older versions of Kubernetes don\u0027t support the rescheduling of statefulsets if the node they\u0027re scheduled to becomes unavailable.  I\u0027m wondering if that\u0027s something to be concerned about here or not","commit_id":"2fbc1b31b9a7beccb9c0966920b69a8deb2f05c2"},{"author":{"_account_id":28735,"name":"Denys Myrhorodskyi","email":"dmyrhorodskyi@mirantis.com","username":"dmyrhorodskyi"},"change_message_id":"18fe8d0ada4e01596eca8259e82cf8a02265fd74","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          emptyDir: {}"},{"line_number":128,"context_line":"        - name: pod-provisioning-notifiers"},{"line_number":129,"context_line":"          emptyDir: {}"},{"line_number":130,"context_line":"        - name: pod-grafana-png"},{"line_number":131,"context_line":"          emptyDir: {}"},{"line_number":132,"context_line":"        - name: grafana-bin"},{"line_number":133,"context_line":"          configMap:"},{"line_number":134,"context_line":"            name: grafana-bin"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_933c9fe1","line":131,"range":{"start_line":130,"start_character":0,"end_line":131,"end_character":22},"in_reply_to":"7faddb67_880d57e9","updated":"2019-07-19 10:19:28.000000000","message":"I think I can change this chart to use persistentVolume as a default volume type with an option to change it to emptyDir. Will it be right approach?","commit_id":"2fbc1b31b9a7beccb9c0966920b69a8deb2f05c2"},{"author":{"_account_id":28735,"name":"Denys Myrhorodskyi","email":"dmyrhorodskyi@mirantis.com","username":"dmyrhorodskyi"},"change_message_id":"f4bce0c9163ae138c72dcd38161f7b474cbd487a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          emptyDir: {}"},{"line_number":128,"context_line":"        - name: pod-provisioning-notifiers"},{"line_number":129,"context_line":"          emptyDir: {}"},{"line_number":130,"context_line":"        - name: pod-grafana-png"},{"line_number":131,"context_line":"          emptyDir: {}"},{"line_number":132,"context_line":"        - name: grafana-bin"},{"line_number":133,"context_line":"          configMap:"},{"line_number":134,"context_line":"            name: grafana-bin"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_7c619611","line":131,"range":{"start_line":130,"start_character":0,"end_line":131,"end_character":22},"in_reply_to":"7faddb67_933c9fe1","updated":"2019-07-23 14:10:32.000000000","message":"But I see that volumeClaimTemplates is used only with stateful set, so maybe it is not best decision to make it with grafana. And regarding never expiring snapshots, default value of expiration can not be changed via script or API request so we should trust people to do the right thing. By the way current version (with Grafana 5.0.0) stores snapshots in grafana.db which is placed in /var/lib/grafana/data which is an emptyDir.","commit_id":"2fbc1b31b9a7beccb9c0966920b69a8deb2f05c2"},{"author":{"_account_id":17591,"name":"Steve Wilkerson","email":"wilkers.steve@gmail.com","username":"srwilkers"},"change_message_id":"e2cbc7484d07d13f1f070ca614d0efa444cecc47","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        - name: data"},{"line_number":148,"context_line":"          emptyDir: {}"},{"line_number":149,"context_line":"{{ if $mounts_grafana.volumes }}{{ toYaml $mounts_grafana.volumes | indent 8 }}{{ end }}"},{"line_number":150,"context_line":"{{- if .Values.volume.enabled }}"},{"line_number":151,"context_line":"  volumeClaimTemplates:"},{"line_number":152,"context_line":"  - metadata:"},{"line_number":153,"context_line":"      name: pod-grafana-png"},{"line_number":154,"context_line":"    spec:"},{"line_number":155,"context_line":"      accessModes: [ \"ReadWriteOnce\" ]"},{"line_number":156,"context_line":"      resources:"},{"line_number":157,"context_line":"        requests:"},{"line_number":158,"context_line":"          storage: {{ .Values.volume.size }}"},{"line_number":159,"context_line":"      storageClassName: {{ .Values.volume.class_name }}"},{"line_number":160,"context_line":"{{- end }}"},{"line_number":161,"context_line":"{{- end }}"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7faddb67_e96df802","line":160,"range":{"start_line":150,"start_character":0,"end_line":160,"end_character":10},"updated":"2019-08-05 13:24:31.000000000","message":"After thinking about this some more,  this introduces a new problem.  If we\u0027re transitioning Grafana to a statefulset and using a PVC with a RWO access mode, it means each Grafana replica will store snapshots it takes in the PV allocated for that replicas claim.  When a user then attempts to access or view those snapshots, there is no guarantee that their request will be routed to the Grafana instance that has the desired snapshot(s) stored (stated differently, there is no mechanism for ensuring each Grafana replica has a copy of snapshots that are taken).","commit_id":"9475d057713d6d806503a972f22c7851beb87f85"},{"author":{"_account_id":28735,"name":"Denys Myrhorodskyi","email":"dmyrhorodskyi@mirantis.com","username":"dmyrhorodskyi"},"change_message_id":"9c2969a9091c79e2144f5e4411ed7ff39e7b8586","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        - name: data"},{"line_number":148,"context_line":"          emptyDir: {}"},{"line_number":149,"context_line":"{{ if $mounts_grafana.volumes }}{{ toYaml $mounts_grafana.volumes | indent 8 }}{{ end }}"},{"line_number":150,"context_line":"{{- if .Values.volume.enabled }}"},{"line_number":151,"context_line":"  volumeClaimTemplates:"},{"line_number":152,"context_line":"  - metadata:"},{"line_number":153,"context_line":"      name: pod-grafana-png"},{"line_number":154,"context_line":"    spec:"},{"line_number":155,"context_line":"      accessModes: [ \"ReadWriteOnce\" ]"},{"line_number":156,"context_line":"      resources:"},{"line_number":157,"context_line":"        requests:"},{"line_number":158,"context_line":"          storage: {{ .Values.volume.size }}"},{"line_number":159,"context_line":"      storageClassName: {{ .Values.volume.class_name }}"},{"line_number":160,"context_line":"{{- end }}"},{"line_number":161,"context_line":"{{- end }}"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7faddb67_3b7976c4","line":160,"range":{"start_line":150,"start_character":0,"end_line":160,"end_character":10},"in_reply_to":"7faddb67_e96df802","updated":"2019-08-29 16:33:59.000000000","message":"I think that the purpose of this change request is to update grafana version, not to make it scalable.","commit_id":"9475d057713d6d806503a972f22c7851beb87f85"}]}
