Persistence Configuration
Persistent storage is required for multiple components within kdb Insights Enterprise. This storage can be categorized as either local or shared.
Local is storage that is only required to be read or written to by a single Pod, shared is storage that is required to be accessed by multiple Pods.
The Global Persistence configuration, allows the user to set configuration required for PVC once for all components requiring persistent storage.
global:
persistence:
local:
storageClass: ""
storageSize: "20Gi"
accessModes:
- "ReadWriteOnce"
shared:
storageClass: "rook-cephfs"
storageSize: "20Gi"
accessModes:
- "ReadWriteMany"
The persistence key contains two objects local and shared, these represent the two categories of storage within kdb Insights Enterprise.
local
| Variable | Type | Example |
|---|---|---|
local |
object |
See PVC Configuration |
Overrides and defaults for PVC treated as local
shared
| Variable | Type | Example |
|---|---|---|
shared |
object |
See PVC Configuration |
Overrides and defaults for PVC treated as shared
PVC Configuration
The configuration contained within both local and shared
storageClass
| Variable | Type | Example |
|---|---|---|
storageClass |
string |
"rook-cephfs" |
Where a sub chart has not been configured to use local values, storageClass is used to set the storage class for all PVC.
storageClass
Where the storageClass has been set to "" the cluster default will be used
storageSize
| Variable | Type | Example |
|---|---|---|
storageSize |
string |
"2Gi" |
storageSize acts as a default, where the sub chart has not defined a storageSize for its PVC, this will be used as the storage request.
accessModes
| Variable | Type | Example |
|---|---|---|
accessModes |
[]string |
"[ ReadWriteMany ]" |
Where a sub chart has not been configured to use local values, accessModes is used to set the access modes for all PVC.
Sub Chart Configuration
Sub charts should contain matching fields under the persistence key.
It may also have additional keys for unique configuration to that chart.
persistence:
useLocalValues: true
storageClass: ""
storageSize: "20Gi"
accessModes:
- "ReadWriteOnce"
useLocalValues
| Variable | Type | Example |
|---|---|---|
useLocalValues |
boolean |
true |
When set to true the sub chart values will take precedence over global configuration for the PVC creation.
This will cause the sub chart storageClass and accessModes to be applied.
accessModes
| Variable | Type | Example |
|---|---|---|
accessModes |
[]string |
"[ ReadWriteMany ]" |
Set the access modes for the sub chart PVC.
Where useLocalValues has been enabled, these access modes will be applied.
accessModes
Where the accessModes is undefined and useLocalValues has been enabled, it will fall back to the global configuration.
storageClass
| Variable | Type | Example |
|---|---|---|
storageClass |
string |
"rook-cephfs" |
Set the storage class for the sub chart PVC.
Where useLocalValues has been enabled, this storage class will be applied.
storageClass
Where the storageClass is undefined or has been set to "" the cluster default will be used. This varies from accessModes as "" may be the desired storage class.
Charts using PVC
Currently within kdb Insights Enterprise the following charts creates PVC resources and can make use of the above configuration options.
| Chart | PVC Name | PVC Type |
|---|---|---|
| insights | insights-packages-pvc |
shared |
| gui-gateway | insights-gui-gateway-insights-gui-gateway-$ORDINAL |
local |
| kxi-acc-svc | insights-kxi-acc-svc-data-pvc-insights-kxi-acc-svc-$ORDINAL |
local |
| kxi-controller | insights-kxi-controller-data-pvc |
local |
Release name
It is assumed that the install was deployed with release name insights
Example Configuration
global:
persistence:
local:
storageClass: "defaulted-class"
storageSize: "20Gi"
accessModes:
- "ReadWriteOnce"
shared:
storageClass: "rook-cephfs"
storageSize: "30Gi"
accessModes:
- "ReadWriteMany"
insights-packages-pvc
global:
...
packages:
useLocalValues: true
storageClass: "sharedfiles"
storageSize: 20Gi
accessModes:
- ReadWriteMany
Set to useLocalValues: true, with object fully populated, will not use any global configuration.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: insights-packages-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
storageClassName: sharedfiles
insights-gui-gateway
global:
...
gui:
gui-gateway:
persistence:
useLocalValues: true
storageClass: "gui-class"
Set to useLocalValues: true, with object partially populated. The global.persistence.local object is used to default the missing storageSize and accessModes fields.
volumeClaimTemplates:
- metadata:
name: insights-gui-gateway
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: gui-class
insights-kxi-controller-data-pvc
global:
...
kxi-controller:
persistence:
useLocalValues: false
storageClass: "controller-class"
storageSize: 2Gi
accessModes:
- ReadWriteMany
Set to useLocalValues: false, with object fully populated. The global.persistence.local object is used to configure the storageSize and accessModes fields. storageSize is still however taken from the charts values if present.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: insights-kxi-controller-data-pvc
annotations:
"helm.sh/resource-policy": keep
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: defaulted-class