Skip to main content

Shyama Kubernetes Helm Chart

Shyama Central Server can be installed in Kubernetes Cluster environments using Helm Charts.

The Shyama server is installed as a Statefulset along with an optional Postgres DB as a side container

Prerequisites

  • Kubernetes 1.19+
  • Helm 3.2.0+
  • PV provisioner support in the underlying infrastructure

Install Instructions

The steps to install the Shyama Helm chart are :

  • Add Gyeeta Repo to Helm
  • Fetch and edit the values.yaml for the Shyama chart
  • Install the Shyama chart with the edited values

helm repo add gyeeta https://gyeeta.io/helmcharts
helm repo update
helm show values gyeeta/shyama > /tmp/shyama.yaml

# Thereafter you can edit the /tmp/shyama.yaml file if you need to change any option.
# After editing the /tmp/shyama.yaml, install the Shyama Helm chart using :

helm install --namespace gyeeta --create-namespace shyama1 gyeeta/shyama -f /tmp/shyama.yaml

Uninstalling the Chart

To uninstall the Shyama deployment say shyama1 as per command above :

helm uninstall shyama1

Shyama Chart Parameters

The default Chart config can be obtained using the command :

helm show values gyeeta/shyama > /tmp/shyama.yaml

Then users can edit the /tmp/shyama.yaml file, if needed.

info

No parameter is mandatory and users can skip setting any values (use the default values) while installing the Shyama chart.

NameDescriptionData TypeDefault Value
shyama_config.shyama_nameName of shyama instance : Name must start with keyword shyama : If not specified, auto-generatedString""
shyama_config.shyama_secretPassword string to be used by remote Madhava servers to authenticate. If not specified, auto-generatedString""
shyama_config.cloud_typeCloud Operator : Specify as either of aws, gcp, azure. For other clouds or on-prem, leave blankString""
shyama_config.region_nameRegion Name : Ignore if cloud_type is set. For on-prem or other clouds, specify as the Network region nameString""
shyama_config.zone_nameZone Name : Ignore if cloud_type is set. For on-prem or other clouds, specify as the Network Zone nameString""
shyama_config.min_madhavaMinimum number of Madhava servers that should register with Shyama before Shyama accepts any Host Agent parthaNumber1
shyama_config.webserver_urlWebserver URL for use in alert payloads. If not specified, auto-generatedString""
shyama_config.logtofileProcess Log sent to file instead of stdout/stderr. If true will use the emptyDir mount point for loggingBooleantrue
shyama_config.db .postgres_hostnamePostgres DB Host to connect to. If postgres.enabled is true, then specify as localhostStringlocalhost
shyama_config.db .postgres_portPostgres DB Port to connect to. If postgres.enabled is true, then specify as 10040Number10040
shyama_config.db .external_postgres_userPostgres Username. Specify only if external postgres DB to be used (postgresdb.enabled is false)String""
shyama_config.db .external_postgres_passwordPostgres User Password. Specify only if external postgres DB to be used (postgresdb.enabled is false)String""
shyama_config.db .storage_daysNumber of days of data storage in DB (max 60)Number3
shyama_config.service.typeShyama Kubernetes Service type (Specify either ClusterIP or NodePort)StringClusterIP
shyama_config.service.portShyama Kubernetes Service portNumber10037
shyama_config.service .nodePortShyama Kubernetes Node port. Specify if type set to NodePort. Choose port between 30000-32767Number""
shyama_config.service .clusterIPStatic ClusterIP or None for headless servicesString""
shyama_config.service .annotationsService AnnotationsObject{}
shyama_config.service .loadBalancerIPLoad balancer IP if service type is LoadBalancerString""
shyama_config.service .externalTrafficPolicyCluster External Traffic PolicyStringCluster
shyama_config.service .loadBalancerSourceRangesAddresses that are allowed when service is LoadBalancerArray[]
shyama_config.alertactionsAlert Actions configuration (in JSON format)String""
shyama_config.alertdefsAlert Definitions configuration (in JSON format)String""
shyama_config.alertsilencesAlert Silences configuration (in JSON format)String""
shyama_config.alertinhibitsAlert Inhibits configuration (in JSON format)String""

The main Postgres Container parameters are mentioned below.

NameDescriptionData TypeDefault Value
postgresdb.enabledEnable or Disable Shyama specific DB container. If false, an external Postgres must be specified in the shyama configBooleantrue
postgresdb.resources .requestsPostgres Container Resource RequestsObject{}
postgresdb.resources .limitsPostgres Container Resource LimitsObject{}
postgresdb.mounts .volumesList of extra volumes to add to the Postgres containerArray[]
postgresdb.mounts .volumeMountsList of extra volume mounts to add to the Postgres containerArray[]
postgresdb.extra.envExtra environment variables to pass onto Postgres containerObject{}
postgresdb.extra.argsExtra Command Line Arguments (CLI) to pass onto Postgres containerArray[]
postgresdb.extra.envinitExtra environment variables to pass onto Postgres Init db containerObject{}
postgresdb.extra.argsinitExtra Command Line Arguments (CLI) to pass onto Postgres Init db containerArray[]
postgresdb.postgresdb_config .passwordpostgres user password. If empty, will be auto-generatedString""
postgresdb.postgresdb_config .service.portPort on which the Postgres process will listen onNumber10040
postgresdb.persistence.enabledPostgres data persistence using PVC. If false, will use emptyDir (data delete on pod termination)Booleantrue
postgresdb.persistence .existingClaimName of an existing PVC to useString""
postgresdb.persistence .storageClassPVC Storage Class for Postgres data volume. If empty, the default provisioner is used.String""
postgresdb.persistence .accessModesPVC Access Mode for Postgres volumeStringReadWriteOnce
postgresdb.persistence.sizePVC Storage Size for Postgres volumeString10Gi
postgresdb.persistence .annotationsAnnotations for the PVCObject{}
postgresdb.persistence .selectorSelector to match an existing Persistent VolumeObject{}
postgresdb.persistence .dataSourceCustom PVC dataSourceObject{}
postgresdb.persistence .dataSourceRefCustom PVC dataSourceRef. If specified dataSource will be ignoredObject{}
postgresdb.initChownData .enabledIf false, data ownership will not be reset at startupBooleanfalse
info

Once this chart is deployed, it is not possible to change the Postgres DB access credentials, such as username or password, using Helm. To change these after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or connect to DB externally and manually set the params.

Other parameters

NameDescriptionData TypeDefault Value
nameOverrideSet a new name if you want to override the release name usedString""
fullnameOverrideSet a new name if you want to override the fullname usedString""
clusterDomainDefault Kubernetes cluster domainStringcluster.local
resources.requestsShyama Container Resource RequestsObject{}
resources.limitsShyama Container Resource LimitsObject{}
hostAliasesShyama pod host aliases for /etc/hostsArray[]
readinessEnabledEnable Readiness ProbeBooleantrue
podSecurityPolicyEnable PodSecurityPolicy (only for K8s versions < 1.25)Booleanfalse
mounts.volumesList of extra volumes to add to the Shyama containerArray[]
mounts.volumeMountsList of extra volume mounts to add to the Shyama containerArray[]
extra.envExtra environment variables to pass onto Shyama containerObject{}
extra.argsExtra Command Line Arguments (CLI) to pass onto Shyama containerArray[]
networkPolicy.enabledIf enabled is true, all egress is allowed and ingress is limited to Shyama ports with optional namespaceSelectorBooleanfalse
networkPolicy.namespaceSelectorKubernetes LabelSelector to explicitly select namespaces from which traffic could be allowedBooleanfalse
networkPolicy.enabledIf enabled is true, all egress is allowed and ingress is limited to Shyama ports with optional namespaceSelectorObject{}
serviceAccount.createCreate ServiceAccountBooleanfalse
info

If shyama_config.logtofile is set to true, then the Shyama process logs will be sent to /hostdata/log/shyama.log. Users can analyze the logs by running the command :


# Get the Shyama pod name and fill in SHYAMAPOD env

kubectl exec -it $SHYAMAPOD -- more /hostdata/log/shyama.log