added repo
This commit is contained in:
@@ -0,0 +1,811 @@
|
||||
global:
|
||||
# -- (string) If using images from the Deepgram Quay image repositories,
|
||||
# or another private registry to which your cluster doesn't have default access,
|
||||
# you will need to provide a pre-configured K8s Secret
|
||||
# with image repository credentials. See chart docs for more details.
|
||||
pullSecretRef: dg-regcred
|
||||
|
||||
# -- (string) Name of the pre-configured K8s Secret containing your Deepgram
|
||||
# self-hosted API key. See chart docs for more details.
|
||||
deepgramSecretRef: dg-self-hosted-api-key
|
||||
|
||||
# -- Additional labels to add to all Deepgram resources
|
||||
additionalLabels: {}
|
||||
|
||||
# -- When an API or Engine container is signaled to shutdown via Kubernetes sending a SIGTERM
|
||||
# signal, the container will stop listening on its port, and no new requests will be routed
|
||||
# to that container. However, the container will continue to run until all existing
|
||||
# batch or streaming requests have completed, after which it will gracefully shut down.
|
||||
#
|
||||
# Batch requests should be finished within 10-15 minutes, but streaming requests can proceed indefinitely.
|
||||
#
|
||||
# outstandingRequestGracePeriod defines the period (in sec) after which Kubernetes will forcefully
|
||||
# shutdown the container, terminating any outstanding connections. 1800 / 60 sec/min = 30 mins
|
||||
outstandingRequestGracePeriod: 1800
|
||||
|
||||
# -- Configuration options for horizontal scaling of Deepgram
|
||||
# services. Only one of `static` and `auto` options can be enabled.
|
||||
# @default -- ``
|
||||
scaling:
|
||||
# -- Number of replicas to set during initial installation.
|
||||
# @default -- ``
|
||||
replicas:
|
||||
api: 1
|
||||
engine: 1
|
||||
|
||||
# -- Enable pod autoscaling based on system load/traffic.
|
||||
# @default -- ``
|
||||
auto:
|
||||
enabled: false
|
||||
|
||||
api:
|
||||
metrics:
|
||||
# -- Scale the API deployment to this Engine-to-Api pod ratio
|
||||
engineToApiRatio: 4
|
||||
# -- (list) If you have custom metrics you would like to scale with, you may add them here.
|
||||
# See the [k8s docs](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)
|
||||
# for how to structure a list of metrics
|
||||
custom:
|
||||
|
||||
# -- [Configurable scaling behavior](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#configurable-scaling-behavior)
|
||||
# @default -- "*See values.yaml file for default*"
|
||||
behavior:
|
||||
scaleDown:
|
||||
policies:
|
||||
- type: Pods
|
||||
value: 1
|
||||
periodSeconds: 60
|
||||
- type: Percent
|
||||
value: 25
|
||||
periodSeconds: 60
|
||||
|
||||
engine:
|
||||
# -- Minimum number of Engine replicas.
|
||||
minReplicas: 1
|
||||
# -- Maximum number of Engine replicas.
|
||||
maxReplicas: 10
|
||||
metrics:
|
||||
# -- If `engine.concurrencyLimit.activeRequests` is set, this variable will
|
||||
# define the ratio of current active requests to maximum active requests at which
|
||||
# the Engine pods will scale. Setting this value too close to 1.0 may lead to a situation where
|
||||
# the cluster is at max capacity and rejects incoming requests. Setting the ratio too close to 0.0
|
||||
# will over-optimistically scale your cluster and increase compute costs unnecessarily.
|
||||
requestCapacityRatio:
|
||||
speechToText:
|
||||
batch:
|
||||
# -- (int) Scale the Engine pods based on a static desired number of speech-to-text batch requests per pod
|
||||
requestsPerPod:
|
||||
streaming:
|
||||
# -- (int) Scale the Engine pods based on a static desired number of speech-to-text streaming requests per pod
|
||||
requestsPerPod:
|
||||
textToSpeech:
|
||||
batch:
|
||||
# -- (int) Scale the Engine pods based on a static desired number of text-to-speech batch requests per pod
|
||||
requestsPerPod:
|
||||
# -- If you have custom metrics you would like to scale with, you may add them here.
|
||||
# See the [k8s docs](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)
|
||||
# for how to structure a list of metrics
|
||||
custom: []
|
||||
|
||||
# -- [Configurable scaling behavior](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#configurable-scaling-behavior)
|
||||
# @default -- "*See values.yaml file for default*"
|
||||
behavior:
|
||||
scaleDown:
|
||||
policies:
|
||||
- type: Pods
|
||||
value: 1
|
||||
periodSeconds: 60
|
||||
- type: Percent
|
||||
value: 25
|
||||
periodSeconds: 60
|
||||
|
||||
api:
|
||||
# -- namePrefix is the prefix to apply to the name of all K8s objects
|
||||
# associated with the Deepgram API containers.
|
||||
namePrefix: "deepgram-api"
|
||||
|
||||
image:
|
||||
# -- path configures the image path to use for creating API containers.
|
||||
# You may change this from the public Quay image path if you have imported
|
||||
# Deepgram images into a private container registry.
|
||||
path: quay.io/deepgram/self-hosted-api
|
||||
# -- pullPolicy configures how the Kubelet attempts to pull the Deepgram API image
|
||||
pullPolicy: IfNotPresent
|
||||
# -- tag defines which Deepgram release to use for API containers
|
||||
tag: release-240827
|
||||
|
||||
# -- Additional labels to add to API resources
|
||||
additionalLabels: {}
|
||||
|
||||
# -- (object) Additional annotations to add to the API deployment
|
||||
additionalAnnotations:
|
||||
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
# -- The maximum number of API pods, relative to the number of replicas,
|
||||
# that can go offline during a rolling update. See the
|
||||
# [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#max-unavailable)
|
||||
# for more details.
|
||||
maxUnavailable: 0
|
||||
# -- The maximum number of extra API pods that can be created during a rollingUpdate,
|
||||
# relative to the number of replicas. See the
|
||||
# [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#max-surge)
|
||||
# for more details.
|
||||
maxSurge: 1
|
||||
|
||||
# -- Configure resource limits per API container. See
|
||||
# [Deepgram's documentation](https://developers.deepgram.com/docs/self-hosted-deployment-environments#api)
|
||||
# for more details.
|
||||
# @default -- ``
|
||||
resources:
|
||||
requests:
|
||||
memory: "4Gi"
|
||||
cpu: "2000m"
|
||||
limits:
|
||||
memory: "8Gi"
|
||||
cpu: "4000m"
|
||||
|
||||
# -- Readiness probe customization for API pods.
|
||||
# @default -- ``
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
failureThreshold: 1
|
||||
# -- Liveness probe customization for API pods.
|
||||
# @default -- ``
|
||||
livenessProbe:
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
failureThreshold: 3
|
||||
|
||||
# -- [Affinity and anti-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity)
|
||||
# to apply for API pods.
|
||||
affinity: {}
|
||||
# -- [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
|
||||
# to apply to API pods.
|
||||
tolerations:
|
||||
- effect: NoSchedule
|
||||
key: dedicated
|
||||
operator: Equal
|
||||
value: deepgram-api-pool
|
||||
|
||||
|
||||
# -- [Security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) for API pods.
|
||||
securityContext: {}
|
||||
|
||||
serviceAccount:
|
||||
# -- Specifies whether to create a default service account for the Deepgram API Deployment.
|
||||
create: true
|
||||
# -- (string) Allows providing a custom service account name for the API component.
|
||||
# If left empty, the default service account name will be used.
|
||||
# If specified, and `api.serviceAccount.create = true`, this defines the name of the default service account.
|
||||
# If specified, and `api.serviceAccount.create = false`, this provides the name of a preconfigured service account
|
||||
# you wish to attach to the API deployment.
|
||||
name:
|
||||
|
||||
# -- Configure how the API will listen for your requests
|
||||
# @default -- ``
|
||||
server:
|
||||
# baseUrl is the prefix requests to the API.
|
||||
baseUrl: "/v1"
|
||||
# -- host is the IP address to listen on. You will want to listen
|
||||
# on all interfaces to interact with other pods in the cluster.
|
||||
host: "0.0.0.0"
|
||||
# -- port to listen on.
|
||||
port: 8080
|
||||
|
||||
# -- callbackConnTimeout configures how long to wait for a connection to a callback URL.
|
||||
# See [Deepgram's callback documentation](https://developers.deepgram.com/docs/callback)
|
||||
# for more details. The value should be a humantime duration.
|
||||
callbackConnTimeout: "1s"
|
||||
# -- callbackTimeout configures how long to wait for a response from a callback URL.
|
||||
# See [Deepgram's callback documentation](https://developers.deepgram.com/docs/callback)
|
||||
# for more details. The value should be a humantime duration.
|
||||
callbackTimeout: "10s"
|
||||
|
||||
# -- fetchConnTimeout configures how long to wait for a connection to a fetch URL.
|
||||
# The value should be a humantime duration.
|
||||
# A fetch URL is a URL passed in an inference request from which a payload should be
|
||||
# downloaded.
|
||||
fetchConnTimeout: "1s"
|
||||
# -- fetchTimeout configures how long to wait for a response from a fetch URL.
|
||||
# The value should be a humantime duration.
|
||||
# A fetch URL is a URL passed in an inference request from which a payload should be
|
||||
# downloaded.
|
||||
fetchTimeout: "60s"
|
||||
|
||||
# -- Specify custom DNS resolution options.
|
||||
# @default -- ``
|
||||
resolver:
|
||||
# -- nameservers allows for specifying custom domain name server(s).
|
||||
# A valid list item's format is "{IP} {PORT} {PROTOCOL (tcp or udp)}",
|
||||
# e.g. `"127.0.0.1 53 udp"`.
|
||||
nameservers: []
|
||||
# -- (int) maxTTL sets the DNS TTL value if specifying a custom DNS nameserver.
|
||||
maxTTL:
|
||||
|
||||
# -- Enable ancillary features
|
||||
# @default -- ``
|
||||
features:
|
||||
# -- Enables entity detection on pre-recorded audio
|
||||
# *if* a valid entity detection model is available.
|
||||
# *WARNING*: Beta functionality.
|
||||
entityDetection: false
|
||||
|
||||
# -- Enables entity-based redaction on pre-recorded audio
|
||||
# *if* a valid entity detection model is available.
|
||||
# *WARNING*: Beta functionality.
|
||||
entityRedaction: false
|
||||
|
||||
# -- If API is receiving requests faster than Engine can process them, a request
|
||||
# queue will form. By default, this queue is stored in memory. Under high load,
|
||||
# the queue may grow too large and cause Out-Of-Memory errors. To avoid this,
|
||||
# set a diskBufferPath to buffer the overflow on the request queue to disk.
|
||||
#
|
||||
# WARN: This is only to temporarily buffer requests during high load.
|
||||
# If there is not enough Engine capacity to process the queued requests over time,
|
||||
# the queue (and response time) will grow indefinitely.
|
||||
diskBufferPath:
|
||||
|
||||
# -- driverPool configures the backend pool of speech engines (generically referred to as
|
||||
# "drivers" here). The API will load-balance among drivers in the standard
|
||||
# pool; if one standard driver fails, the next one will be tried.
|
||||
# @default -- ``
|
||||
driverPool:
|
||||
# -- standard is the main driver pool to use.
|
||||
# @default -- ``
|
||||
standard:
|
||||
# -- timeoutBackoff is the factor to increase the timeout by
|
||||
# for each additional retry (for exponential backoff).
|
||||
timeoutBackoff: 1.2
|
||||
|
||||
# -- retrySleep defines the initial sleep period (in humantime duration)
|
||||
# before attempting a retry.
|
||||
retrySleep: "2s"
|
||||
# -- retryBackoff is the factor to increase the retrySleep
|
||||
# by for each additional retry (for exponential backoff).
|
||||
retryBackoff: 1.6
|
||||
|
||||
# -- Maximum response to deserialize from Driver (in bytes).
|
||||
# Default is 1GB, expressed in bytes.
|
||||
maxResponseSize: "1073741824"
|
||||
|
||||
engineAutoscaling:
|
||||
enabled: false
|
||||
|
||||
engine:
|
||||
# -- namePrefix is the prefix to apply to the name of all K8s objects
|
||||
# associated with the Deepgram Engine containers.
|
||||
namePrefix: "deepgram-engine"
|
||||
|
||||
image:
|
||||
# -- path configures the image path to use for creating Engine containers.
|
||||
# You may change this from the public Quay image path if you have imported
|
||||
# Deepgram images into a private container registry.
|
||||
path: quay.io/deepgram/self-hosted-engine
|
||||
# -- pullPolicy configures how the Kubelet attempts to pull the Deepgram Engine image
|
||||
pullPolicy: IfNotPresent
|
||||
# -- tag defines which Deepgram release to use for Engine containers
|
||||
tag: release-240827
|
||||
|
||||
# -- Additional labels to add to Engine resources
|
||||
additionalLabels: {}
|
||||
|
||||
# -- (object) Additional annotations to add to the Engine deployment
|
||||
additionalAnnotations:
|
||||
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
# -- The maximum number of Engine pods, relative to the number of replicas,
|
||||
# that can go offline during a rolling update. See the
|
||||
# [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#max-unavailable)
|
||||
# for more details.
|
||||
maxUnavailable: 0
|
||||
# -- The maximum number of extra Engine pods that can be created during a rollingUpdate,
|
||||
# relative to the number of replicas. See the
|
||||
# [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#max-surge)
|
||||
# for more details.
|
||||
maxSurge: 1
|
||||
|
||||
# -- Configure resource limits per Engine container. See
|
||||
# [Deepgram's documentation](https://developers.deepgram.com/docs/self-hosted-deployment-environments#engine)
|
||||
# for more details.
|
||||
# @default -- ``
|
||||
resources:
|
||||
requests:
|
||||
memory: "30Gi"
|
||||
cpu: "4000m"
|
||||
# -- gpu maps to the nvidia.com/gpu resource parameter
|
||||
gpu: 1
|
||||
limits:
|
||||
memory: "40Gi"
|
||||
cpu: "8000m"
|
||||
# -- gpu maps to the nvidia.com/gpu resource parameter
|
||||
gpu: 1
|
||||
|
||||
# -- The startupProbe combination of `periodSeconds` and `failureThreshold` allows
|
||||
# time for the container to load all models and start listening for incoming requests.
|
||||
#
|
||||
# Model load time can be affected by hardware I/O speeds, as well as network speeds
|
||||
# if you are using a network volume mount for the models.
|
||||
#
|
||||
# If you are hitting the failure threshold before models are finished loading, you may
|
||||
# want to extend the startup probe. However, this will also extend the time it takes
|
||||
# to detect a pod that can't establish a network connection to validate its license.
|
||||
# @default -- ``
|
||||
startupProbe:
|
||||
# -- periodSeconds defines how often to execute the probe.
|
||||
periodSeconds: 10
|
||||
# -- failureThreshold defines how many unsuccessful startup probe attempts
|
||||
# are allowed before the container will be marked as Failed
|
||||
failureThreshold: 60
|
||||
|
||||
# -- Readiness probe customization for Engine pods.
|
||||
# @default -- ``
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
failureThreshold: 1
|
||||
# -- Liveness probe customization for Engine pods.
|
||||
# @default -- ``
|
||||
livenessProbe:
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
failureThreshold: 3
|
||||
|
||||
# -- [Container lifecycle hooks](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/)
|
||||
# for Engine containers. Use this to configure a preStop hook for graceful shutdown.
|
||||
# @default -- ``
|
||||
# Example:
|
||||
# lifecycle:
|
||||
# preStop:
|
||||
# exec:
|
||||
# command:
|
||||
# - /bin/sh
|
||||
# - -c
|
||||
# - "sleep 30"
|
||||
lifecycle: {}
|
||||
|
||||
# -- [Affinity and anti-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity)
|
||||
# to apply for Engine pods.
|
||||
affinity: {}
|
||||
# -- [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
|
||||
# to apply to Engine pods.
|
||||
tolerations:
|
||||
- effect: NoSchedule
|
||||
key: dedicated
|
||||
operator: Equal
|
||||
value: deepgram-engine-pool
|
||||
|
||||
# -- [Security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) for API pods.
|
||||
securityContext: {}
|
||||
|
||||
serviceAccount:
|
||||
# -- Specifies whether to create a default service account for the Deepgram Engine Deployment.
|
||||
create: true
|
||||
# -- (string) Allows providing a custom service account name for the Engine component.
|
||||
# If left empty, the default service account name will be used.
|
||||
# If specified, and `engine.serviceAccount.create = true`, this defines the name of the default service account.
|
||||
# If specified, and `engine.serviceAccount.create = false`, this provides the name of a preconfigured service account
|
||||
# you wish to attach to the Engine deployment.
|
||||
name:
|
||||
|
||||
concurrencyLimit:
|
||||
# -- (int) activeRequests limits the number of active requests handled by
|
||||
# a single Engine container.
|
||||
# If additional requests beyond the limit are sent, the API container
|
||||
# forming the request will try a different Engine pod. If no Engine pods
|
||||
# are able to accept the request, the API will return a 429 HTTP response
|
||||
# to the client. The `nil` default means no limit will be set.
|
||||
activeRequests:
|
||||
|
||||
# -- Configure Engine containers to listen for requests from API containers.
|
||||
# @default -- ``
|
||||
server:
|
||||
# -- host is the IP address to listen on for inference requests.
|
||||
# You will want to listen on all interfaces to interact with
|
||||
# other pods in the cluster.
|
||||
host: "0.0.0.0"
|
||||
# -- port to listen on for inference requests
|
||||
port: 8080
|
||||
|
||||
# -- metricsServer exposes an endpoint on each Engine container
|
||||
# for reporting inference-specific system metrics.
|
||||
# See https://developers.deepgram.com/docs/metrics-guide#deepgram-engine
|
||||
# for more details.
|
||||
# @default -- ``
|
||||
metricsServer:
|
||||
# -- host is the IP address to listen on for metrics requests.
|
||||
# You will want to listen on all interfaces to interact with
|
||||
# other pods in the cluster.
|
||||
host: "0.0.0.0"
|
||||
# -- port to listen on for metrics requests
|
||||
port: 9991
|
||||
|
||||
modelManager:
|
||||
volumes:
|
||||
customVolumeClaim:
|
||||
# -- You may manually create your own PersistentVolume and PersistentVolumeClaim to store and
|
||||
# expose model files to the Deepgram Engine. Configure your storage beforehand,
|
||||
# and enable here.
|
||||
# Note: Make sure the PV and PVC accessMode are set to `readWriteMany` or `readOnlyMany`
|
||||
enabled: false
|
||||
# -- (string) Name of your pre-configured PersistentVolumeClaim
|
||||
name:
|
||||
# -- Name of the directory within your pre-configured PersistentVolume
|
||||
# where the models are stored
|
||||
modelsDirectory: "/"
|
||||
|
||||
aws:
|
||||
efs:
|
||||
# -- Whether to use an [AWS Elastic File Sytem](https://aws.amazon.com/efs/)
|
||||
# to store Deepgram models for use by Engine containers.
|
||||
# This option requires your cluster to be running in
|
||||
# [AWS EKS](https://aws.amazon.com/eks/).
|
||||
enabled: false
|
||||
# -- Name prefix for the resources associated with the model storage in AWS EFS.
|
||||
namePrefix: dg-models
|
||||
# -- (string) FileSystemId of existing AWS Elastic File System where
|
||||
# Deepgram model files will be persisted.
|
||||
# You can find it using the AWS CLI:
|
||||
# ```
|
||||
# $ aws efs describe-file-systems --query "FileSystems[*].FileSystemId"
|
||||
# ```
|
||||
fileSystemId:
|
||||
# -- Whether to force a fresh download of all model links provided,
|
||||
# even if models are already present in EFS.
|
||||
forceDownload: false
|
||||
gcp:
|
||||
gpd:
|
||||
# -- Whether to use an [GKE Persistent Disks](https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes)
|
||||
# to store Deepgram models for use by Engine containers.
|
||||
# This option requires your cluster to be running in
|
||||
# [GCP GKE](https://cloud.google.com/kubernetes-engine).
|
||||
# See the GKE documentation on
|
||||
# [using pre-existing persistent disks](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/preexisting-pd).
|
||||
enabled: true
|
||||
# -- Name prefix for the resources associated with the model storage in GCP GPD.
|
||||
namePrefix: dg-models
|
||||
# -- The storageClassName of the existing persistent disk.
|
||||
storageClassName: "standard-rwo"
|
||||
# -- The size of your pre-existing persistent disk.
|
||||
storageCapacity: "40G"
|
||||
# -- The identifier of your pre-existing persistent disk.
|
||||
# The format is projects/{project_id}/zones/{zone_name}/disks/{disk_name} for Zonal persistent disks,
|
||||
# or projects/{project_id}/regions/{region_name}/disks/{disk_name} for Regional persistent disks.
|
||||
volumeHandle: "projects/meesho-supply-prd-0622/zones/asia-southeast1-a/disks/deepgram-model-storage"
|
||||
fsType: "ext4"
|
||||
|
||||
models:
|
||||
# -- Links to your Deepgram models, if automatically downloading
|
||||
# into storage backing a persistent volume.
|
||||
# **Automatic downloads are currently supported for AWS EFS volumes only.**
|
||||
# Insert each model link provided to you by your Deepgram
|
||||
# Account Representative.
|
||||
links: []
|
||||
|
||||
# -- chunking defines the size of audio chunks to process in seconds.
|
||||
# Adjusting these values will affect both inference performance and accuracy
|
||||
# of results. Please contact your Deepgram Account Representative if you
|
||||
# want to adjust any of these values.
|
||||
# @default -- ``
|
||||
chunking:
|
||||
speechToText:
|
||||
batch:
|
||||
# -- (float) minDuration is the minimum audio duration for a STT chunk size for a batch request
|
||||
minDuration:
|
||||
# -- (float) minDuration is the maximum audio duration for a STT chunk size for a batch request
|
||||
maxDuration:
|
||||
streaming:
|
||||
# -- (float) minDuration is the minimum audio duration for a STT chunk size for a streaming request
|
||||
minDuration:
|
||||
# -- (float) minDuration is the maximum audio duration for a STT chunk size for a streaming request
|
||||
maxDuration:
|
||||
# -- step defines how often to return interim results, in seconds.
|
||||
# This value may be lowered to increase the frequency of interim results.
|
||||
# However, this also causes a significant decrease in the number of concurrent
|
||||
# streams supported by a single GPU. Please contact your Deepgram Account
|
||||
# representative for more details.
|
||||
step: 1.0
|
||||
|
||||
halfPrecision:
|
||||
# -- Engine will automatically enable half precision operations if your GPU supports
|
||||
# them. You can explicitly enable or disable this behavior with the state parameter
|
||||
# which supports `"enable"`, `"disabled"`, and `"auto"`.
|
||||
state: "auto"
|
||||
|
||||
# -- Configuration options for the optional
|
||||
# [Deepgram License Proxy](https://developers.deepgram.com/docs/license-proxy).
|
||||
# @default -- ``
|
||||
licenseProxy:
|
||||
# -- The License Proxy is optional, but highly recommended to be deployed in production
|
||||
# to enable highly available environments.
|
||||
enabled: false
|
||||
|
||||
# -- If the License Proxy is deployed, one replica should be sufficient to
|
||||
# support many API/Engine pods.
|
||||
# Highly available environments may wish to deploy a second replica to ensure
|
||||
# uptime, which can be toggled with this option.
|
||||
deploySecondReplica: false
|
||||
|
||||
# -- Even with a License Proxy deployed, API and Engine pods can be configured to keep the
|
||||
# upstream `license.deepgram.com` license server as a fallback licensing option if the
|
||||
# License Proxy is unavailable.
|
||||
# Disable this option if you are restricting API/Engine Pod network access for security reasons,
|
||||
# and only the License Proxy should send egress traffic to the upstream license server.
|
||||
keepUpstreamServerAsBackup: true
|
||||
|
||||
# -- namePrefix is the prefix to apply to the name of all K8s objects
|
||||
# associated with the Deepgram License Proxy containers.
|
||||
namePrefix: "deepgram-license-proxy"
|
||||
|
||||
image:
|
||||
# -- path configures the image path to use for creating License Proxy containers.
|
||||
# You may change this from the public Quay image path if you have imported
|
||||
# Deepgram images into a private container registry.
|
||||
path: quay.io/deepgram/self-hosted-license-proxy
|
||||
# -- tag defines which Deepgram release to use for License Proxy containers
|
||||
tag: release-240827
|
||||
# -- pullPolicy configures how the Kubelet attempts to pull the Deepgram
|
||||
# License Proxy image
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# -- Additional labels to add to License Proxy resources
|
||||
additionalLabels: {}
|
||||
|
||||
# -- (object) Additional annotations to add to the LicenseProxy deployment
|
||||
additionalAnnotations:
|
||||
|
||||
updateStrategy:
|
||||
# -- For the LicenseProxy, we only expose maxSurge and not maxUnavailable.
|
||||
# This is to avoid accidentally having all LicenseProxy nodes go offline during upgrades,
|
||||
# which could impact the entire cluster's connection to the Deepgram License Server.
|
||||
# @default -- ``
|
||||
rollingUpdate:
|
||||
# -- The maximum number of extra License Proxy pods that can be created during a rollingUpdate,
|
||||
# relative to the number of replicas. See the
|
||||
# [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#max-surge)
|
||||
# for more details.
|
||||
maxSurge: 1
|
||||
|
||||
# -- Configure resource limits per License Proxy container. See
|
||||
# [Deepgram's documentation](https://developers.deepgram.com/docs/license-proxy#system-requirements)
|
||||
# for more details.
|
||||
# @default -- ``
|
||||
resources:
|
||||
requests:
|
||||
memory: "1Gi"
|
||||
cpu: "1000m"
|
||||
limits:
|
||||
memory: "8Gi"
|
||||
cpu: "2000m"
|
||||
|
||||
# -- Readiness probe customization for License Proxy pods.
|
||||
# @default -- ``
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
failureThreshold: 1
|
||||
# -- Liveness probe customization for Proxy pods.
|
||||
# @default -- ``
|
||||
livenessProbe:
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
failureThreshold: 3
|
||||
|
||||
# -- [Affinity and anti-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity)
|
||||
# to apply for License Proxy pods.
|
||||
affinity: {}
|
||||
# -- [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
|
||||
# to apply to License Proxy pods.
|
||||
tolerations:
|
||||
- effect: NoSchedule
|
||||
key: dedicated
|
||||
operator: Equal
|
||||
value: deepgram-proxy-pool
|
||||
|
||||
# -- [Security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) for API pods.
|
||||
securityContext: {}
|
||||
|
||||
serviceAccount:
|
||||
# -- Specifies whether to create a default service account for the Deepgram License Proxy Deployment.
|
||||
create: true
|
||||
# -- (string) Allows providing a custom service account name for the LicenseProxy component.
|
||||
# If left empty, the default service account name will be used.
|
||||
# If specified, and `licenseProxy.serviceAccount.create = true`, this defines the name of the default service account.
|
||||
# If specified, and `licenseProxy.serviceAccount.create = false`, this provides the name of a preconfigured service account
|
||||
# you wish to attach to the License Proxy deployment.
|
||||
name:
|
||||
|
||||
# -- Configure how the license proxy will listen for licensing requests.
|
||||
# @default -- ``
|
||||
server:
|
||||
# --host is the IP address to listen on. You will want to listen
|
||||
# on all interfaces to interact with other pods in the cluster.
|
||||
host: "0.0.0.0"
|
||||
# -- port to listen on.
|
||||
port: 8443
|
||||
|
||||
# -- baseUrl is the prefix for incoming license verification requests.
|
||||
baseUrl: "/"
|
||||
|
||||
# -- statusPort is the port to listen on for the status/health endpoint.
|
||||
statusPort: 8080
|
||||
|
||||
# -- Passthrough values for [NVIDIA GPU Operator Helm chart](https://github.com/NVIDIA/gpu-operator/blob/master/deployments/gpu-operator/values.yaml)
|
||||
# You may use the NVIDIA GPU Operator to manage installation of NVIDIA drivers and the container toolkit on nodes with attached GPUs.
|
||||
# @default -- ``
|
||||
gpu-operator:
|
||||
# -- Whether to install the NVIDIA GPU Operator to manage driver and/or container toolkit installation.
|
||||
# See the list of [supported Operating Systems](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/platform-support.html#supported-operating-systems-and-kubernetes-platforms)
|
||||
# to verify compatibility with your cluster/nodes. Disable this option if your cluster/nodes are not compatible.
|
||||
# If disabled, you will need to self-manage NVIDIA software installation on all nodes where you want
|
||||
# to schedule Deepgram Engine pods.
|
||||
enabled: true
|
||||
driver:
|
||||
# -- Whether to install NVIDIA drivers on nodes where a NVIDIA GPU is detected.
|
||||
# If your Kubernetes nodes run a base image that comes with NVIDIA drivers pre-configured,
|
||||
# disable this option, but keep the parent `gpu-operator` and sibling `toolkit`
|
||||
# options enabled.
|
||||
enabled: true
|
||||
# -- NVIDIA driver version to install.
|
||||
version: "550.54.15"
|
||||
toolkit:
|
||||
# -- Whether to install NVIDIA drivers on nodes where a NVIDIA GPU is detected.
|
||||
enabled: true
|
||||
# -- NVIDIA container toolkit to install. The default `ubuntu` image tag for the
|
||||
# toolkit requires a dynamic runtime link to a version of GLIBC that may not be
|
||||
# present on nodes running older Linux distribution releases, such as Ubuntu 22.04.
|
||||
# Therefore, we specify the `ubi8` image, which statically links the GLIBC library
|
||||
# and avoids this issue.
|
||||
version: v1.15.0-ubi8
|
||||
|
||||
cluster-autoscaler:
|
||||
# -- Set to `true` to enable node autoscaling with AWS EKS. Note needed for GKE, as autoscaling is enabled by a
|
||||
# [cli option on cluster creation](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-autoscaler#creating_a_cluster_with_autoscaling).
|
||||
enabled: false
|
||||
rbac:
|
||||
serviceAccount:
|
||||
# -- Name of the IAM Service Account with the [necessary permissions](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#permissions)
|
||||
name: cluster-autoscaler-sa
|
||||
annotations:
|
||||
# -- (string) Replace with the AWS Role ARN configured for the Cluster Autoscaler.
|
||||
# See the [Deepgram AWS EKS guide](https://developers.deepgram.com/docs/aws-k8s#creating-a-cluster)
|
||||
# or [Cluster Autoscaler AWS documentation](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md#permissions)
|
||||
# for details.
|
||||
eks.amazonaws.com/role-arn:
|
||||
autoDiscovery:
|
||||
# -- (string) Name of your AWS EKS cluster. Using the [Cluster Autoscaler](https://github.com/kubernetes/autoscaler)
|
||||
# on AWS requires knowledge of certain cluster metadata.
|
||||
clusterName:
|
||||
# -- (string) Region of your AWS EKS cluster. Using the [Cluster Autoscaler](https://github.com/kubernetes/autoscaler)
|
||||
# on AWS requires knowledge of certain cluster metadata.
|
||||
awsRegion:
|
||||
|
||||
# -- Passthrough values for [Prometheus k8s stack Helm chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack).
|
||||
# Prometheus (and its adapter) should be configured when scaling.auto is enabled.
|
||||
# You may choose to use the installation/configuration bundled in this Helm chart,
|
||||
# or you may configure an existing Prometheus installation in your cluster to expose
|
||||
# the needed values.
|
||||
# See source Helm chart for explanation of available values. Default values provided in this chart are used
|
||||
# to provide pod autoscaling for Deepgram pods.
|
||||
# @default -- ``
|
||||
kube-prometheus-stack:
|
||||
# -- (bool) Normally, this chart will be installed if `scaling.auto.enabled` is true. However, if you wish
|
||||
# to manage the Prometheus adapter in your cluster on your own and not as part of the Deepgram Helm chart,
|
||||
# you can force it to not be installed by setting this to `false`.
|
||||
includeDependency:
|
||||
|
||||
fullnameOverride: "dg-prometheus-stack"
|
||||
prometheus:
|
||||
prometheusSpec:
|
||||
additionalScrapeConfigs:
|
||||
- job_name: "dg_engine_metrics"
|
||||
scrape_interval: "2s"
|
||||
kubernetes_sd_configs:
|
||||
- role: endpoints
|
||||
namespaces:
|
||||
names:
|
||||
- "{{ .Release.Namespace }}"
|
||||
relabel_configs:
|
||||
- source_labels: [__meta_kubernetes_service_name]
|
||||
regex: "(.*)-metrics"
|
||||
action: keep
|
||||
- source_labels: [__meta_kubernetes_endpoint_port_name]
|
||||
regex: "metrics"
|
||||
action: keep
|
||||
- source_labels: [__meta_kubernetes_namespace]
|
||||
target_label: namespace
|
||||
- source_labels: [__meta_kubernetes_service_name]
|
||||
target_label: service
|
||||
- source_labels: [__meta_kubernetes_pod_name]
|
||||
target_label: pod
|
||||
|
||||
prometheusOperator:
|
||||
enabled: true
|
||||
|
||||
alertmanager:
|
||||
enabled: false
|
||||
|
||||
grafana:
|
||||
enabled: true
|
||||
|
||||
nodeExporter:
|
||||
enabled: false
|
||||
|
||||
kube-state-metrics:
|
||||
enabled: true
|
||||
metricLabelsAllowlist:
|
||||
- namespaces=[{{ .Release.Namespace }}],deployments=[app]
|
||||
|
||||
# -- Passthrough values for [Prometheus Adapter Helm chart](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-adapter).
|
||||
# Prometheus, and its adapter here, should be configured when scaling.auto is enabled.
|
||||
# You may choose to use the installation/configuration bundled in this Helm chart,
|
||||
# or you may configure an existing Prometheus installation in your cluster to expose
|
||||
# the needed values.
|
||||
# See source Helm chart for explanation of available values. Default values provided in this chart are used
|
||||
# to provide pod autoscaling for Deepgram pods.
|
||||
# @default -- ``
|
||||
prometheus-adapter:
|
||||
# -- Normally, this chart will be installed if `scaling.auto.enabled` is true. However, if you wish
|
||||
# to manage the Prometheus adapter in your cluster on your own and not as part of the Deepgram Helm chart,
|
||||
# you can force it to not be installed by setting this to `false`.
|
||||
includeDependency:
|
||||
prometheus:
|
||||
url: http://dg-prometheus-stack-prometheus.{{ .Release.Namespace }}.svc
|
||||
rules:
|
||||
default: false
|
||||
external:
|
||||
- name:
|
||||
as: "engine_active_requests_stt_streaming"
|
||||
seriesQuery: 'engine_active_requests{kind="stream"}'
|
||||
metricsQuery: 'avg(engine_active_requests{kind="stream"})'
|
||||
resources:
|
||||
overrides:
|
||||
namespace: { resource: "namespace" }
|
||||
pod: { resource: "pod" }
|
||||
service: { resource: "service" }
|
||||
- name:
|
||||
as: "engine_active_requests_stt_batch"
|
||||
seriesQuery: 'engine_active_requests{kind="batch"}'
|
||||
metricsQuery: 'avg(engine_active_requests{kind="batch"})'
|
||||
resources:
|
||||
overrides:
|
||||
namespace: { resource: "namespace" }
|
||||
pod: { resource: "pod" }
|
||||
service: { resource: "service" }
|
||||
- name:
|
||||
as: "engine_active_requests_tts_batch"
|
||||
seriesQuery: 'engine_active_requests{kind="tts"}'
|
||||
metricsQuery: 'avg(engine_active_requests{kind="tts"})'
|
||||
resources:
|
||||
overrides:
|
||||
namespace: { resource: "namespace" }
|
||||
pod: { resource: "pod" }
|
||||
service: { resource: "service" }
|
||||
- name:
|
||||
as: "engine_estimated_stream_capacity"
|
||||
seriesQuery: 'engine_active_requests{kind="stream"}'
|
||||
metricsQuery: 'avg_over_time((sum(engine_active_requests{kind="stream"}) / sum(engine_estimated_stream_capacity) * 100)[1m:1m])'
|
||||
resources:
|
||||
overrides:
|
||||
namespace: { resource: "namespace" }
|
||||
pod: { resource: "pod" }
|
||||
service: { resource: "service" }
|
||||
- name:
|
||||
as: "engine_requests_active_to_max_ratio"
|
||||
seriesQuery: "engine_max_active_requests"
|
||||
metricsQuery: "avg_over_time((sum(engine_active_requests) / sum(engine_max_active_requests) * 100)[1m:1m])"
|
||||
resources:
|
||||
overrides:
|
||||
namespace: { resource: "namespace" }
|
||||
pod: { resource: "pod" }
|
||||
service: { resource: "service" }
|
||||
- name:
|
||||
as: "engine_to_api_pod_ratio"
|
||||
seriesQuery: 'kube_deployment_labels{label_app="deepgram-engine"}'
|
||||
metricsQuery: '(sum(kube_deployment_status_replicas and on(deployment) kube_deployment_labels{label_app="deepgram-engine"})) / (sum(kube_deployment_status_replicas and on(deployment) kube_deployment_labels{label_app="deepgram-api"}))'
|
||||
resources:
|
||||
overrides:
|
||||
namespace: { resource: "namespace" }
|
||||
pod: { resource: "pod" }
|
||||
Reference in New Issue
Block a user