Skip to main content

Install DataChat

Follow this guide to install DataChat in your cluster using Helm.

Pre-Requisites

note

For all of the PostgreSQL databases below, DataChat recommends configuring the max_connections parameter to 500 or more.

DataChat recommends setting up the following:

  • A Kubernetes cluster. More details can be found below.
  • Three cloud PostgreSQL databases:
    • One for the DataChat's management database, which tracks a number of internal objects, including users, and sessions. This should have at least 4 vCPUs, 8GB of memory, and 10GB of storage.
    • One for the DataChat's compute engine, which is used to run computations on data, most often for file-based datasets. This should have at least 4 vCPUs, 8GB of memory, and 15GB of storage.
    • One for DataChat's "pipeliner" service. This should have at least 2 vCPUs, 8GB of memory, and 10GB of storage.
  • An object storage bucket. This bucket is created with services like CloudStorage or S3 and is used to store user data, such as files.
  • IAM-style user. Create a user that can access the object storage bucket on behalf of DataChat.

If you do not want to use external services, DataChat comes with the ability to create in-cluster services instead.

Configuring a Kubernetes Cluster

Before you can install DataChat, you must have a Kubernetes cluster to install it into. We recommend using Autopilot clusters from Google Kubernetes Engine (GKE) for the most hands-free maintenance. Autopilot clusters will automatically handle operations such as cluster scaling, Kubernetes version upgrades, security, and other settings. Regardless of which type of cluster you use, we have some recommendations that apply to them all:

  • Use "general purpose" compute resources.
  • Make sure your cluster has a load balancer, ingress, and ingress controller configured. DataChat recommends using the ingress-nginx controller.
  • Use "private" clusters that are only accessible through a load balancer and ingress.

The sections below cover cluster-configuration-specific requirements and recommendations.

Autopilot Configuration

For a detailed list of all the configuration options available for Autopilot clusters, refer to Google's documentation.

For a production-grade cluster, we recommend:

  • Using the general-purpose compute class. Autopilot clusters will automatically scale for you, but you can generally expect ~16 total nodes (using the e2-standard-8 instance class) to run a full, production-ready instance of DataChat.
  • Private clusters that are accessed only by a load balancer.
  • An ingress and load balancer to manage traffic.

Other Kubernetes Configurations

If you would prefer (or are required) to use a more traditional Kubernetes cluster, such as Standard GKE clusters or clusters built on top of Amazon's Elastic Kubernetes Services (EKS), we recommend:

  • Using general purpose compute instances, such as AWS's m5.4xlarge (16 vCPU, 64GB of memory) or GCP's e2-standard-8 (8 vCPU, 32GB of memory) or e2-standard-16 (16 vCPU, 64GB of memory).
  • Creating two node pools in different availability zones. We recommend starting with 10 nodes, leaving room to scale up or down as needed.
  • A load balancer, ingress, and ingress controller, as mentioned above.

Using External Services

If you created the external services noted above:

  • In the requiredConfigs section:
    • DATACHAT_APP_DB_HOST: The IP address or host name of the management database.
    • DATACHAT_APP_DB_PORT: The port of the management database. The default is 5432.
    • DATACHAT_COMPUTE_ENGINE_HOST: The IP address or host name of the compute engine.
    • DATACHAT_COMPUTE_ENGINE_PORT: The port of the compute engine. The default is 5432.
    • DATACHAT_PIPELINER_METADATA_STORAGE_HOST: The IP address or hostname of the "pipeliner metadata storage" database.
    • DATACHAT_PIPELINER_METADATA_STORAGE_PORT: The port for the "pipeliner metadata storage" database. The default is 5432.
    • DATACHAT_CHARTING_SERVICE_STORAGE_DATABASE_HOST: The IP address or hostname of the "charting service storage" database.
    • DATACHAT_CHARTING_SERVICE_STORAGE_DATABASE_PORT: The port for the "charting service storage" database. The default is 5432.
    • DATACHAT_STORAGE_BUCKET: The name of the object storage bucket.
    • DATACHAT_STORAGE_ENDPOINT_URL: The URL of the endpoint, e.g. https://s3.us-east-2.amazonaws.com for AWS S3 or https://storage.googleapis.com for GCP CloudStorage.
    • DATACHAT_STORAGE_S3_REGION: The region the bucket is stored in, e.g. us-east-2.
  • (Optional) Configurations
    • optionalConfigs.dcConfig.DATACHAT_APP_DB_DATABASE: The database name to connect to. Defaults to postgres.
    • optionalConfigs.dcConfig.DATACHAT_APP_DB_SSL_MODE: The sslmode option for the management database. This defaults to disable. To use SSL, set this to require.
    • optionalConfigs.dcConfig.DATACHAT_COMPUTE_ENGINE_DATABASE: The database name to connect to. Defaults to postgres.
    • optionalConfigs.dcConfig.DATACHAT_COMPUTE_ENGINE_SSL_MODE: The sslmode option for the compute engine. This defaults to disable. To use SSL, set this to require.
    • optionalConfigs.pipelinerConfig.DATACHAT_PIPELINER_METADATA_STORAGE_DATABASE: The database name to connect to. Defaults to postgres.
    • optionalConfigs.pipelinerConfig.DATACHAT_PIPELINER_METADATA_STORAGE_SSL_MODE: The sslmode option for the pipeliner metadata storage. This defaults to disable. To use SSL, set this to require.
    • optionalConfigs.dcConfig.DATACHAT_CHARTING_SERVICE_STORAGE_DATABASE_NAME: The database name to connect to. Defaults to postgres.
    • optionalConfigs.dcConfig.DATACHAT_CHARTING_SERVICE_STORAGE_DATABASE_SSL_MODE: The sslmode option for the charting service database. This defaults to disable. To use SSL, set this to require.
    • optionalConfigs.dcConfig.DATACHAT_MSG_Q_PROTOCOL: The messaging protocol used by DataChat. Supported values include amqp091 and amqp10.
  • In the global.secrets.appStorage section:
    • global.secrets.appStorage.id: The access key ID of the user that can access the bucket.
    • global.secrets.appStorage.secret: The secret access key of the user that can access the bucket.
  • In the global.secrets.managementDatabase section:
    • global.secrets.managementDatabase.username: The username used to connect to the database.
    • global.secrets.managementDatabase.password: The password used to connect to the database.
  • In the global.secrets.computeEngineCredentials section:
    • global.secrets.computeEngineCredentials.username: The username used to connect to the database.
    • global.secrets.computeEngineCredentials.password: The password used to connect to the database.
  • In the global.secrets.pipelinerSecret section, configure the username and password used to connect to the database.
    • global.secrets.pipelinerSecret.dbUsername: The username used to connect to the database.
    • global.secrets.pipelinerSecret.dbPassword: The password used to connect to the database.
  • In the global.secrets.chartingServiceStorageSecret section:
    • global.secrets.chartingServiceStorageSecret.username: The username used to connect to the database.
    • global.secrets.chartingServiceStorageSecret.password: The password used to connect to the database.
  • In the global.secrets.messageQueue section:
    • global.secrets.messageQueue.username: The username to connect to the message broker
    • global.secrets.messageQueue.password: The password to connect to the message broker
  • In the global.secrets.secretTls section, if you are configuring TLS outside of DataChat, use the contents of your .crt and .key files:
    • Pass in your base64 encoded certificate.
    • Pass in your base64 encoded key.

Using In-Cluster Services

If you did not create those external components and would prefer to use the in-cluster services for the compute engine, management database, and object storage:

  • Set global.compute-engine.enabled to true.
  • Set global.management-database.enabled to true.
  • Set global.seaweedfs.enabled to true.
  • Set pipeliner-metadata-storage.enabled to true.

By enabling the above services, you will not need to set any configurations in the requiredConfigs block (e.g. DATACHAT_APP_DB_*, DATACHAT_COMPUTE_ENGINE_*, and DATACHAT_STORAGE_* ).

Installation and Maintenance

Install or Upgrade

Note using helm upgrade --install covers both installation of a chart and upgrade of an existing chart.

From a Private Chart Repository

  1. Acquire the JSON key file given to you by your DataChat representative.
  2. Activate the service account with gcloud:
gcloud auth activate-service-account --key-file=<path to key file>
  1. Login to the private repo using helm registry:
cat <path to key file> | helm registry login -u _json_key --password-stdin https://us-central1-docker.pkg.dev
  1. Run the following command to install the chart. This command will create a namespace and install the chart resources if they don't already exist. If they do exist, they will be upgraded:
helm upgrade --install datachat oci://us-central1-docker.pkg.dev/dc-shared/helm/datachat --version <chart-version> \
--create-namespace --namespace datachat \
--set global.secrets.dockerconfigjson.dockerUsername=_json_key_base64 \
--set global.secrets.dockerconfigjson.dockerPassword=$(cat <path to JSON secret key> | tr -d '\n' | base64) \
-f <path to overrides-values.yaml>
  1. Download the Helm chart's .tgz archive from the link provided by your DataChat representative.
  2. Acquire the JSON key file given to you by your DataChat representative.
  3. Run the following command to install the chart. This command will create a namespace and install the chart resources if they don't already exist. If they do exist, they will be upgraded:
helm upgrade --install datachat ./datachat-<chart-version>.tgz \
--create-namespace --namespace datachat
--set global.secrets.dockerconfigjson.dockerUsername=_json_key_base64 \
--set global.secrets.dockerconfigjson.dockerPassword=$(cat <path to JSON secret key> | tr -d '\n' | base64) \
-f <path to overrides-values.yaml>

Verification

Helm has provenance tools, which help chart users verify the integrity and origin of a chart. To verify the datachat helm chart, follow these steps:

  1. Acquire the .prov and public key files sent to you from DataChat. If you're installing from the private chart repository, each chart's .prov file exists within the repo.
  2. Add the public key to gpg. For example, gpg --import datachat-public-key.
  3. Pass the --verify flag in your helm commands.

Uninstall

  1. Uninstall the chart:
helm -n datachat uninstall datachat
  1. (Optional) Delete kept PersistentVolumeClaims (PVC) and Secrets.

By default, the datachat helm chart does not delete PVCs or Secrets when helm install | upgrade | uninstall are run. This helps avoid accidental deletion of critical components of DataChat. So after uninstalling, these resources will persist in the datachat namespace.

We recommend keeping this default on, but if you wish to disable this feature, set global.pvc.keep=false and global.secret.keep=false.

note

You can delete the DataChat namespace with kubectl delete namespace datachat.

Values

KeyTypeDefaultDescription
ask-cache.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
ask-cache.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
ask-cache.envlist[]Adds env variables to .spec.template.spec.containers[x].env.
ask-cache.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
ask-cache.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
ask-cache.image.repostring"public.ecr.aws/docker/library/"The repository.
ask-cache.image.repoNamestring"redis"The repo name.
ask-cache.image.tagstring"7.4"The image tag.
ask-cache.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
ask-cache.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
ask-cache.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
ask-cache.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
ask-cache.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
ask-cache.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
ask-cache.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
ask-cache.pvc.storageSizestring"10Gi"The size of the service's PersistentVolumeClaim.
ask-cache.replicasint1The number of Pod replicas to create.
ask-cache.resources.limits.cpustring"2"The CPU limit for this service.
ask-cache.resources.limits.memorystring"8Gi"The memory limit for this service.
ask-cache.resources.requests.cpustring"1"The CPU request for this service.
ask-cache.resources.requests.memorystring"4Gi"The memory request for this service.
ask-cache.spec.strategy.typestring"Recreate"The pod replacement strategy.
autocomplete-cache.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
autocomplete-cache.envlist[]Adds env variables to .spec.template.spec.containers[x].env.
autocomplete-cache.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
autocomplete-cache.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
autocomplete-cache.image.repostring"public.ecr.aws/docker/library/"The repository.
autocomplete-cache.image.repoNamestring"redis"The repo name.
autocomplete-cache.image.tagstring"5"The image tag.
autocomplete-cache.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
autocomplete-cache.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
autocomplete-cache.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
autocomplete-cache.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
autocomplete-cache.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
autocomplete-cache.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
autocomplete-cache.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
autocomplete-cache.pvc.storageSizestring"10Gi"The size of the service's PersistentVolumeClaim.
autocomplete-cache.replicasint1The number of Pod replicas to create.
autocomplete-cache.resources.limits.cpustring"2"The CPU limit for this service.
autocomplete-cache.resources.requests.cpustring"1"The CPU request for this service.
autocomplete-cache.resources.requests.memorystring"1Gi"The memory request for this service.
autocomplete-cache.spec.strategy.typestring"Recreate"The pod replacement strategy.
compute-engine.enabledboolfalseWhether to enable the in-cluster compute-engine engine instance.
compute-engine.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
compute-engine.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
compute-engine.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
compute-engine.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
compute-engine.image.repostring"public.ecr.aws/docker/library/"The repository.
compute-engine.image.repoNamestring"postgres"The repo name.
compute-engine.image.tagstring"13"The image tag.
compute-engine.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
compute-engine.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
compute-engine.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
compute-engine.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
compute-engine.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
compute-engine.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
compute-engine.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
compute-engine.pvc.storageClassNamestring""The name of the StorageClass to use for the PersistentVolumeClaim.
compute-engine.pvc.storageSizestring"100Gi"The size of the service's PersistentVolumeClaim.
compute-engine.replicasint1The number of Pod replicas to create.
compute-engine.resources.requests.memorystring"1500Mi"The memory request for this service.
compute-engine.spec.strategy.typestring"Recreate"The pod replacement strategy.
dc-app-service.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
dc-app-service.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
dc-app-service.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
dc-app-service.hpa.maxReplicasint8When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.maxReplicas.
dc-app-service.hpa.minReplicasint2When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.minReplicas.
dc-app-service.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
dc-app-service.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
dc-app-service.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
dc-app-service.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
dc-app-service.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
dc-app-service.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
dc-app-service.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
dc-app-service.replicasint2The number of Pod replicas to create.
dc-app-service.resources.limits.cpustring"4"The CPU limit for this service.
dc-app-service.resources.limits.memorystring"4Gi"The memory limit for this service.
dc-app-service.resources.requests.cpustring"4"The CPU request for this service.
dc-app-service.resources.requests.memorystring"4Gi"The memory request for this service.
dc-app-service.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
dc-app-service.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
dc-app-service.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
dc-charting-service.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
dc-charting-service.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
dc-charting-service.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
dc-charting-service.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
dc-charting-service.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
dc-charting-service.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
dc-charting-service.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
dc-charting-service.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
dc-charting-service.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
dc-charting-service.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
dc-charting-service.replicasint1The number of Pod replicas to create.
dc-charting-service.resources.limits.cpustring"1"The CPU limit for this service.
dc-charting-service.resources.limits.memorystring"1Gi"The memory limit for this service.
dc-charting-service.resources.requests.cpustring"400m"The CPU request for this service.
dc-charting-service.resources.requests.memorystring"500Mi"The memory request for this service.
dc-charting-service.spec.strategy.typestring"Recreate"The pod replacement strategy.
dc-charting-worker.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
dc-charting-worker.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
dc-charting-worker.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
dc-charting-worker.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
dc-charting-worker.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
dc-charting-worker.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
dc-charting-worker.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
dc-charting-worker.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
dc-charting-worker.replicasint1The number of Pod replicas to create.
dc-charting-worker.resources.limits.cpustring"1"The CPU limit for this service.
dc-charting-worker.resources.limits.memorystring"1Gi"The memory limit for this service.
dc-charting-worker.resources.requests.cpustring"400m"The CPU request for this service.
dc-charting-worker.resources.requests.memorystring"500Mi"The memory request for this service.
dc-charting-worker.spec.strategy.typestring"Recreate"The pod replacement strategy.
charting-queue.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
charting-queue.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
charting-queue.envlist[]Adds env variables to .spec.template.spec.containers[x].env.
charting-queue.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
charting-queue.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
charting-queue.image.repostring"public.ecr.aws/docker/library/"The repository.
charting-queue.image.repoNamestring"redis"The repo name.
charting-queue.image.tagstring"7.4"The image tag.
charting-queue.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
charting-queue.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
charting-queue.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
charting-queue.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
charting-queue.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
charting-queue.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
charting-queue.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
charting-queue.pvc.storageSizestring"1Gi"The size of the service's PersistentVolumeClaim.
charting-queue.replicasint1The number of Pod replicas to create.
charting-queue.resources.limits.cpustring"40m"The CPU limit for this service.
charting-queue.resources.limits.memorystring"20Mi"The memory limit for this service.
charting-queue.resources.requests.cpustring"40m"The CPU request for this service.
charting-queue.resources.requests.memorystring"20Mi"The memory request for this service.
charting-queue.spec.strategy.typestring"Recreate"The pod replacement strategy.
dc-executor-service.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
dc-executor-service.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
dc-executor-service.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
dc-executor-service.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
dc-executor-service.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
dc-executor-service.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
dc-executor-service.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
dc-executor-service.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
dc-executor-service.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
dc-executor-service.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
dc-executor-service.replicasint1The number of Pod replicas to create.
dc-executor-service.resources.limits.cpustring"1"The CPU limit for this service.
dc-executor-service.resources.limits.memorystring"1Gi"The memory limit for this service.
dc-executor-service.resources.requests.cpustring"1"The CPU request for this service.
dc-executor-service.resources.requests.memorystring"1Gi"The memory request for this service.
dc-executor-service.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
dc-executor-service.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
dc-executor-service.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
dc-executor-worker.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
dc-executor-worker.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
dc-executor-worker.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
dc-executor-worker.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
dc-executor-worker.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
dc-executor-worker.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
dc-executor-worker.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
dc-executor-worker.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
dc-executor-worker.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
dc-executor-worker.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
dc-executor-worker.replicasint1The number of Pod replicas to create.
dc-executor-worker.resources.limits.cpustring"1"The CPU limit for this service.
dc-executor-worker.resources.limits.memorystring"1Gi"The memory limit for this service.
dc-executor-worker.resources.requests.cpustring"1"The CPU request for this service.
dc-executor-worker.resources.requests.memorystring"1Gi"The memory request for this service.
dc-executor-worker.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
dc-executor-worker.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
dc-executor-worker.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
dc-nl2code.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
dc-nl2code.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
dc-nl2code.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
dc-nl2code.hpa.maxReplicasint8When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.maxReplicas.
dc-nl2code.hpa.minReplicasint2When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.minReplicas.
dc-nl2code.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
dc-nl2code.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
dc-nl2code.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
dc-nl2code.replicasint1The number of Pod replicas to create.
dc-nl2code.resources.limits.cpustring"1"The CPU limit for this service.
dc-nl2code.resources.limits.memorystring"5Gi"The memory limit for this service.
dc-nl2code.resources.requests.cpustring"1"The CPU request for this service.
dc-nl2code.resources.requests.memorystring"2.5Gi"The memory request for this service.
dc-nl2code.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
dc-nl2code.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
dc-nl2code.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
encoderlm-service.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
encoderlm-service.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
encoderlm-service.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
encoderlm-service.hpa.maxReplicasint10When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.maxReplicas.
encoderlm-service.hpa.minReplicasint1When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.minReplicas.
encoderlm-service.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
encoderlm-service.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
encoderlm-service.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
encoderlm-service.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
encoderlm-service.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
encoderlm-service.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
encoderlm-service.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
encoderlm-service.replicasint1The number of Pod replicas to create.
encoderlm-service.resources.limits.cpustring"1"The CPU limit for this service.
encoderlm-service.resources.limits.memorystring"2600Mi"The memory limit for this service.
encoderlm-service.resources.requests.cpustring"1"The CPU request for this service.
encoderlm-service.resources.requests.memorystring"2600Mi"The memory request for this service.
encoderlm-service.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
encoderlm-service.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
encoderlm-service.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
executor-task-queue.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
executor-task-queue.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
executor-task-queue.envlist[]Adds env variables to .spec.template.spec.containers[x].env.
executor-task-queue.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
executor-task-queue.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
executor-task.image.repostring"public.ecr.aws/docker/library/"The repository.
executor-task.image.repoNamestring"redis"The repo name.
executor-task.image.tagstring"7.4"The image tag.
executor-task-queue.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
executor-task-queue.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
executor-task-queue.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
executor-task-queue.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
executor-task-queue.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
executor-task-queue.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
executor-task-queue.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
executor-task-queue.pvc.storageSizestring"10Gi"The size of the service's PersistentVolumeClaim.
executor-task-queue.replicasint1The number of Pod replicas to create.
executor-task-queue.resources.limits.cpustring"50m"The CPU limit for this service.
executor-task-queue.resources.limits.memorystring"256Mi"The memory limit for this service.
executor-task-queue.resources.requests.cpustring"50m"The CPU request for this service.
executor-task-queue.resources.requests.memorystring"256Mi"The memory request for this service.
executor-task-queue.spec.strategy.typestring"Recreate"The pod replacement strategy.
object-store-gc.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
object-store-gc.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
object-store-gc.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
object-store-gc.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
object-store-gc.resources.limits.cpustring"250m"The CPU limit for this service.
object-store-gc.resources.limits.memorystring"512Mi"The memory limit for this service.
object-store-gc.resources.requests.cpustring"250m"The CPU request for this service.
object-store-gc.resources.requests.memorystring"512Mi"The memory request for this service.
pipeliner-job-queue.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
pipeliner-job-queue.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
pipeliner-job-queue.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
pipeliner-job-queue.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
pipeliner-job-queue.image.repostring"public.ecr.aws/docker/library/"The repository.
pipeliner-job-queue.image.repoNamestring"redis"The repo name.
pipeliner-job-queue.image.tagstring"7"The image tag.
pipeliner-job-queue.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
pipeliner-job-queue.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
pipeliner-job-queue.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
pipeliner-job-queue.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
pipeliner-job-queue.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
pipeliner-job-queue.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-job-queue.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-job-queue.pvc.storageSizestring"10Gi"The size of the service's PersistentVolumeClaim.
pipeliner-job-queue.replicasint1The number of Pod replicas to create.
pipeliner-job-queue.resources.limits.cpustring"2"The CPU limit for this service.
pipeliner-job-queue.resources.requests.cpustring"1"The CPU request for this service.
pipeliner-job-queue.resources.requests.memorystring"2Gi"The memory request for this service.
pipeliner-job-queue.spec.strategy.typestring"Recreate"The pod replacement strategy.
pipeliner-metadata-storage.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
pipeliner-metadata-storage.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
pipeliner-metadata-storage.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
pipeliner-metadata-storage.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
pipeliner-metadata-storage.image.repostring"public.ecr.aws/docker/library/"The repository.
pipeliner-metadata-storage.image.repoNamestring"postgres"The repo name.
pipeliner-metadata-storage.image.tagstring"13"The image tag.
pipeliner-metadata-storage.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
pipeliner-metadata-storage.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
pipeliner-metadata-storage.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
pipeliner-metadata-storage.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
pipeliner-metadata-storage.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
pipeliner-metadata-storage.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-metadata-storage.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-metadata-storage.pvc.storageSizestring"50Gi"The size of the service's PersistentVolumeClaim.
pipeliner-metadata-storage.replicasint1The number of Pod replicas to create.
pipeliner-metadata-storage.resources.limits.cpustring"2"The CPU limit for this service.
pipeliner-metadata-storage.resources.limits.memorystring"1Gi"The memory limit for this service.
pipeliner-metadata-storage.resources.requests.cpustring"1"The CPU request for this service.
pipeliner-metadata-storage.resources.requests.memorystring"512Mi"The memory request for this service.
pipeliner-metadata-storage.spec.strategy.typestring"Recreate"The pod replacement strategy.
pipeliner-sql.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
pipeliner-sql.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
pipeliner-sql.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
pipeliner-sql.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
pipeliner-sql.hpa.maxReplicasint16When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.maxReplicas.
pipeliner-sql.hpa.minReplicasint1When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.minReplicas.
pipeliner-sql.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
pipeliner-sql.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
pipeliner-sql.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
pipeliner-sql.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
pipeliner-sql.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
pipeliner-sql.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-sql.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-sql.replicasint2The number of Pod replicas to create.
pipeliner-sql.resources.limits.cpustring"4"The CPU limit for this service.
pipeliner-sql.resources.limits.memorystring"4Gi"The memory limit for this service.
pipeliner-sql.resources.requests.cpustring"1"The CPU request for this service.
pipeliner-sql.resources.requests.memorystring"1Gi"The memory request for this service.
pipeliner-sql.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
pipeliner-sql.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
pipeliner-sql.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
pipeliner-web.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
pipeliner-web.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
pipeliner-web.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
pipeliner-web.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
pipeliner-web.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
pipeliner-web.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
pipeliner-web.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
pipeliner-web.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
pipeliner-web.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
pipeliner-web.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-web.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
pipeliner-web.replicasint1The number of Pod replicas to create.
pipeliner-web.resources.limits.cpustring"4"The CPU limit for this service.
pipeliner-web.resources.limits.memorystring"8Gi"The memory limit for this service.
pipeliner-web.resources.requests.cpustring"4"The CPU request for this service.
pipeliner-web.resources.requests.memorystring"4Gi"The memory request for this service.
pipeliner-web.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
pipeliner-web.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
pipeliner-web.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
rabbitmq.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
rabbitmq.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
rabbitmq.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
rabbitmq.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
rabbitmq.image.repostring"public.ecr.aws/docker/library/"The repository.
rabbitmq.image.repoNamestring"rabbitmq"The repo name.
rabbitmq.image.tagstring"3.9.26-management"The image tag.
rabbitmq.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
rabbitmq.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
rabbitmq.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
rabbitmq.pvc.storageSizestring"10Gi"The size of the service's PersistentVolumeClaim.
rabbitmq.replicasint1The number of Pod replicas to create.
rabbitmq.resources.limits.cpustring"2"The CPU limit for this service.
rabbitmq.resources.limits.memorystring"6Gi"The memory limit for this service.
rabbitmq.resources.requests.cpustring"2"The CPU request for this service.
rabbitmq.resources.requests.memorystring"4Gi"The memory request for this service.
rabbitmq.spec.strategy.typestring"Recreate"The pod replacement strategy.
optionalConfigs.dcConfigobject{}Extra configurations for the dc-config ConfigMap.
optionalConfigs.dcConfig.DATACHAT_APP_DB_DATABASEstring"postgres"The database name to connect to.
optionalConfigs.dcConfig.DATACHAT_COMPUTE_ENGINE_DATABASEstring"postgres"The database name to connect to.
optionalConfigs.dcExecutorConfigobject{}Extra configurations for the dc-executor-config ConfigMap.
optionalConfigs.encoderLmServiceConfigobject{}Extra configurations for the encoderlm-service-config ConfigMap.
optionalConfigs.nl2codeConfigobject{}Extra configurations for the nl2code-config ConfigMap.
optionalConfigs.pipelinerConfigobject{}Extra configurations for the pipeliner-config ConfigMap.
optionalConfigs.pipelinerConfig.DATACHAT_PIPELINER_METADATA_STORAGE_DATABASEstring"postgres"The database name to connect to.
optionalConfigs.vectorDbConfigobject{}Extra configurations for the vector-db-config ConfigMap.
optionalConfigs.vectorMgmtServiceConfigobject{}Extra configurations for the vector-mgmt-svc-config ConfigMap.
global.autoscaling.hpa.enabledboolfalseWhether to enable HorizontalPodAutoscaler resources for the Deployments that support them. Note that this requires prometheus to be installed in the cluster already. See the HorizontalPodAutoscaler section for more details.
global.autoscaling.podmonitoring.enabledboolfalseWhether to enable PodMonitoring resources for the Deployments that support them. PodMonitoring is used within GKE clusters in conjunction with global.autoscaling.hpa.enabled.
global.autoscaling.vpa.enabledboolfalseWhether to enable VerticalPodAutoscaler resources.
global.commonEnvslist[]Adds common env variables to all DataChat Deployments at .spec.template.spec.containers[x].env.
global.commonLabelsobject{"app.kubernetes.io/part-of": "DataChat"}Common labels to add to all objects that are part of this helm chart. Note that these labels are set in both .spec.template.metadata.labels and .metadata.labels.
global.externalAskCache.enabledboolfalseWhether to enable the ask-cache in-cluster Redis instance or not. If false, an in-cluster ask-cache will be created. If true, you will need to configure an external Redis instance and update requiredConfigs.DATACHAT_ASK_CACHE_HOST and requiredConfigs.DATACHAT_ASK_CACHE_PORT to your external instance's host and port. An in-cluster or an external Redis instance is needed to use GenAI capabilities.
global.genAiServices.enabledboolfalseWhether to enable dc-nl2code, encoderlm-service, vector-db-init, vector-db-scrape-and-backup, and vector-mgmt-service. These services are needed to use GenAI capabilities.
global.image.imagePullSecrets.enabledbooltrueWhether to add the imagePullSecrets configuration to DataChat Deployments, StatefulSets, CronJobs, and Jobs.
global.image.imagePullSecrets.secretslist["- name: regcred"]A list of Secret names which are added under the imagePullSecrets. Since this Secret can be created via the DataChat Helm Chart, the default will include that Secret's default name regcred. If this secret is created externally with a different name, simply update this list with that name.
global.image.repositorystring"us-central1-docker.pkg.dev/dc-shared/dc-registry/"The private image repository to pull DataChat images from. If using a custom repository, be sure to provide the complete address, including the trailing slash (e.g. http://harbor.datachat.net/apps/datachat_/).
global.image.tagstring""The DataChat release image tag.
global.networkPolicies.enabledboolfalseWhether to enable NetworkPolicy objects. Note that additional configuration is required when enabled. See NetworkPolicies for more details.
global.networkPolicies.ingressControllerNetworkPolicylist[{"namespaceSelector": {"matchLabels": {"kubernetes.io/metadata.name": "ingress-nginx"}}, "podSelector": {"matchLabels": {"app.kubernetes.io/name": "ingress-nginx"}}}]When global.networkPolicies.enabled=true, this NetworkPolicy Ingress rule is applied to DataChat resources that are exposed via the Ingress object. This assumes the ingress controller being used is the ingress-nginx controller and that it is installed in the ingress-nginx Namespace.
global.networkPolicies.type.apiVersionstring"networking.k8s.io/v1"Allows you to override the API version of the NetworkPolicy. For example, if using Calico's NetworkPolicies, this would be projectcalico.org/v3.
global.networkPolicies.type.kindstring"NetworkPolicy"Allows you to override the resource kind of the NetworkPolicy. For example, if using Calico's NetworkPolicies, this could be set to GlobalNetworkPolicy.
global.prometheus.annotationsobject{"prometheus.io/scrape": "true", "prometheus.io/port": "9090"}The annotation to allow prometheus to scrape metrics from the Deployment. Set in .spec.template.metadata.annotations.
global.prometheus.portslist[{"name": "prometheus", "containerPort": 9090}]The default prometheus port and name to be added to a Deployment's .spec.template.spec.containers.[#].ports.
global.pvc.keepbooltrueWhen true, PersistentVolumeClaim objects will not be deleted when running helm uninstall, helm upgrade, or helm rollback. This avoids accidental deletion of data within those PVCs. See https://helm.sh/docs/howto/charts_tips_and_tricks/#tell-helm-not-to-uninstall-a-resource for more details.
global.pvc.storageClassNamestring""A global StorageClass name to use for all PersistentVolumeClaim resources. If empty, the PersistentVolumeClaims will use the default StorageClass in the Kubernetes cluster.
global.qdrant.enabledboolfalseWhether to enable an in-cluster vector database Qdrant.
global.seaweedfs.enabledboolfalseWhether to enabled an in-cluster storage solution instead of using a cloud provider object storage solution. For best performance, DataChat recommends using the latter.
global.secret.keepbooltrueWhen true, Secret objects will not be deleted when running helm uninstall, helm upgrade, or helm rollback. This avoids accidental deletion of Secrets required by DataChat. See https://helm.sh/docs/howto/charts_tips_and_tricks/#tell-helm-not-to-uninstall-a-resource for more details.
ingress.annotationsobject{"nginx.ingress.kubernetes.io/ssl-redirect": "true", "nginx.ingress.kubernetes.io/force-ssl-redirect": "true", "nginx.ingress.kubernetes.io/rewrite-target": "/$2$3", "nginx.ingress.kubernetes.io/proxy-body-size": "15G"}Default annotations to add to the DataChat Ingress object. This assumes the ingress controller being used is the ingress-nginx controller.
ingress.enabledbooltrueWhether to create the Ingress resource.
ingress.hostslist['']The DNS names that DataChat will be accessible from.
ingress.ingressClassNamestring"nginx"The class name to be used by the Ingress resource. Note that DataChat recommends using the ingress-nginx controller.
ingress.extraPathslist[]Extra paths to add to the Ingress object.
ingress.extraAnnotationsobject{}Extra annotations to add to the Ingress object.
ingress.tls.enabledboolfalseWhether to enable TLS for the Ingress resource.
management-database.enabledboolfalseWhether to enable the in-cluster management-database.
management-database.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
management-database.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
management-database.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
management-database.image.repostring"public.ecr.aws/docker/library/"The repository.
management-database.image.repoNamestring"postgres"The repo name.
management-database.image.tagstring"13"The image tag.
management-database.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
management-database.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
management-database.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
management-database.pvc.storageClassNamestring""The name of the StorageClass to use for the PersistentVolumeClaim.
management-database.pvc.storageSizestring"30Gi"The size of the service's PersistentVolumeClaim.
management-database.replicasint1The number of Pod replicas to create.
management-database.serviceNamestring"management-database-cluster"The name of the in-cluster management-database Service. Note, if this reference is updated here, you must update requiredConfigs.dcConfig.DATACHAT_APP_DB_HOST to match.
management-database.spec.strategy.typestring"Recreate"The pod replacement strategy.
management-db-init.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
management-db-init.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
management-db-init.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
management-db-init.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
management-db-init.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
management-db-init.resources.limits.cpustring"2"The CPU limit for this service.
management-db-init.resources.limits.memorystring"512Mi"The memory limit for this service.
management-db-init.resources.requests.cpustring"1"The CPU request for this service.
management-db-init.resources.requests.memorystring"512Mi"The memory request for this service.
management-service.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
management-service.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
management-service.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
management-service.networkPolicy.ingress.extraFromlist[]Adds additional NetworkPolicy ingress - from blocks. to the default ingress port for the DataChat service.
management-service.networkPolicy.ingress.extralist[]Adds additional NetworkPolicy ingress - from blocks.
management-service.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
management-service.networkPolicy.specOverrideobject{}Completely overrides the NetworkPolicy .spec. See NetworkPolicies for more details.
management-service.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
management-service.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
management-service.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
management-service.replicasint1The number of Pod replicas to create.
management-service.resources.limits.cpustring"4"The CPU limit for this service.
management-service.resources.limits.memorystring"10Gi"The memory limit for this service.
management-service.resources.requests.cpustring"4"The CPU request for this service.
management-service.resources.requests.memorystring"6Gi"The memory request for this service.
management-service.spec.strategy.typestring"Recreate"The pod replacement strategy.
messaging-server.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
messaging-server.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
messaging-server.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
messaging-server.networkPolicy.ingress.extraFromlist[]Adds additional NetworkPolicy ingress - from blocks. to the default ingress port for the DataChat service.
messaging-server.networkPolicy.ingress.extralist[]Adds additional NetworkPolicy ingress - from blocks.
messaging-server.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
messaging-server.networkPolicy.specOverrideobject{}Completely overrides the NetworkPolicy .spec. See NetworkPolicies for more details.
messaging-server.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
messaging-server.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
messaging-server.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
messaging-server.replicasint1The number of Pod replicas to create.
messaging-server.resources.limits.cpustring"500m"The CPU limit for this service.
messaging-server.resources.limits.memorystring"250Mi"The memory limit for this service.
messaging-server.resources.requests.cpustring"500m"The CPU request for this service.
messaging-server.resources.requests.memorystring"100Mi"The memory request for this service.
messaging-server.spec.strategy.typestring"Recreate"The pod replacement strategy.
message-store.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
message-store.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
message-store.envlist[]Adds env variables to .spec.template.spec.containers[x].env.
message-store.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
message-store.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
message-store.image.repostring"public.ecr.aws/docker/library/"The repository.
message-store.image.repoNamestring"redis"The repo name.
message-store.image.tagstring"5"The image tag.
message-store.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
message-store.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
message-store.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
message-store.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
message-store.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
message-store.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
message-store.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
message-store.pvc.storageSizestring"10Gi"The size of the service's PersistentVolumeClaim.
message-store.replicasint1The number of Pod replicas to create.
message-store.resources.limits.cpustring"2"The CPU limit for this service.
message-store.resources.requests.cpustring"1"The CPU request for this service.
message-store.resources.requests.memorystring"10Gi"The memory request for this service.
message-store.spec.strategy.typestring"Recreate"The pod replacement strategy.
messaging-server.enabledbooltrueWhether to enable the messaging-server.
ml-task-executor.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
ml-task-executor.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
ml-task-executor.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
ml-task-executor.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
ml-task-executor.hpa.maxReplicasint16When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.maxReplicas.
ml-task-executor.hpa.minReplicasint4When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.minReplicas.
ml-task-executor.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
ml-task-executor.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
ml-task-executor.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
ml-task-executor.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
ml-task-executor.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
ml-task-executor.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
ml-task-executor.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
ml-task-executor.replicasint2The number of Pod replicas to create.
ml-task-executor.resources.limits.cpustring"5"The CPU limit for this service.
ml-task-executor.resources.limits.memorystring"10Gi"The memory limit for this service.
ml-task-executor.resources.requests.cpustring"3"The CPU request for this service.
ml-task-executor.resources.requests.memorystring"1Gi"The memory request for this service.
ml-task-executor.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
ml-task-executor.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
ml-task-executor.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
object-store.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
object-store.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
object-store.envlist[]Adds env variables to .spec.template.spec.containers[x].env.
object-store.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
object-store.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
object-store.image.repostring"public.ecr.aws/docker/library/"The repository.
object-store.image.repoNamestring"redis"The repo name.
object-store.image.tagstring"5"The image tag.
object-store.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
object-store.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
object-store.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
object-store.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
object-store.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
object-store.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
object-store.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
object-store.pvc.storageSizestring"10Gi"The size of the service's PersistentVolumeClaim.
object-store.replicasint1The number of Pod replicas to create.
object-store.resources.limits.cpustring"2"The CPU limit for this service.
object-store.resources.requests.cpustring"1"The CPU request for this service.
object-store.resources.requests.memorystring"50Gi"The memory request for this service.
object-store.spec.strategy.typestring"Recreate"The pod replacement strategy.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_QDRANT_ENDPOINTstring"http://qdrant:6333"The endpoint of the Qdrant vector database. This should include scheme (http/https), DNS name or IP address, and port number.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_MILVUS_ENDPOINTstring""The endpoint for the Milvus vector database. This should include scheme (http/https), DNS name or IP address, and port number.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_VERTEXAI_PROJECTstring""The project name for the VertexAI vector database.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_VERTEXAI_LOCATIONstring""The location for the VertexAI vector database.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_USER_DOCS_PROVIDERstring"qdrant"The vector database provider for user docs.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_EXAMPLES_PROVIDERstring"qdrant"The vector database provider for examples.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_USER_DOCS_COLLECTION_NAMEstring"user_docs"The collection name for user docs in the vector database.
optionalConfigs.vectorDbConfig.DATACHAT_VECTOR_DB_EXAMPLES_COLLECTION_NAMEstring"examples_e5"The collection name for examples in the vector database.
optionalConfigs.vectorDbConfig.DATACHAT_EXAMPLES_CONFIG_SOURCE_DIRECTORYstring"/datachat/vector_db_init/examples"The directory path for examples configuration.
optionalConfigs.vectorDbConfig.DATACHAT_USER_DOCS_CONFIG_SOURCE_DIRECTORYstring"/datachat/user_docs/docs/datachat/"The directory path where user docs are stored.
optionalConfigs.vectorDbConfig.DATACHAT_USER_DOCS_CONFIG_IMAGES_SOURCE_DIRECTORYstring"/datachat/user_docs/docs/images/"The directory path where user doc images are stored.
optionalConfigs.vectorDbConfig.DATACHAT_USER_DOCS_CONFIG_REFRESHboolfalseWhether to refresh the user docs configuration.
optionalConfigs.vectorDbConfig.DATACHAT_USER_DOCS_CONFIG_WEB_BASE_URLstring"https://docs.datachat.ai/"The base URL for the user docs.
pipeliner-metadata-storage.enabledboolfalseWhether to enable the in-cluster pipeliner-metadata-storage.
qdrant.persistence.sizestring"25Gi"The PersistentVolumeClaim size.
qdrant.resources.limits.cpustring"100m"The CPU limit for this service.
qdrant.resources.limits.memorystring"2Gi"The memory limit for this service.
qdrant.resources.requests.cpustring"100m"The CPU request for this service.
qdrant.resources.requests.memorystring"2Gi"The memory request for this service.
requiredConfigs.DATACHAT_STORAGE_BUCKETstring"datachat-appdata"The name of the storage bucket to use. For example, if you have a Google Cloud Storage bucket named app-data, you would put that name "app-data" here. If global.seaweedfs.enabled is true this will be set to datachat-appdata.
requiredConfigs.DATACHAT_STORAGE_ENDPOINT_URLstring"http://seaweedfs-s3:8333"The endpoint that the storage bucket uses. For example, if using Google Cloud Storage, you would put https://storage.googleapis.com here. If AWS S3, https://s3.<region>.amazonaws.com. Note, for AWS S3 only Amazon S3 regular endpoints have been tested. If global.seaweedfs.enabled is true, this value will automatically be set to http://seaweedfs-s3:8333.
requiredConfigs.DATACHAT_KV_STORE_HOSTstring'object-store'The hostname/IP address for the Redis instance used for the object store.
requiredConfigs.DATACHAT_KV_STORE_PORTstring'6379'The port of the Redis instance used for the object store.
requiredConfigs.DATACHAT_MSG_STORE_HOSTstring'message-store'The hostname/IP address for the Redis instance used for the message store.
requiredConfigs.DATACHAT_MSG_STORE_PORTstring'6379'The port of the Redis instance used for the message store.
requiredConfigs.DATACHAT_AC_STORE_HOSTstring'autocomplete-cache'The hostname/IP address for the Redis instance used for the autocomplete cache.
requiredConfigs.DATACHAT_AC_STORE_PORTstring'6379'The port of the Redis instance used for the autocomplete cache.
requiredConfigs.DATACHAT_ASK_CACHE_HOSTstring'ask-cache'The hostname/IP address for the Redis instance used for the ask cache.
requiredConfigs.DATACHAT_ASK_CACHE_PORTstring'6379'The port of the Redis instance used for the ask cache.
requiredConfigs.DATACHAT_CHARTING_QUEUE_HOSTstring'charting-queue'The hostname/IP address for the Redis instance used for the charting task queue.
requiredConfigs.DATACHAT_CHARTING_QUEUE_PORTstring'6379'The port of the Redis instance used for the charting task queue.
requiredConfigs.DATACHAT_EXECUTOR_TASK_QUEUE_HOSTstring'executor-task-queue'The hostname/IP address for the Redis instance used for the executor task queue.
requiredConfigs.DATACHAT_EXECUTOR_TASK_QUEUE_PORTstring'6379'The port of the Redis instance used for the executor task queue.
requiredConfigs.DATACHAT_PIPELINER_QUEUE_HOSTstring'pipeliner-job-queue'The hostname/IP address for the Redis instance used for the pipeliner job queue.
requiredConfigs.DATACHAT_PIPELINER_QUEUE_PORTstring'6379'The port of the Redis instance used for the pipeliner job queue.
requiredConfigs.DATACHAT_STORAGE_S3_REGIONstring"default"The region where your storage backend resides. For example, for Google Cloud Storage us-central1, for AWS S3 us-east-2. If global.seaweedfs.enabled is true this defaults to default.
requiredConfigs.llm.providers.azure.api_config.api_organizationstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.azure.api_config.api_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.azure.api_config.api_urlstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.azure.api_config.api_versionstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.azure.api_secret.azure_api_keystring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.azure.api_secret.azure_client_idstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.azure.api_secret.azure_client_secretstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.azure.api_secret.azure_tenant_idstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.vertexai.api_config.api_urlstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.vertexai.api_config.locationstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.vertexai.api_config.projectstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.vertexai.api_secret.vertexai_api_credentialsstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.openai.api_config.api_organizationstring""See the LLM Configuration section for more details.
requiredConfigs.llm.providers.openai.api_config.api_typestring"open_ai"See the LLM Configuration section for more details.
requiredConfigs.llm.providers.openai.api_config.api_urlstring"https://api.openai.com/v1"See the LLM Configuration section for more details.
requiredConfigs.llm.providers.openai.api_config.api_versionstring"2024-01-10"See the LLM Configuration section for more details.
requiredConfigs.llm.providers.openai.api_secret.api_keystring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.agent_supervisor.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.agent_supervisor.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.agent_supervisor.llm_namestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.codegen.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.codegen.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.codegen.llm_namestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.tag_prediction.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.tag_prediction.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.tag_prediction.llm_namestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.backup_codegen.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.backup_codegen.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.backup_codegen.llm_namestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.question_recommendations.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.question_recommendations.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.question_recommendations.llm_namestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.objective_recommendations.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.objective_recommendations.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.objective_recommendations.llm_namestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.table_explanations.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.table_explanations.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.table_explanations.llm_namestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.tutorial_tool.llm_providerstring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.tutorial_tool.llm_typestring""See the LLM Configuration section for more details.
requiredConfigs.llm.tasks.tutorial_tool.llm_namestring""See the LLM Configuration section for more details.
optionalConfigs.dcConfig.DATACHAT_CHARTING_WORKER_WORKERSstring"1"Number of charting worker processes to run in a single container.
optionalConfigs.dcConfig.DATACHAT_CHARTING_WORKER_CONCURRENCYstring"5"Number of jobs that can run concurrently in one charting worker process. This uses the Node.js event loop to run IO asynchronously.
scheduler.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
scheduler.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
scheduler.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
scheduler.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
scheduler.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
scheduler.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
scheduler.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
scheduler.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
scheduler.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
scheduler.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
scheduler.replicasint1The number of Pod replicas to create.
scheduler.resources.limits.cpustring"750m"The CPU limit for this service.
scheduler.resources.limits.memorystring"6Gi"The memory limit for this service.
scheduler.resources.requests.cpustring"750m"The CPU request for this service.
scheduler.resources.requests.memorystring"2.5Gi"The memory request for this service.
scheduler.spec.strategy.typestring"Recreate"The pod replacement strategy.
global.secrets.appStorage.enabledbooltrueWhether to create the Secret resource.
global.secrets.appStorage.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.appStorage.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.appStorage.idstring"<random 32 bytes>"The storage backend's key id.
global.secrets.appStorage.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.appStorage.secretstring"<random 64 bytes>"The storage backend's secret key.
global.secrets.appStorage.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.computeEngineCredentials.enabledbooltrueWhether to create the Secret resource.
global.secrets.computeEngineCredentials.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.computeEngineCredentials.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.computeEngineCredentials.passwordstring"<random 64 bytes>"The password for the compute engine.
global.secrets.computeEngineCredentials.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.computeEngineCredentials.usernamestring"postgres"The username for the compute engine.
global.secrets.computeEngineCredentials.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.dockerconfigjson.enabledbooltrueWhether to create the Secret resource of type kubernetes.io/dockerconfigjson.
global.secrets.dockerconfigjson.dockerEmailstring""The email to use in the credentials. Note that this is optional.
global.secrets.dockerconfigjson.dockerPasswordstring""The password to login to the private DataChat image repository.
global.secrets.dockerconfigjson.dockerServerstring"https://us-central1-docker.pkg.dev"The docker repository server to point to.
global.secrets.dockerconfigjson.dockerUsernamestring""The username to login to the private repository.
global.secrets.dockerconfigjson.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.dockerconfigjson.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.dockerconfigjson.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.dockerconfigjson.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.eso.refreshIntervalstring"0"The refresh interval for ExternalSecret resources.
global.secrets.eso.secretStoreRef.kindstring"ClusterSecretStore"The resource type of the ExternalSecretOperator's secret store.
global.secrets.eso.secretStoreRef.namestring""The name of the existing ExternalSecretOperator secret store. Note that this requires you to have installed and configured the ExternalSecretOperator already. See https://external-secrets.io/latest/ for more details.
global.secrets.gauthClientSecret.client_idstring"<random 32 bytes>"The client_id for Google Drive Access.
global.secrets.gauthClientSecret.client_secretstring"<random 32 bytes>"The client_secret for Google Drive Access.
global.secrets.gauthClientSecret.enabledboolfalseWhether to create the Secret resource.
global.secrets.gauthClientSecret.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.gauthClientSecret.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.gauthClientSecret.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.gauthClientSecret.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.googleSsoSecret.clientIdstring""The client_id for Google SSO.
global.secrets.googleSsoSecret.clientSecretstring""The client_secret for Google SSO.
global.secrets.googleSsoSecret.enabledboolfalseWhether to create the Secret resource.
global.secrets.googleSsoSecret.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.googleSsoSecret.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.googleSsoSecret.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.iapAudienceSecret.enabledboolfalseWhether to create the Secret resource.
global.secrets.iapAudienceSecret.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.iapAudienceSecret.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.iapAudienceSecret.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.iapAudienceSecret.valuestring""The IAP audience secret value.
global.secrets.iapAudienceSecret.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.managementDatabase.enabledbooltrueWhether to create the Secret resource.
global.secrets.managementDatabase.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.managementDatabase.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.managementDatabase.passwordstring"<random 64 bytes>"Override for the password for the management database.
global.secrets.managementDatabase.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.managementDatabase.rotateFromstring""The name of the Secret which the new Secret's data will come from. To use this configuration you must also set global.secrets.managementDatabase.rotate: true.
global.secrets.managementDatabase.usernamestring"postgres"Override for the username for the management database.
global.secrets.managementDatabase.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.chartingQueue.enabledbooltrueWhether to create the Secret resource.
global.secrets.chartingQueue.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.chartingQueue.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.chartingQueue.passwordstring"<random 64 bytes>"Override for the password for the charting queue.
global.secrets.chartingQueue.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.chartingQueue.rotateFromstring""The name of the Secret which the new Secret's data will come from. To use this configuration you must also set global.secrets.chartingQueue.rotate: true.
global.secrets.chartingQueue.usernamestring"postgres"Override for the username for the charting queue.
global.secrets.chartingQueue.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.kvStore.enabledbooltrueWhether to create the Secret resource.
global.secrets.kvStore.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.kvStore.eso.remoteSecretNamestring"datachat-kv-store-secret"The name of the secret that the ExternalSecret will use as its target.
global.secrets.kvStore.passwordstring"<random 32 alpha-numeric>"Override for the password for the KV store.
global.secrets.kvStore.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.kvStore.rotateFromstring""The name of the Secret which the new Secret's data will come from. To use this configuration you must also set global.secrets.kvStore.rotate: true.
global.secrets.kvStore.usernamestring""Override for the username for the KV store.
global.secrets.kvStore.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.msgStore.enabledbooltrueWhether to create the Secret resource.
global.secrets.msgStore.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.msgStore.eso.remoteSecretNamestring"datachat-msg-store-secret"The name of the secret that the ExternalSecret will use as its target.
global.secrets.msgStore.passwordstring"<random 32 alpha-numeric>"Override for the password for the message store.
global.secrets.msgStore.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.msgStore.rotateFromstring""The name of the Secret which the new Secret's data will come from. To use this configuration you must also set global.secrets.msgStore.rotate: true.
global.secrets.msgStore.usernamestring""Override for the username for the message store.
global.secrets.msgStore.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.acStore.enabledbooltrueWhether to create the Secret resource.
global.secrets.acStore.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.acStore.eso.remoteSecretNamestring"datachat-ac-store-secret"The name of the secret that the ExternalSecret will use as its target.
global.secrets.acStore.passwordstring"<random 32 alpha-numeric>"Override for the password for the autocomplete store.
global.secrets.acStore.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.acStore.rotateFromstring""The name of the Secret which the new Secret's data will come from. To use this configuration you must also set global.secrets.acStore.rotate: true.
global.secrets.acStore.usernamestring""Override for the username for the autocomplete store.
global.secrets.acStore.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.askCache.enabledbooltrueWhether to create the Secret resource.
global.secrets.askCache.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.askCache.eso.remoteSecretNamestring"datachat-ask-cache-secret"The name of the secret that the ExternalSecret will use as its target.
global.secrets.askCache.passwordstring"<random 32 alpha-numeric>"Override for the password for the ask cache.
global.secrets.askCache.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.askCache.rotateFromstring""The name of the Secret which the new Secret's data will come from. To use this configuration you must also set global.secrets.askCache.rotate: true.
global.secrets.askCache.usernamestring""Override for the username for the ask cache.
global.secrets.askCache.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.executorTaskQueue.enabledbooltrueWhether to create the Secret resource.
global.secrets.executorTaskQueue.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.executorTaskQueue.eso.remoteSecretNamestring"datachat-executor-task-queue-secret"The name of the secret that the ExternalSecret will use as its target.
global.secrets.executorTaskQueue.passwordstring"<random 32 alpha-numeric>"Override for the password for the executor task queue.
global.secrets.executorTaskQueue.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.executorTaskQueue.rotateFromstring""The name of the Secret which the new Secret's data will come from. To use this configuration you must also set global.secrets.executorTaskQueue.rotate: true.
global.secrets.executorTaskQueue.usernamestring""Override for the username for the executor task queue.
global.secrets.executorTaskQueue.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.jwtUtilityRsaKeys.DATACHAT_JWT_RSA_PRIVATE_KEYstring""RSA PKCS#8 private key used for authentication token signing.
global.secrets.jwtUtilityRsaKeys.DATACHAT_JWT_RSA_PUBLIC_KEYstring""RSA PKCS#8 public key used for authentication token verification.
global.secrets.jwtUtilityRsaKeys.enabledstringtrueWhether to create the Secret resource.
global.secrets.jwtUtilityRsaKeys.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.jwtUtilityRsaKeys.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.jwtUtilityRsaKeys.rotateboolfalseWhether to rotate the existing Secrete resource. Note that this does not work on ExternalSecret resources.
global.secrets.jwtUtilityRsaKeys.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.nl2codeSecret.enabledbooltrueWhether to create the Secret resource.
global.secrets.nl2codeSecret.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.nl2codeSecret.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.nl2codeSecret.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.nl2codeSecret.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.pipelinerSecret.enabledbooltrueWhether to create the Secret resource.
global.secrets.pipelinerSecret.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.pipelinerSecret.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.pipelinerSecret.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.pipelinerSecret.webKeystring"<random 32 alpha-numeric>" Web key used by pipeliner web server
global.secrets.pipelinerSecret.dbPasswordstring"<random 32 alpha-numeric>"Password used by pipeliner metadata storage
global.secrets.pipelinerSecret.dbUsernamestring"postgres"Username used by pipeliner metadata storage
global.secrets.pipelinerSecret.queuePasswordstring"<random 32 alpha-numeric>"Password used by pipeliner job queue
global.secrets.pipelinerSecret.queueUsernamestring"<random 32 alpha-numeric>"Username used by pipeliner job queue
global.secrets.pipelinerSecret.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
global.secrets.secretTls.enabledbooltrueWhether to create the Secret resource.
global.secrets.secretTls.eso.enabledboolfalseWhether to enable the ExternalSecret.
global.secrets.secretTls.eso.remoteSecretNamestring""The name of the secret that the ExternalSecret will use as its target.
global.secrets.secretTls.namestring"secret-tls"The name of the TLS Secret.
global.secrets.secretTls.rotateboolfalseWhether to rotate the existing Secret resource. Note that this does not work on ExternalSecret resources.
global.secrets.secretTls.tlsCrtstring"<self signed cert>"The TLS Certificate. If enabled and none is provided, a self signed certificate will be created using helm's genSelfSignedCert function and the cert will be used here.
global.secrets.secretTls.tlsKeystring"<self signed cert>"The TLS Private Key. If enabled and none is provided, a self signed certificate will be created using helm's genSelfSignedCert function and the key will be used here.
global.secrets.secretTls.specOverrideobject{}If using custom ExternalSecret objects, this allows you to override the .spec section entirely.
vector-db-init.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
vector-db-init.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
vector-db-init.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
vector-db-init.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
vector-db-init.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
vector-db-init.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
vector-db-init.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
vector-db-init.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
vector-db-init.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
vector-db-init.resources.limits.cpustring"2"The CPU limit for this service.
vector-db-init.resources.limits.memorystring"4Gi"The memory limit for this service.
vector-db-init.resources.requests.cpustring"500m"The CPU request for this service.
vector-db-init.resources.requests.memorystring"256Mi"The memory request for this service.
vector-mgmt-service.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
vector-mgmt-service.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
vector-mgmt-service.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
vector-mgmt-service.hpa.maxReplicasint8When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.maxReplicas.
vector-mgmt-service.hpa.minReplicasint1When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.minReplicas.
vector-mgmt-service.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
vector-mgmt-service.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
vector-mgmt-service.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
vector-mgmt-service.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
vector-mgmt-service.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
vector-mgmt-service.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
vector-mgmt-service.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
vector-mgmt-service.replicasint1The number of Pod replicas to create.
vector-mgmt-service.resources.limits.cpustring"1"The CPU limit for this service.
vector-mgmt-service.resources.limits.memorystring"1Gi"The memory limit for this service.
vector-mgmt-service.resources.requests.cpustring"1"The CPU request for this service.
vector-mgmt-service.resources.requests.memorystring"700Mi"The memory request for this service.
vector-mgmt-service.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
vector-mgmt-service.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
vector-mgmt-service.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
web-app.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
web-app.envlist[]Adds env variables to .spec.template.spec.containers[x].env.
web-app.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
web-app.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
web-app.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
web-app.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
web-app.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
web-app.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
web-app.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
web-app.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
web-app.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
web-app.replicasint1The number of Pod replicas to create.
web-app.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
web-app.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
web-app.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.
worker-nlp.commonEnvslist[]Adds common env variables to .spec.template.spec.containers[x].env.
worker-nlp.containerPortslist[]Ports to add to .spec.template.spec.containers[x].ports.
worker-nlp.extraEnvslist[]Adds extra env vars to .spec.template.spec.containers[x].env.
worker-nlp.extraPortslist[]Adds extra ports to .spec.template.spec.containers[x].ports.
worker-nlp.hpa.maxReplicasint16When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.maxReplicas.
worker-nlp.hpa.minReplicasint2When global.autoscaling.hpa.enabled: true this value will set the service's HPA's .spec.minReplicas.
worker-nlp.networkPolicy.ingress.extralist[]If global.networkPolicies.enabled: true, this adds extra ingress configurations to the NetworkPolicy's .spec.ingress block. For example, you would add additional array - from blocks here.
worker-nlp.networkPolicy.ingress.extraFromlist[]Adds additional ingress rules to the default ingress rule. For example, adding additional selectors will be placed in .spec.ingress[0].from block.
worker-nlp.networkPolicy.egressobject{}Adds egress NetworkPolicy block.
worker-nlp.networkPolicy.specOverridelist[]If using custom NetworkPolicy objects, this allows you to override the .spec section entirely.
worker-nlp.podAnnotationsobject{}Adds annotations to the Deployment's Pod spec at .spec.template.metadata.annotations.
worker-nlp.prometheus.exposedboolfalseIf true, allows prometheus.ports to be added to the Deployment's .spec.template.spec.containers[x].ports block.
worker-nlp.prometheus.portslist[]If prometheus.exposed: true then add the ports listed here to the Deployment's .spec.template.spec.containers[x].ports block.
worker-nlp.replicasint2The number of Pod replicas to create.
worker-nlp.resources.limits.cpustring"5"The CPU limit for this service.
worker-nlp.resources.limits.memorystring"15Gi"The memory limit for this service.
worker-nlp.resources.requests.cpustring"3"The CPU request for this service.
worker-nlp.resources.requests.memorystring"5Gi"The memory request for this service.
worker-nlp.spec.strategy.rollingUpdate.maxSurgestring"50%"The maximum number of Pods that can be created over the desired number of Pods during the Pod replacement strategy.
worker-nlp.spec.strategy.rollingUpdate.maxUnavailablestring"50%"The maximum number of pods that can be unavailable during Pod recreation.
worker-nlp.spec.strategy.typestring"RollingUpdate"The pod replacement strategy.

Authentication Signing and Verification Keys

DataChat uses an RSA PKCS#8 public/private key pair to sign and verify access and refresh tokens for user authentication. To set up these keys, follow the steps below:

  1. Use the script below to generate a public and private key:
!/bin/bash
# Define the output file names
PRIVATE_KEY_FILE="private_key.pem"
PUBLIC_KEY_FILE="public_key.pem"

# Generate a 2048-bit RSA private key
openssl genpkey -algorithm RSA -out $PRIVATE_KEY_FILE -pkeyopt rsa_keygen_bits:2048

# Extract the public key from the private key
openssl rsa -pubout -in $PRIVATE_KEY_FILE -out $PUBLIC_KEY_FILE

echo "Private key saved to $PRIVATE_KEY_FILE"
echo "Public key saved to $PUBLIC_KEY_FILE"

# Format the private key for embedding in environment variables
awk '{printf "%s\\n", $0}' "./$PRIVATE_KEY_FILE" | sed 's/\\n$//'
echo -e "\n"
awk '{printf "%s\\n", $0}' "./$PUBLIC_KEY_FILE" | sed 's/\\n$//'

# Delete the files
rm -f $PRIVATE_KEY_FILE $PUBLIC_KEY_FILE
echo -e "\n\nTemporary key files deleted."
  1. Add the keys to customer-values.yaml
global:
...
secrets:
...
jwtUtilityRsaKeys:
DATACHAT_JWT_RSA_PRIVATE_KEY: 'your-private-key'
DATACHAT_JWT_RSA_PUBLIC_KEY: 'your-public-key'

HorizontalPodAutoscaler

DataChat makes use of custom metrics to scale its services. Because of this, it requires the prometheus-adapter with a specific custom configuration.

Installation

  1. Add the prometheus-community helm repo:
helm add prometheus-community https://prometheus-community.github.io/helm-charts
  1. Create a values file with the following configuration:
image:
tag: v0.10.0

logLevel: 1

prometheus:
port: 9090

rules:
default: false
custom:
- seriesQuery: 'active_tasks'
name:
as: 'active_tasks'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)'
- seriesQuery: 'pipeliner_web_queue_size'
name:
as: 'pipeliner_web_queue'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
metricsQuery: 'avg_over_time(<<.Series>>{<<.LabelMatchers>>}[30s])'
- seriesQuery: 'rabbitmq_queue_messages{queue="datachat.task.incoming.regular"}'
name:
as: 'queue_depth_of_datachat_task_incoming_regular_queue'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>, queue="datachat.task.incoming.regular"}) by (<<.GroupBy>>)'
- seriesQuery: 'active_encoderlm_service_requests{namespace!="",pod!=""}'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
name:
as: 'percent_encoderlm_service_procs_busy'
metricsQuery: 'avg(sum(<<.Series>>{<<.LabelMatchers>>}) by (pid, pod, namespace)) by (<<.GroupBy>>)'
- seriesQuery: 'active_dc_nl2code_service_requests{namespace!="",pod!=""}'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
name:
as: 'percent_dc_nl2code_procs_busy'
metricsQuery: 'avg(sum(<<.Series>>{<<.LabelMatchers>>}) by (pid, pod, namespace)) by (<<.GroupBy>>) / 5'
- seriesQuery: 'active_dc_app_service_requests{namespace!="",pod!=""}'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
name:
as: 'percent_dc_app_service_procs_busy'
metricsQuery: 'avg(sum(<<.Series>>{<<.LabelMatchers>>}) by (pid, pod, namespace)) by (<<.GroupBy>>)'
- seriesQuery: 'rabbitmq_queue_messages{queue="ml_task_executor_rpc"}'
name:
as: 'queue_depth_of_datachat_ml_task_executor_rpc_queue'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>, queue="ml_task_executor_rpc"}) by (<<.GroupBy>>)'
- seriesQuery: 'active_vector_mgmt_service_requests{namespace!="",pod!=""}'
resources:
overrides:
namespace:
resource: namespace
pod:
resource: pod
name:
as: 'percent_vector_mgmt_service_procs_busy'
metricsQuery: 'avg(sum(<<.Series>>{<<.LabelMatchers>>}) by (pid, pod, namespace)) by (<<.GroupBy>>) / 5'
external:
- seriesQuery: 'pipeliner_sql_queue_size{job_queue="sqlsingle"}'
name:
as: 'pipeliner_sql_single_task_queue'
resources:
overrides:
kubernetes_namespace: { resource: 'namespace' }
metricsQuery: 'avg(avg_over_time(pipeliner_sql_queue_size{<<.LabelMatchers>>,job_queue="sqlsingle"}[30s]))'
- seriesQuery: 'pipeliner_sql_queue_size{job_queue="sqlmulti"}'
name:
as: 'pipeliner_sql_multi_task_queue'
resources:
overrides:
kubernetes_namespace: { resource: 'namespace' }
metricsQuery: 'avg(avg_over_time(pipeliner_sql_queue_size{<<.LabelMatchers>>,job_queue="sqlmulti"}[30s]))'
  1. Install the prometheus-adapter helm chart:
helm repo update && \
helm install prometheus-adapter prometheus-community/prometheus-adapter -n prometheus --create-namespace -f <path-to-your-values-file>
  1. Upgrade your datachat chart and enable HPAs:
helm upgrade -n datachat --reuse-values --set global.autoscaling.hpa.enabled=true

NetworkPolicies

Some cluster Container Network Interfaces (CNI) may not support or need NetworkPolicies, making these resources optional. To enable NetworkPolicy resources, set global.networkPolicies.enabled: true in the chart's values.yaml file.

Note: Services exposed via the Ingress resource will block all ingress traffic except from the ingress controller's namespace. Currently, this applies only to the Ingress-NGINX Controller in the ingress-nginx namespace. If you use another ingress controller, you must allow ingress traffic from its namespace for DataChat services exposed via the Ingress object.

To accommodate different organizational needs, the chart allows customization of the NetworkPolicy resources' .spec section. For example:

  1. DataChat currently provides only ingress rules. If you need egress rules:
# values.yaml
global:
networkPolicies:
enabled: true

# For each service's NetworkPolicy, add egress rules. For example:
ask-cache:
networkPolicy:
egress:
# <your-egress-rules-here>
  1. If you use custom NetworkPolicy resources like Calico's GlobalNetworkPolicy:
# values.yaml
global:
networkPolicies:
enabled: true
apiVersion: "projectcalico.org/v3"
kind: "GlobalNetworkPolicy"

# For each service's NetworkPolicy, you will then have to override the `.spec` section and use Calico's custom NetworkPolicy syntax. For example:
ask-cache:
networkPolicy:
ingress:
specOverride:
selector: app.kubernetes.io/name == '<datachat-service>'
types:
- Ingress
ingress:
- action: Allow
protocol: TCP
source:
selector: app.kubernetes.io/name == '<datachat-service>'
destination:
ports:
- 6379
  1. If you are using an ingress controller other than the ingress-nginx controller, or if you are using the ingress-nginx controller in a namespace other than ingress-nginx, you need to update the ingress policy to allow traffic from your ingress controller to the exposed DataChat services. Replace $INGRESS_CONTROLLER_NAMESPACE in the policy below with the namespace where your ingress controller is running:
# values.yaml
global:
networkPolicies:
ingressControllerNetworkPolicy:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: $INGRESS_CONTROLLER_NAMESPACE
podSelector:
matchLabels:
app.kubernetes.io/name: $INGRESS_CONTROLLER_NAMESPACE

LLM Configuration

DataChat configures Large Language Models (LLMs) for features such as the Data Assistant code generation, dynamic recommendations, and table explanations. There are two types of LLM configurations, API configuration and API secret:

  • API configuration. Includes parameters such as the model endpoint, model type, and endpoint API version.
  • API secret. Consists of the credentials needed to access the configured LLM endpoint.

LLM usage in a DataChat deployment can be configured by specifying required information about the LLM providers along with the LLMs to use for each LLM task in DataChat.

DataChat supports and uses the following LLM providers:

  • OpenAI
  • Azure OpenAI
  • Google VertexAI

Note: Currently, DataChat features are configured to utilize LLMs through DataChat-managed connections. If customer prefer to use their own deployed LLM, or a private LLM gateway, reach out to DataChat.