Configuring the Data Grid Using the Helm Chart

Default Helm Chart

The InsightEdge Helm chart has a list of supported values that can be configured. To view this list, use the following Helm command:

helm inspect insightedge

The values.yaml file is printed in the command window, and each configurable value has a short explanation above it. The indentation in this printout indicates a use of a ".' (dot) in the value name. For example, the high availability property for the Platform Manager is listed as follows in the file:

manager:
ha: false

The value you will set will look like this in the command window: manager.ha=true

Customizing a Helm Chart

You can create additional values.yaml files with customized values.

The following Helm command shows how a custom YAML file can be used to override the values in the original GigaSpaces Helm chart:

helm install insightedge -f customValues.yaml --name hello

Kubernetes Services in KubeGrid

Kubernetes uses services to externalize functionality in clusters to the "outside world". Kubernetes services define a logical set of Pods that support the services themselves, and a policy by which to access them. This policy is defined using the service type. GigaSpaces uses the following service types in deployment:

  • LoadBalancer - External load balancer that is dedicated to a specific service, and functions as a gateway to the pods that support the service.

  • NodePort - Provides access to the service directly via the node on which the supporting pods are deployed.

How Are Kubernetes Services Deployed in KubeGrid?

The GigaSpaces Helm chart can be modified to suit the needs of your organization and system environment, specifically the manager and pu (service) sections. The manager section is relevant for all GigaSpaces deployments in Kubernetes, while the pu section only needs attention if you require Space-based remoting.

The GigaSpaces manager and pu services are configured as follows:

  • The default service type is loadBalancer.
  • The NodePort field is empty by default, meaning that for each process (api, lrmi, and lus), Kubernetes assigns a random value to the node port in the range of 30000-32767.

You can set the NodePort value manually if necessary.

To view the full service configuration, including ports, run the following command:

kubectl describe svc <service name> 

It is strongly recommended to leave the default port values. For more information about service types and when it may be advisable to modify the values, see Space-Based Remoting in Kubernetes.

Scaling the System Using the GigaSpaces Helm Chart

GigaSpaces supports rolling updates of the Helm chart so that you can scale your system up or down as necessary. Configure the following to ensure that you keep your data and system configuration intact:

  • Readiness probe - To update the chart while maintaining data consistency, you must enable the readiness probe in either the current or the new Helm chart. This ensures that the update process, which first terminates the backup pods, won't begin to update the primary pods before the backup pods have fully recovered and reloaded the data, and can therefore take leadership when the primary pods are terminated.
  • Reuse- values flag - You must mark the reuse-values flag to ensure that all your custom chart configurations (including the license and partition definitions) are not overwritten by the update process. If you don't mark this flag, your system will revert to the default configurations.

For example, run the following command to change the amount of memory for each service (pu) pod from 400 MB to 600 MB.

helm upgrade demo xap --set pu.resources.limits.memory=600Mi,pu.readinessProbe.enabled=true --reuse-values