Back to Opik

opik

deployment/helm_chart/opik/README.md

2.0.58-555837.3 KB
Original Source

opik

A Helm chart for Comet Opik

Run Comet Opik with Helm

Installation Prerequisites for local installation

Run k8s cluster locally

Start your minikube cluster https://minikube.sigs.k8s.io/docs/start/

bash
minikube start

Installing the Chart

Using helm chart from Helm repo

Add Opik Helm repo

bash
helm repo add opik https://comet-ml.github.io/opik/
helm repo update

Set VERSION you want to install and run helm install

bash
VERSION=0.1.0
helm upgrade --install opik -n opik --create-namespace opik/opik \
    --set component.backend.image.tag=$VERSION --set component.frontend.image.tag=$VERSION

Using helm chart from git repository

bash
git clone [email protected]:comet-ml/opik.git

Go to the chart folder, set VERSION you want to install and run helm install

bash
cd deployment/helm_chart/opik
helm repo add bitnami https://charts.bitnami.com/bitnami
helm dependency build
VERSION=0.1.0
helm upgrade --install opik -n opik --create-namespace -f values.yaml \
    --set component.backend.image.tag=$VERSION --set component.frontend.image.tag=$VERSION

Open application

You can port-forward any service you need to your local machine. For Opik Frontend and Backend api run

console
$ kubectl port-forward -n opik svc/opik-frontend 5173

Open http://localhost:5173 in your browser

Call opik api on http://localhost:5173/api

Helm Chart Details

Requirements

RepositoryNameVersion
https://comet-ml.github.io/comet-mysql-helm/mysql1.0.7
https://docs.altinity.com/clickhouse-operator/altinity-clickhouse-operator0.25.6
oci://registry-1.docker.io/cloudpiratesminio0.10.0
oci://registry-1.docker.io/cloudpiratesredis0.23.0
oci://registry-1.docker.io/cloudpirateszookeeper0.6.0

Values

KeyTypeDefaultDescription
affinityobject{}
altinity-clickhouse-operator.enabledbooltrue
altinity-clickhouse-operator.metrics.enabledboolfalse
altinity-clickhouse-operator.serviceMonitor.enabledboolfalse
altinity-clickhouse-operator.serviceMonitor.intervalstring""
basicAuthboolfalse
caCerts.additionalCACertslistnilAdditional Certificate Authority Certificates to trust. Each list entry has two keys: name and content. name should be a unique identifier. content Should be PEM formated Public Certificate contents.
caCerts.additionalCACertsInSecretboolfalseCertificates are Public Keys + Metadata, but some organizations may still prefer storing these in Secrets.
caCerts.existingAdditionalCACertsRefstringnilIf there is an existing ConfigMap containing the additional CA Certificates you can provide its name here instead of creatinga a new one. If additionalCACertsInSecret is true we will look for this name in Secrets.
caCerts.overwriteJavaCATrustStore.enabledboolfalseIf enabled we will not inject additional CA Certificates to the Java TrustStore, but instead will mount a given volume containing a Java Trust Store to replace the default one in the containers.
caCerts.overwriteJavaCATrustStore.subPathstring"cacerts"The sub-path of the valid Java Trust Store to mount from the volume.
caCerts.overwriteJavaCATrustStore.volumeobject{}A Kubernetes Volume definition which will contain a valid Java Trust Store. See https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/volume/ for valid parameters.
chartMigration.enabledbooltrue
chartMigration.imagestring"alpine/kubectl:1.35.0"
chartMigration.nodeSelectorobject{}
chartMigration.serviceAccountNamestring""
chartMigration.tolerationslist[]
clickhouse.adminUser.passwordstring"opik"
clickhouse.adminUser.useSecret.enabledboolfalse
clickhouse.adminUser.usernamestring"opik"
clickhouse.backup.command[0]string"/bin/bash"
clickhouse.backup.command[1]string"-cx"
clickhouse.backup.command[2]string"export backupname=backup$(date +'%Y%m%d%H%M')\necho \"BACKUP ALL EXCEPT DATABASE system TO S3('${CLICKHOUSE_BACKUP_BUCKET}/${backupname}/', '$ACCESS_KEY', '$SECRET_KEY');\" > /tmp/backQuery.sql\nclickhouse-client -h clickhouse-opik-clickhouse --send_timeout 600000 --receive_timeout 600000 --port 9000 --queries-file=/tmp/backQuery.sql"
clickhouse.backup.enabledboolfalse
clickhouse.backup.extraEnvobject{}
clickhouse.backup.schedulestring"0 0 * * *"
clickhouse.backup.serviceAccount.annotationsobject{}
clickhouse.backup.serviceAccount.createboolfalse
clickhouse.backup.serviceAccount.namestring""
clickhouse.backup.successfulJobsHistoryLimitint1
clickhouse.backupServer.enabledboolfalse
clickhouse.backupServer.env.ALLOW_EMPTY_BACKUPSbooltrue
clickhouse.backupServer.env.API_CREATE_INTEGRATION_TABLESbooltrue
clickhouse.backupServer.env.API_LISTENstring"0.0.0.0:7171"
clickhouse.backupServer.env.LOG_LEVELstring"info"
clickhouse.backupServer.extraVolumeMountslist[]Additional volume mounts for the clickhouse-backup container. The mount name can reference a CHI volumeClaimTemplate defined in clickhouse.extraVolumeClaimTemplates (matched by name), or a volume defined in extraVolumes above.
clickhouse.backupServer.extraVolumeslist[]Additional volumes to add to the ClickHouse pod when the backup server is enabled. Use this for non-PVC volume types (emptyDir, configMap, secret, hostPath, etc.). For persistent storage, prefer using clickhouse.extraVolumeClaimTemplates to define a CHI-managed PVC and reference its name directly in extraVolumeMounts below (the clickhouse operator matches volumeMount names to volumeClaimTemplate names automatically). Note that clickhouse-backup writes local backups to /var/lib/clickhouse/backup/ by default (on the same filesystem as ClickHouse data to preserve hard links). Mounting a separate volume at that path will cause backups to use full copies instead of hard links.
clickhouse.backupServer.imagestring"altinity/clickhouse-backup:2.6.39"
clickhouse.backupServer.monitoring.additionalLabelsobject{}
clickhouse.backupServer.monitoring.annotationsobject{}
clickhouse.backupServer.monitoring.enabledboolfalse
clickhouse.backupServer.monitoring.service.ports[0].namestring"ch-backup-rest"
clickhouse.backupServer.monitoring.service.ports[0].portint80
clickhouse.backupServer.monitoring.service.ports[0].targetPortint7171
clickhouse.backupServer.monitoring.service.typestring"ClusterIP"
clickhouse.backupServer.monitoring.serviceMonitor.additionalLabelsobject{}
clickhouse.backupServer.monitoring.serviceMonitor.annotationsobject{}
clickhouse.backupServer.monitoring.serviceMonitor.enabledboolfalse
clickhouse.backupServer.monitoring.serviceMonitor.honorLabelsboolfalse
clickhouse.backupServer.monitoring.serviceMonitor.intervalstring"60s"
clickhouse.backupServer.monitoring.serviceMonitor.metricRelabelingslist[]
clickhouse.backupServer.monitoring.serviceMonitor.namespacestring""
clickhouse.backupServer.monitoring.serviceMonitor.podTargetLabelslist[]
clickhouse.backupServer.monitoring.serviceMonitor.portNamestring""
clickhouse.backupServer.monitoring.serviceMonitor.relabelingslist[]
clickhouse.backupServer.monitoring.serviceMonitor.scrapeTimeoutstring"30s"
clickhouse.backupServer.portint7171
clickhouse.configuration.files."conf.d/memory.xml"string"<yandex>\n <max_server_memory_usage_to_ram_ratio>0.85</max_server_memory_usage_to_ram_ratio>\n</yandex>\n"
clickhouse.configuration.files."conf.d/profiles.xml"string"<clickhouse>\n <profiles>\n <default>\n <max_bytes_ratio_before_external_sort>0.2</max_bytes_ratio_before_external_sort>\n <max_bytes_ratio_before_external_group_by>0.2</max_bytes_ratio_before_external_group_by>\n </default>\n </profiles>\n</clickhouse>\n"
clickhouse.configuration.files."conf.d/system_tables.xml"string"<clickhouse>\n <opentelemetry_span_log remove=\"1\"/>\n <asynchronous_metric_log remove=\"1\"/>\n <processors_profile_log remove=\"1\"/>\n <text_log remove=\"1\"/>\n <trace_log remove=\"1\"/>\n <blob_storage_log remove=\"1\"/>\n <error_log>\n <engine>\n ENGINE MergeTree\n PARTITION BY toYYYYMM(event_date)\n ORDER BY (event_date, event_time)\n TTL event_date + toIntervalDay(30)\n SETTINGS index_granularity = 8192\n </engine>\n <database>system</database>\n <table>error_log</table>\n </error_log>\n <latency_log>\n <engine>\n ENGINE = MergeTree\n PARTITION BY toYYYYMM(event_date)\n ORDER BY (event_date, event_time)\n TTL event_date + toIntervalDay(30)\n SETTINGS index_granularity = 8192\n </engine>\n <database>system</database>\n <table>latency_log</table>\n </latency_log>\n <metric_log>\n <engine>\n ENGINE = MergeTree\n PARTITION BY toYYYYMM(event_date)\n ORDER BY (event_date, event_time)\n TTL event_date + toIntervalDay(30)\n SETTINGS index_granularity = 8192\n </engine>\n <database>system</database>\n <table>metric_log</table>\n </metric_log>\n <query_metric_log>\n <engine>\n ENGINE = MergeTree\n PARTITION BY toYYYYMM(event_date)\n ORDER BY (event_date, event_time)\n TTL event_date + toIntervalDay(30)\n SETTINGS index_granularity = 8192\n </engine>\n <database>system</database>\n <table>query_metric_log</table>\n </query_metric_log>\n</clickhouse>\n"
clickhouse.enabledbooltrue
clickhouse.extraPodTemplateslist[]
clickhouse.extraServiceTemplateslist[]
clickhouse.extraVolumeClaimTemplateslist[]
clickhouse.extraVolumeMountslist[]Additional volume mounts for the ClickHouse server container. Use this to mount volumes that ClickHouse server needs direct access to, such as a backup disk for embedded backups (BACKUP TO Disk(...)). The mount name can reference a CHI volumeClaimTemplate defined in clickhouse.extraVolumeClaimTemplates (matched by name automatically by the ClickHouse operator), or a volume defined in clickhouse.extraVolumes.
clickhouse.extraVolumeslist[]Additional pod-level volumes for the ClickHouse pod, independent of the backup server sidecar. Use this for non-PVC volume types (configMap, secret, emptyDir, hostPath, etc.) that should be available to the ClickHouse server container. For persistent storage, prefer defining a CHI-managed PVC via clickhouse.extraVolumeClaimTemplates and referencing it by name in extraVolumeMounts above.
clickhouse.imagestring"altinity/clickhouse-server:25.3.8.10041.altinitystable"
clickhouse.livenessProbe.failureThresholdint10
clickhouse.livenessProbe.httpGet.pathstring"/ping"
clickhouse.livenessProbe.httpGet.portint8123
clickhouse.livenessProbe.initialDelaySecondsint60
clickhouse.livenessProbe.periodSecondsint30
clickhouse.livenessProbe.timeoutSecondsint5
clickhouse.logsLevelstring"information"
clickhouse.monitoring.additionalLabelsobject{}
clickhouse.monitoring.annotationsobject{}
clickhouse.monitoring.enabledboolfalse
clickhouse.monitoring.passwordstring"opikmon"
clickhouse.monitoring.portint9363
clickhouse.monitoring.service.ports[0].namestring"prometheus-metrics"
clickhouse.monitoring.service.ports[0].portint80
clickhouse.monitoring.service.ports[0].targetPortint9363
clickhouse.monitoring.service.typestring"ClusterIP"
clickhouse.monitoring.serviceMonitor.additionalLabelsobject{}
clickhouse.monitoring.serviceMonitor.annotationsobject{}
clickhouse.monitoring.serviceMonitor.enabledboolfalse
clickhouse.monitoring.serviceMonitor.honorLabelsboolfalse
clickhouse.monitoring.serviceMonitor.intervalstring"60s"
clickhouse.monitoring.serviceMonitor.metricRelabelingslist[]
clickhouse.monitoring.serviceMonitor.namespacestring""
clickhouse.monitoring.serviceMonitor.podTargetLabelslist[]
clickhouse.monitoring.serviceMonitor.portNamestring""
clickhouse.monitoring.serviceMonitor.relabelingslist[]
clickhouse.monitoring.serviceMonitor.scrapeTimeoutstring"30s"
clickhouse.monitoring.useSecret.enabledboolfalse
clickhouse.monitoring.usernamestring"opikmon"
clickhouse.namespaceDomainPatternstring""
clickhouse.readinessProbe.failureThresholdint30
clickhouse.readinessProbe.httpGet.pathstring"/ping"
clickhouse.readinessProbe.httpGet.portint8123
clickhouse.readinessProbe.initialDelaySecondsint30
clickhouse.readinessProbe.periodSecondsint10
clickhouse.readinessProbe.timeoutSecondsint5
clickhouse.replicasCountint1
clickhouse.service.serviceTemplatestring"clickhouse-cluster-svc-template"
clickhouse.serviceAccount.annotationsobject{}
clickhouse.serviceAccount.createboolfalse
clickhouse.serviceAccount.namestring""
clickhouse.shardsCountint1
clickhouse.storagestring"50Gi"
clickhouse.templates.podTemplatestring"clickhouse-cluster-pod-template"
clickhouse.templates.replicaServiceTemplatestring"clickhouse-replica-svc-template"
clickhouse.templates.serviceTemplatestring"clickhouse-cluster-svc-template"
clickhouse.templates.volumeClaimTemplatestring"storage-vc-template"
clickhouse.zookeeper.hoststring"opik-zookeeper"
component.backend.autoscaling.behavior.scaleDown.policies[0].periodSecondsint60
component.backend.autoscaling.behavior.scaleDown.policies[0].typestring"Percent"
component.backend.autoscaling.behavior.scaleDown.policies[0].valueint50
component.backend.autoscaling.behavior.scaleDown.stabilizationWindowSecondsint300
component.backend.autoscaling.behavior.scaleUp.policies[0].periodSecondsint60
component.backend.autoscaling.behavior.scaleUp.policies[0].typestring"Pods"
component.backend.autoscaling.behavior.scaleUp.policies[0].valueint2
component.backend.autoscaling.behavior.scaleUp.selectPolicystring"Max"
component.backend.autoscaling.behavior.scaleUp.stabilizationWindowSecondsint60
component.backend.autoscaling.enabledboolfalse
component.backend.backendConfigMap.enabledbooltrue
component.backend.enabledbooltrue
component.backend.env.ANALYTICS_DB_DATABASE_NAMEstring"opik"
component.backend.env.ANALYTICS_DB_HOSTstring"clickhouse-opik-clickhouse"
component.backend.env.ANALYTICS_DB_MIGRATIONS_PASSstring"opik"
component.backend.env.ANALYTICS_DB_MIGRATIONS_URLstring"jdbc:clickhouse://clickhouse-opik-clickhouse:8123"
component.backend.env.ANALYTICS_DB_MIGRATIONS_USERstring"opik"
component.backend.env.ANALYTICS_DB_PASSstring"opik"
component.backend.env.ANALYTICS_DB_PORTstring"8123"
component.backend.env.ANALYTICS_DB_PROTOCOLstring"HTTP"
component.backend.env.ANALYTICS_DB_USERNAMEstring"opik"
component.backend.env.JAVA_OPTSstring"-Dliquibase.propertySubstitutionEnabled=true -XX:+UseG1GC -XX:MaxRAMPercentage=80.0 -XX:MinRAMPercentage=75"
component.backend.env.LLM_MODEL_REGISTRY_DEFAULT_RESOURCEstring"llm-models-default.yaml"
component.backend.env.LLM_MODEL_REGISTRY_LOCAL_OVERRIDE_PATHstring""
component.backend.env.LLM_MODEL_REGISTRY_REFRESH_INTERVAL_SECONDSstring"300"
component.backend.env.LLM_MODEL_REGISTRY_REMOTE_ENABLEDstring"false"
component.backend.env.LLM_MODEL_REGISTRY_REMOTE_URLstring""
component.backend.env.OPIK_OTEL_SDK_ENABLEDboolfalse
component.backend.env.OTEL_EXPERIMENTAL_EXPORTER_OTLP_RETRY_ENABLEDbooltrue
component.backend.env.OTEL_EXPERIMENTAL_RESOURCE_DISABLED_KEYSstring"process.command_args"
component.backend.env.OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATIONstring"BASE2_EXPONENTIAL_BUCKET_HISTOGRAM"
component.backend.env.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCEstring"delta"
component.backend.env.OTEL_PROPAGATORSstring"tracecontext,baggage,b3"
component.backend.env.OTEL_VERSIONstring"2.12.0"
component.backend.env.PYTHON_EVALUATOR_URLstring"http://opik-python-backend:8000"
component.backend.env.REDIS_URLstring"redis://:wFSuJX9nDBdCa25sKZG7bh@opik-redis-master:6379/"
component.backend.env.STATE_DB_DATABASE_NAMEstring"opik"
component.backend.env.STATE_DB_PASSstring"opik"
component.backend.env.STATE_DB_PROTOCOLstring"jdbc:mysql://"
component.backend.env.STATE_DB_URLstring"opik-mysql:3306/opik?rewriteBatchedStatements=true"
component.backend.env.STATE_DB_USERstring"opik"
component.backend.env.UI_DEFAULT_PAGE_SIZEstring"100"
component.backend.envFrom[0].configMapRef.namestring"opik-backend"
component.backend.image.pullPolicystring"IfNotPresent"
component.backend.image.repositorystring"opik-backend"
component.backend.ingress.annotationsobject{}
component.backend.ingress.enabledboolfalse
component.backend.ingress.hostslist[]
component.backend.ingress.ingressClassNamestring""
component.backend.ingress.tls.enabledboolfalse
component.backend.ingress.tls.hostslist[]
component.backend.ingress.tls.secretNamestring""
component.backend.livenessProbe.httpGet.httpHeaders[0].namestring"Accept"
component.backend.livenessProbe.httpGet.httpHeaders[0].valuestring"application/json"
component.backend.livenessProbe.httpGet.pathstring"/health-check?name=all&type=alive"
component.backend.livenessProbe.httpGet.portint8080
component.backend.metrics.enabledboolfalse
component.backend.podDisruptionBudget.enabledboolfalse
component.backend.readinessProbe.httpGet.httpHeaders[0].namestring"Accept"
component.backend.readinessProbe.httpGet.httpHeaders[0].valuestring"application/json"
component.backend.readinessProbe.httpGet.pathstring"/health-check?name=all&type=ready"
component.backend.readinessProbe.httpGet.portint8080
component.backend.readinessProbe.initialDelaySecondsint20
component.backend.replicaCountint1
component.backend.resources.requests.ephemeral-storagestring"10Gi"
component.backend.run_migrationbooltrue
component.backend.run_migration_resourcesobject{}
component.backend.service.ports[0].namestring"http"
component.backend.service.ports[0].portint8080
component.backend.service.ports[0].protocolstring"TCP"
component.backend.service.ports[0].targetPortint8080
component.backend.service.ports[1].namestring"swagger"
component.backend.service.ports[1].portint3003
component.backend.service.ports[1].protocolstring"TCP"
component.backend.service.ports[1].targetPortint3003
component.backend.service.typestring"ClusterIP"
component.backend.serviceAccount.createbooltrue
component.backend.serviceAccount.namestring"opik-backend"
component.backend.waitForClickhouse.clickhouse.hoststring"clickhouse-opik-clickhouse"
component.backend.waitForClickhouse.clickhouse.portint8123
component.backend.waitForClickhouse.clickhouse.protocolstring"http"
component.backend.waitForClickhouse.image.registrystring"docker.io"
component.backend.waitForClickhouse.image.repositorystring"curlimages/curl"
component.backend.waitForClickhouse.image.tagstring"8.12.1"
component.backend.waitForClickhouse.resourcesobject{}
component.backend.waitForMysql.enabledboolfalse
component.backend.waitForMysql.image.registrystring"docker.io"
component.backend.waitForMysql.image.repositorystring"busybox"
component.backend.waitForMysql.image.tagfloat1.36
component.backend.waitForMysql.mysql.hoststring"opik-mysql"
component.backend.waitForMysql.mysql.portint3306
component.backend.waitForMysql.resourcesobject{}
component.frontend.autoscaling.behavior.scaleDown.policies[0].periodSecondsint60
component.frontend.autoscaling.behavior.scaleDown.policies[0].typestring"Percent"
component.frontend.autoscaling.behavior.scaleDown.policies[0].valueint50
component.frontend.autoscaling.behavior.scaleDown.stabilizationWindowSecondsint300
component.frontend.autoscaling.behavior.scaleUp.policies[0].periodSecondsint60
component.frontend.autoscaling.behavior.scaleUp.policies[0].typestring"Pods"
component.frontend.autoscaling.behavior.scaleUp.policies[0].valueint2
component.frontend.autoscaling.behavior.scaleUp.selectPolicystring"Max"
component.frontend.autoscaling.behavior.scaleUp.stabilizationWindowSecondsint60
component.frontend.autoscaling.enabledboolfalse
component.frontend.awsResolverboolfalse
component.frontend.backendConfigMap.enabledboolfalse
component.frontend.cacheControl[0].patternstring`"~assets/.*\.(jscss)$"`
component.frontend.cacheControl[0].valuestring"public, max-age=604800, immutable"
component.frontend.cacheControl[1].patternstring`"~(images/.*assets/.*)\.(jpg
component.frontend.cacheControl[1].valuestring"public, max-age=2592000"
component.frontend.cacheControl[2].patternstring`"~assets/.*\.(woffwoff2
component.frontend.cacheControl[2].valuestring"public, max-age=2592000"
component.frontend.cacheControl[3].patternstring"~assets/.*\\.json$"
component.frontend.cacheControl[3].valuestring"public, max-age=86400"
component.frontend.cacheControl[4].patternstring"default"
component.frontend.cacheControl[4].valuestring"no-cache, must-revalidate"
component.frontend.contentSecurityPolicy.base-uri[0]string"'self'"
component.frontend.contentSecurityPolicy.child-src[0]string"'self'"
component.frontend.contentSecurityPolicy.child-src[1]string"https://cdn.comet.com"
component.frontend.contentSecurityPolicy.connect-src[0]string"'self'"
component.frontend.contentSecurityPolicy.connect-src[1]string"ws:"
component.frontend.contentSecurityPolicy.connect-src[2]string"wss:"
component.frontend.contentSecurityPolicy.connect-src[3]string"https:"
component.frontend.contentSecurityPolicy.default-src[0]string"'self'"
component.frontend.contentSecurityPolicy.font-src[0]string"'self'"
component.frontend.contentSecurityPolicy.font-src[1]string"data:"
component.frontend.contentSecurityPolicy.font-src[2]string"https://fonts.gstatic.com"
component.frontend.contentSecurityPolicy.form-action[0]string"'self'"
component.frontend.contentSecurityPolicy.frame-ancestors[0]string"'none'"
component.frontend.contentSecurityPolicy.img-src[0]string"'self'"
component.frontend.contentSecurityPolicy.img-src[1]string"data:"
component.frontend.contentSecurityPolicy.img-src[2]string"blob:"
component.frontend.contentSecurityPolicy.img-src[3]string"https:"
component.frontend.contentSecurityPolicy.img-src[4]string"http:"
component.frontend.contentSecurityPolicy.manifest-src[0]string"'self'"
component.frontend.contentSecurityPolicy.media-src[0]string"'self'"
component.frontend.contentSecurityPolicy.media-src[1]string"data:"
component.frontend.contentSecurityPolicy.media-src[2]string"blob:"
component.frontend.contentSecurityPolicy.media-src[3]string"https:"
component.frontend.contentSecurityPolicy.media-src[4]string"http:"
component.frontend.contentSecurityPolicy.object-src[0]string"'none'"
component.frontend.contentSecurityPolicy.script-src[0]string"'self'"
component.frontend.contentSecurityPolicy.script-src[1]string"'unsafe-inline'"
component.frontend.contentSecurityPolicy.script-src[2]string"'unsafe-eval'"
component.frontend.contentSecurityPolicy.style-src[0]string"'self'"
component.frontend.contentSecurityPolicy.style-src[1]string"'unsafe-inline'"
component.frontend.contentSecurityPolicy.style-src[2]string"https://fonts.googleapis.com"
component.frontend.contentSecurityPolicy.worker-src[0]string"'self'"
component.frontend.contentSecurityPolicy.worker-src[1]string"blob:"
component.frontend.enabledbooltrue
component.frontend.extraServerHeaders.X-Content-Type-Optionsstring"nosniff"
component.frontend.extraServerHeaders.X-Frame-Optionsstring"DENY"
component.frontend.extraServerHeaders.X-XSS-Protectionstring"0"
component.frontend.hstsEnabledboolfalse
component.frontend.image.pullPolicystring"IfNotPresent"
component.frontend.image.repositorystring"opik-frontend"
component.frontend.ingress.annotationsobject{}
component.frontend.ingress.enabledboolfalse
component.frontend.ingress.hostslist[]
component.frontend.ingress.ingressClassNamestring""
component.frontend.ingress.tls.enabledboolfalse
component.frontend.ingress.tls.hostslist[]
component.frontend.ingress.tls.secretNamestring""
component.frontend.mapslist[]
component.frontend.metrics.enabledboolfalse
component.frontend.podDisruptionBudget.enabledboolfalse
component.frontend.replicaCountint1
component.frontend.resources.requests.ephemeral-storagestring"10Gi"
component.frontend.service.ports[0].namestring"http"
component.frontend.service.ports[0].portint5173
component.frontend.service.ports[0].protocolstring"TCP"
component.frontend.service.ports[0].targetPortint5173
component.frontend.service.typestring"ClusterIP"
component.frontend.serviceAccount.createbooltrue
component.frontend.serviceAccount.namestring"opik-frontend"
component.frontend.throttlingobject{}
component.frontend.upstreamConfigobject{}
component.python-backend.autoscaling.behavior.scaleDown.policies[0].periodSecondsint60
component.python-backend.autoscaling.behavior.scaleDown.policies[0].typestring"Percent"
component.python-backend.autoscaling.behavior.scaleDown.policies[0].valueint50
component.python-backend.autoscaling.behavior.scaleDown.stabilizationWindowSecondsint300
component.python-backend.autoscaling.behavior.scaleUp.policies[0].periodSecondsint60
component.python-backend.autoscaling.behavior.scaleUp.policies[0].typestring"Pods"
component.python-backend.autoscaling.behavior.scaleUp.policies[0].valueint2
component.python-backend.autoscaling.behavior.scaleUp.selectPolicystring"Max"
component.python-backend.autoscaling.behavior.scaleUp.stabilizationWindowSecondsint60
component.python-backend.autoscaling.enabledboolfalse
component.python-backend.backendConfigMap.enabledbooltrue
component.python-backend.enabledbooltrue
component.python-backend.env.OPIK_REVERSE_PROXY_URLstring"http://opik-frontend:5173/api"
component.python-backend.env.OPIK_URL_OVERRIDEstring"http://opik-backend:8080"
component.python-backend.env.OTEL_EXPERIMENTAL_EXPORTER_OTLP_RETRY_ENABLEDbooltrue
component.python-backend.env.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCEstring"cumulative"
component.python-backend.env.OTEL_METRIC_EXPORT_INTERVALstring"60000"
component.python-backend.env.OTEL_PROPAGATORSstring"tracecontext,baggage"
component.python-backend.env.OTEL_SERVICE_NAMEstring"opik-python-backend"
component.python-backend.env.PYTHON_CODE_EXECUTOR_ALLOW_NETWORKstring"false"
component.python-backend.env.PYTHON_CODE_EXECUTOR_CPU_SHARESstring"512"
component.python-backend.env.PYTHON_CODE_EXECUTOR_EXEC_TIMEOUT_IN_SECSstring"3"
component.python-backend.env.PYTHON_CODE_EXECUTOR_IMAGE_NAMEstring"opik-sandbox-executor-python"
component.python-backend.env.PYTHON_CODE_EXECUTOR_IMAGE_REGISTRYstring"ghcr.io/comet-ml/opik"
component.python-backend.env.PYTHON_CODE_EXECUTOR_MEM_LIMITstring"256m"
component.python-backend.env.PYTHON_CODE_EXECUTOR_METRICS_INTERVAL_IN_SECONDSstring"60"
component.python-backend.env.PYTHON_CODE_EXECUTOR_PARALLEL_NUMstring"5"
component.python-backend.env.PYTHON_CODE_EXECUTOR_STRATEGYstring"process"
component.python-backend.env.REDIS_URLstring"redis://:wFSuJX9nDBdCa25sKZG7bh@opik-redis-master:6379/"
component.python-backend.envFrom[0].configMapRef.namestring"opik-python-backend"
component.python-backend.image.pullPolicystring"IfNotPresent"
component.python-backend.image.repositorystring"opik-python-backend"
component.python-backend.ingress.annotationsobject{}
component.python-backend.ingress.enabledboolfalse
component.python-backend.ingress.hostslist[]
component.python-backend.ingress.ingressClassNamestring""
component.python-backend.ingress.tls.enabledboolfalse
component.python-backend.ingress.tls.hostslist[]
component.python-backend.ingress.tls.secretNamestring""
component.python-backend.metrics.enabledboolfalse
component.python-backend.networkPolicy.additionalRuleslist[]
component.python-backend.networkPolicy.annotationsobject{}
component.python-backend.networkPolicy.enabledboolfalse
component.python-backend.podDisruptionBudget.enabledboolfalse
component.python-backend.replicaCountint1
component.python-backend.secretRefslist[]
component.python-backend.securityContext.privilegedbooltrue
component.python-backend.service.ports[0].namestring"http"
component.python-backend.service.ports[0].portint8000
component.python-backend.service.ports[0].protocolstring"TCP"
component.python-backend.service.ports[0].targetPortint8000
component.python-backend.service.typestring"ClusterIP"
component.python-backend.serviceAccount.createbooltrue
component.python-backend.serviceAccount.namestring"opik-python-backend"
demoDataJob.enabledbooltrue
fullnameOverridestring""
global.argocdboolfalse
global.security.allowInsecureImagesbooltrue
global.useHelmHooksbooltrue
localFEboolfalse
localFEAddressstring"host.minikube.internal:5174"
minio.auth.rootPasswordstring"LESlrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
minio.auth.rootUserstring"THAAIOSFODNN7EXAMPLE"
minio.config.browserEnabledboolfalse
minio.defaultBucketsstring"public:download"
minio.enabledbooltrue
minio.fullnameOverridestring"opik-minio"
minio.image.imagePullPolicystring"IfNotPresent"
minio.image.registrystring"docker.io"
minio.image.repositorystring"cloudpirates/image-minio"
minio.image.tagstring"RELEASE.2025-10-15T17-29-55Z-hardened"
minio.persistence.enabledbooltrue
minio.persistence.sizestring"50Gi"
minio.replicaCountint1
mysql.auth.rootPasswordstring"opik"
mysql.enabledbooltrue
mysql.fullnameOverridestring"opik-mysql"
mysql.initdbScripts."createdb.sql"string"CREATE DATABASE IF NOT EXISTS opik DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;\nCREATE USER IF NOT EXISTS 'opik'@'%' IDENTIFIED BY 'opik';\nGRANT ALL ON opik.* TO 'opik'@'%';\nFLUSH PRIVILEGES;"
mysql.primary.dataDirstring"/bitnami/mysql/data"
mysql.primary.persistence.enabledbooltrue
mysql.primary.persistence.sizestring"20Gi"
nameOverridestring"opik"
nodeSelectorobject{}
redis.architecturestring"standalone"
redis.auth.enabledbooltrue
redis.auth.passwordstring"wFSuJX9nDBdCa25sKZG7bh"
redis.config.contentstring"# Redis Stack configuration\ndir /data\nmaxmemory 105M\nmaxmemory-policy allkeys-lru\n# Redis Stack modules are automatically loaded by the redis-stack-server image\n"
redis.enabledbooltrue
redis.fullnameOverridestring"opik-redis-master"
redis.image.pullPolicystring"IfNotPresent"
redis.image.registrystring"docker.io"
redis.image.repositorystring"redis/redis-stack-server"
redis.image.tagstring"7.2.0-v10"
redis.metrics.enabledboolfalse
redis.persistence.enabledbooltrue
redis.persistence.sizestring"8Gi"
redis.resources.limits.memorystring"1Gi"
redis.resources.requests.cpustring"15m"
redis.resources.requests.memorystring"105M"
registrystring"ghcr.io/comet-ml/opik"
serviceAccount.annotationsobject{}
serviceAccount.createboolfalse
serviceAccount.namestring""
standalonebooltrue
tolerationslist[]
topologySpreadConstraintslist[]
zookeeper.commonLabels."app.kubernetes.io/name"string"zookeeper-opik"
zookeeper.enabledbooltrue
zookeeper.extraEnvVars[0].namestring"ZK_HEAP_SIZE"
zookeeper.extraEnvVars[0].valuestring"512M"
zookeeper.extraEnvVars[1].namestring"ZOO_DATA_DIR"
zookeeper.extraEnvVars[1].valuestring"/bitnami/zookeeper/data"
zookeeper.fullnameOverridestring"opik-zookeeper"
zookeeper.headless.publishNotReadyAddressesbooltrue
zookeeper.image.imagePullPolicystring"IfNotPresent"
zookeeper.image.registrystring"docker.io"
zookeeper.image.repositorystring"zookeeper"
zookeeper.image.tagstring"3.9.4"
zookeeper.persistence.dataDirstring"/bitnami/zookeeper/data"
zookeeper.persistence.enabledbooltrue
zookeeper.persistence.mountPathstring"/bitnami/zookeeper"
zookeeper.persistence.sizestring"50Gi"
zookeeper.podDisruptionBudget.enabledbooltrue
zookeeper.replicaCountint1
zookeeper.serverIdOffsetint1

Autogenerated from chart metadata using helm-docs v1.14.2