OpenCost and OpenCost UI
| Name | Url | |
|---|---|---|
| jessegoodier | ||
| toscott | ||
| mittal-ishaan | ||
| brito-rafa | rafa@stormforge.io |
To install the chart with the release name opencost:
$ helm install opencost opencost/opencost| Key | Type | Default | Description |
|---|---|---|---|
| annotations | object | {} |
Annotations to add to the all the resources |
| clusterName | string | "cluster.local" |
Override the default name of cluster - Can be found in /etc/kubernetes/admin.conf: clusters -> cluster -> name |
| extraObjects | list | [] |
Array of extra K8s manifests rendered through tpl and owned by the release. |
| extraVolumes | list | [] |
A list of volumes to be added to the pod |
| fullnameOverride | string | "" |
Overwrite all resources name created by the chart |
| imagePullSecrets | list | [] |
List of secret names to use for pulling the images |
| loglevel | string | "info" |
|
| nameOverride | string | "" |
Overwrite the default name of the chart |
| namespaceOverride | string | "" |
Override the deployment namespace |
| networkPolicies.enabled | bool | false |
Specifies whether networkpolicies should be created |
| networkPolicies.extraEgress | list | [] |
Extra egress rule |
| networkPolicies.prometheus | object | {"labels":{"app.kubernetes.io/name":"prometheus"},"namespace":"prometheus-system","port":9090} |
Internal Prometheus settings related to NetworkPolicies |
| networkPolicies.prometheus.labels | object | {"app.kubernetes.io/name":"prometheus"} |
Labels applied to the Prometheus server pod(s) |
| networkPolicies.prometheus.namespace | string | "prometheus-system" |
Namespace where internal Prometheus is installed |
| networkPolicies.prometheus.port | int | 9090 |
Pod port of in-cluster Prometheus |
| opencost.affinity | object | {} |
Affinity settings for pod assignment |
| opencost.carbonCost.enabled | bool | false |
Enable carbon cost exposed in the API |
| opencost.cloudCost.enabled | bool | false |
Enable cloud cost ingestion and querying, dependant on valid integration credentials |
| opencost.cloudCost.monthToDateInterval | int | 6 |
The number of standard runs before a Month-to-Date run occurs |
| opencost.cloudCost.queryWindowDays | int | 7 |
The max number of days that any single query will be made to construct Cloud Costs |
| opencost.cloudCost.refreshRateHours | int | 6 |
Number of hours between each run of the Cloud Cost pipeline |
| opencost.cloudCost.runWindowDays | int | 3 |
Number of days into the past that a Cloud Cost standard run will query for |
| opencost.cloudIntegrationJSON | string | "" |
Raw JSON for cloud-integration.json. Creates a Secret named <fullname>-cloud-integration in the release namespace. Mutually exclusive with opencost.cloudIntegrationSecret. |
| opencost.cloudIntegrationSecret | string | "" |
Existing Secret containing cloud-integration.json for Cloud Costs. See https://www.opencost.io/docs/configuration/#cloud-costs. Create with: kubectl create secret generic <SECRET_NAME> --from-file=cloud-integration.json -n opencost. Mutually exclusive with opencost.cloudIntegrationJSON. |
| opencost.customPricing.configPath | string | "/tmp/custom-config" |
Path for the pricing configuration. |
| opencost.customPricing.configmapName | string | "custom-pricing-model" |
Customize the configmap name used for custom pricing |
| opencost.customPricing.costModel | object | {"CPU":1.25,"GPU":0.95,"RAM":0.5,"description":"Modified pricing configuration.","internetNetworkEgress":0.12,"regionNetworkEgress":0.01,"spotCPU":0.006655,"spotRAM":0.000892,"storage":0.25,"zoneNetworkEgress":0.01} |
More information about these values here: https://www.opencost.io/docs/configuration/on-prem#custom-pricing-using-the-opencost-helm-chart |
| opencost.customPricing.createConfigmap | bool | true |
Configures the pricing model provided in the values file. |
| opencost.customPricing.enabled | bool | false |
Enables custom pricing configuration |
| opencost.customPricing.provider | string | "custom" |
Sets the provider type for the custom pricing file. |
| opencost.exporter.adminToken.enabled | bool | false |
When true, the chart creates the admin-token Secret (if value is set) or mounts existingSecret as ADMIN_TOKEN. When false, ADMIN_TOKEN is not set and no secret is deployed. |
| opencost.exporter.adminToken.existingSecret | string | "" |
Use an existing Secret for the admin token (recommended). Secret must contain the key below. |
| opencost.exporter.adminToken.secretKey | string | "ADMIN_TOKEN" |
Key in the Secret that holds the admin token (used for both value-created and existing secrets). |
| opencost.exporter.adminToken.value | string | "" |
If set, the chart creates a Secret with this value and sets ADMIN_TOKEN from it (not recommended for production; use existingSecret instead). |
| opencost.exporter.apiHttpRoute | object | {"annotations":{},"enabled":false,"hostnames":[],"labels":{},"parentRefs":[{"name":"","namespace":"","sectionName":""}],"rules":[{"backendRefs":[{"name":"","port":9003}],"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]} |
HTTPRoute for OpenCost API (Gateway API) |
| opencost.exporter.apiHttpRoute.annotations | object | {} |
Annotations for HTTPRoute resource |
| opencost.exporter.apiHttpRoute.enabled | bool | false |
Enable HTTPRoute resource |
| opencost.exporter.apiHttpRoute.hostnames | list | [] |
Hostnames for the HTTPRoute |
| opencost.exporter.apiHttpRoute.labels | object | {} |
Labels for HTTPRoute resource |
| opencost.exporter.apiHttpRoute.parentRefs | list | See values.yaml | Gateway API parent references |
| opencost.exporter.apiHttpRoute.rules | list | See values.yaml | HTTPRoute rules. Each rule supports an optional filters list at the rule level and per-backendRef filters for Gateway API filter configuration (e.g. basic auth via ExtensionRef, header modification via RequestHeaderModifier, etc.). |
| opencost.exporter.apiIngress.annotations | object | {} |
Annotations for Ingress resource |
| opencost.exporter.apiIngress.enabled | bool | false |
Ingress for OpenCost API |
| opencost.exporter.apiIngress.hosts | list | See values.yaml | A list of host rules used to configure the Ingress |
| opencost.exporter.apiIngress.ingressClassName | string | "" |
Ingress controller which implements the resource |
| opencost.exporter.apiIngress.servicePort | string | "http" |
Redirect ingress to an extraPort defined on the service such as oauth-proxy |
| opencost.exporter.apiIngress.tls | list | [] |
Ingress TLS configuration |
| opencost.exporter.apiPort | int | 9003 |
|
| opencost.exporter.aws.access_key_id | string | "" |
AWS secret key id |
| opencost.exporter.aws.secret_access_key | string | "" |
AWS secret access key |
| opencost.exporter.cloudProviderApiKey | string | "" |
The GCP Pricing API requires a key. This is supplied just for evaluation. |
| opencost.exporter.collectorDataSource.enabled | bool | false |
|
| opencost.exporter.collectorDataSource.networkPort | int | 3001 |
The port at which network pods are open to egress |
| opencost.exporter.collectorDataSource.retention10m | int | 36 |
The number of 10m intervals the Collector DataSource should maintain |
| opencost.exporter.collectorDataSource.retention1d | int | 15 |
The number of 1d intervals the Collector DataSource should maintain |
| opencost.exporter.collectorDataSource.retention1h | int | 49 |
The number of 1h intervals the Collector DataSource should maintain |
| opencost.exporter.collectorDataSource.scrapeInterval | string | "30s" |
define the interval at which the collector scrapes for data points (10s, 15s, 1m) |
| opencost.exporter.command | list | [] |
Optional command to override the default container command |
| opencost.exporter.csv_path | string | "" |
|
| opencost.exporter.defaultClusterId | string | "default-cluster" |
Default cluster ID to use if cluster_id is not set in Prometheus metrics. |
| opencost.exporter.env | list | [] |
List of additional environment variables to set in the container |
| opencost.exporter.extraArgs | list | [] |
List of extra arguments for the command, e.g.: log-format=json |
| opencost.exporter.extraEnv | object | {} |
Any extra environment variables you would like to pass on to the pod |
| opencost.exporter.extraVolumeMounts | list | [] |
A list of volume mounts to be added to the pod |
| opencost.exporter.image | object | {"fullImageName":null,"pullPolicy":"IfNotPresent","registry":"ghcr.io","repository":"opencost/opencost","tag":"1.121.0@sha256:2b0def286f343891b2cb2f10309d92bd614aab2f886e363cdc817dfd8595e472"} |
Exporter container image configuration |
| opencost.exporter.image.fullImageName | string | nil |
Override the full image name for development purposes |
| opencost.exporter.image.pullPolicy | string | "IfNotPresent" |
Exporter container image pull policy |
| opencost.exporter.image.registry | string | "ghcr.io" |
Exporter container image registry |
| opencost.exporter.image.repository | string | "opencost/opencost" |
Exporter container image name |
| opencost.exporter.image.tag | string | "1.121.0@sha256:2b0def286f343891b2cb2f10309d92bd614aab2f886e363cdc817dfd8595e472" |
Exporter container image tag |
| opencost.exporter.inferenceCostTracking.collectionInterval | string | "2m" |
Background collection interval |
| opencost.exporter.inferenceCostTracking.enabled | bool | false |
Enable inference cost tracking |
| opencost.exporter.inferenceCostTracking.modelLabel | string | "llm-d.ai/model" |
Pod label whose value is the vLLM model name. Must match the model_name label on vLLM Prometheus metrics |
| opencost.exporter.inferenceCostTracking.sharedInfraLabel | string | "llm-d.ai/inference-shared" |
Pod label key identifying shared infra pods (EPP, gateway) |
| opencost.exporter.inferenceCostTracking.sharedInfraLabelValue | string | "true" |
Label value that marks a pod as shared infra |
| opencost.exporter.livenessProbe.enabled | bool | true |
Whether probe is enabled |
| opencost.exporter.livenessProbe.failureThreshold | int | 3 |
Number of failures for probe to be considered failed |
| opencost.exporter.livenessProbe.initialDelaySeconds | int | 10 |
Number of seconds before probe is initiated |
| opencost.exporter.livenessProbe.path | string | "/healthz" |
Probe path |
| opencost.exporter.livenessProbe.periodSeconds | int | 20 |
Probe frequency in seconds |
| opencost.exporter.livenessProbe.timeoutSeconds | int | 1 |
Number of seconds after which the probe times out |
| opencost.exporter.persistence.accessMode | string | "" |
Access mode for persistent volume |
| opencost.exporter.persistence.annotations | object | {} |
Annotations for persistent volume |
| opencost.exporter.persistence.enabled | bool | false |
|
| opencost.exporter.persistence.mountPath | string | "/mnt/export" |
The path that the PV will be mounted to the exporter at |
| opencost.exporter.persistence.size | string | "" |
Size for persistent volume |
| opencost.exporter.persistence.storageClass | string | "" |
Storage class for persistent volume |
| opencost.exporter.prometheusDataSource.queryResolutionSeconds | int | 300 |
|
| opencost.exporter.readinessProbe.enabled | bool | true |
Whether probe is enabled |
| opencost.exporter.readinessProbe.failureThreshold | int | 3 |
Number of failures for probe to be considered failed |
| opencost.exporter.readinessProbe.initialDelaySeconds | int | 10 |
Number of seconds before probe is initiated |
| opencost.exporter.readinessProbe.path | string | "/healthz" |
Probe path |
| opencost.exporter.readinessProbe.periodSeconds | int | 10 |
Probe frequency in seconds |
| opencost.exporter.readinessProbe.successThreshold | int | 1 |
Minimum consecutive successes for the probe to be considered successful after having failed |
| opencost.exporter.readinessProbe.timeoutSeconds | int | 1 |
Number of seconds after which the probe times out |
| opencost.exporter.replicas | int | 1 |
Number of OpenCost replicas to run |
| opencost.exporter.resources.limits | object | {"memory":"1Gi"} |
CPU/Memory resource limits |
| opencost.exporter.resources.requests | object | {"cpu":"10m","memory":"55Mi"} |
CPU/Memory resource requests |
| opencost.exporter.securityContext | object | {} |
The security options the container should be run with |
| opencost.exporter.startupProbe.enabled | bool | true |
Whether probe is enabled |
| opencost.exporter.startupProbe.failureThreshold | int | 30 |
Number of failures for probe to be considered failed |
| opencost.exporter.startupProbe.initialDelaySeconds | int | 10 |
Number of seconds before probe is initiated |
| opencost.exporter.startupProbe.path | string | "/healthz" |
Probe path |
| opencost.exporter.startupProbe.periodSeconds | int | 5 |
Probe frequency in seconds |
| opencost.exporter.startupProbe.timeoutSeconds | int | 1 |
Number of seconds after which the probe times out |
| opencost.extraContainers | list | [] |
extra sidecars to add to the pod. Useful for things like oauth-proxy for the UI |
| opencost.mcp | object | {"enabled":true,"httpRoute":{"annotations":{},"enabled":false,"hostnames":[],"labels":{},"parentRefs":[{"name":"","namespace":"","sectionName":""}],"rules":[{"backendRefs":[{"name":"","port":8081}],"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]},"ingress":{"annotations":{},"enabled":false,"hosts":[{"host":"example.local","paths":[{"path":"/","pathType":"Prefix"}]}],"ingressClassName":"","tls":[]},"port":8081} |
MCP (Model Context Protocol) Server Configuration The MCP server provides AI agents with access to cost allocation and asset data |
| opencost.mcp.enabled | bool | true |
Enable MCP server for AI agent integration (default: true) Set to false to disable MCP server completely |
| opencost.mcp.httpRoute | object | {"annotations":{},"enabled":false,"hostnames":[],"labels":{},"parentRefs":[{"name":"","namespace":"","sectionName":""}],"rules":[{"backendRefs":[{"name":"","port":8081}],"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]} |
HTTPRoute for MCP server (Gateway API) |
| opencost.mcp.httpRoute.annotations | object | {} |
Annotations for HTTPRoute resource |
| opencost.mcp.httpRoute.enabled | bool | false |
Enable HTTPRoute resource |
| opencost.mcp.httpRoute.hostnames | list | [] |
Hostnames for the HTTPRoute |
| opencost.mcp.httpRoute.labels | object | {} |
Labels for HTTPRoute resource |
| opencost.mcp.httpRoute.parentRefs | list | See values.yaml | Gateway API parent references |
| opencost.mcp.httpRoute.rules | list | See values.yaml | HTTPRoute rules. Each rule supports an optional filters list at the rule level and per-backendRef filters for Gateway API filter configuration (e.g. basic auth via ExtensionRef, header modification via RequestHeaderModifier, etc.). |
| opencost.mcp.ingress.annotations | object | {} |
Annotations for Ingress resource |
| opencost.mcp.ingress.enabled | bool | false |
Ingress for MCP server |
| opencost.mcp.ingress.hosts | list | See values.yaml | A list of host rules used to configure the Ingress |
| opencost.mcp.ingress.ingressClassName | string | "" |
Ingress controller which implements the resource |
| opencost.mcp.ingress.tls | list | [] |
Ingress TLS configuration |
| opencost.mcp.port | int | 8081 |
HTTP port for MCP server (default: 8081) Change this if port 8081 conflicts with other services |
| opencost.metrics.config.configmapName | string | "custom-metrics" |
Customize the configmap name used for metrics |
| opencost.metrics.config.disabledMetrics | list | [] |
List of metrics to be disabled |
| opencost.metrics.config.enabled | bool | false |
Enables creating the metrics.json configuration as a ConfigMap |
| opencost.metrics.kubeStateMetrics.emitKsmV1Metrics | bool | nil |
Enable emission of KSM v1 metrics |
| opencost.metrics.kubeStateMetrics.emitKsmV1MetricsOnly | bool | nil |
Enable only emission of KSM v1 metrics that do not exist in KSM 2 by default |
| opencost.metrics.kubeStateMetrics.emitNamespaceAnnotations | bool | nil |
Enable emission of namespace annotations |
| opencost.metrics.kubeStateMetrics.emitPodAnnotations | bool | nil |
Enable emission of pod annotations |
| opencost.metrics.serviceMonitor.additionalLabels | object | {} |
Additional labels to add to the ServiceMonitor |
| opencost.metrics.serviceMonitor.enabled | bool | false |
Create ServiceMonitor resource for scraping metrics using PrometheusOperator |
| opencost.metrics.serviceMonitor.extraEndpoints | list | [] |
extra Endpoints to add to the ServiceMonitor. Useful for scraping sidecars |
| opencost.metrics.serviceMonitor.honorLabels | bool | true |
HonorLabels chooses the metric's labels on collisions with target labels |
| opencost.metrics.serviceMonitor.metricRelabelings | list | [] |
MetricRelabelConfigs to apply to samples before ingestion |
| opencost.metrics.serviceMonitor.namespace | string | "" |
Specify if the ServiceMonitor will be deployed into a different namespace (blank deploys into same namespace as chart) |
| opencost.metrics.serviceMonitor.relabelings | list | [] |
RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields |
| opencost.metrics.serviceMonitor.scheme | string | "http" |
HTTP scheme used for scraping. Defaults to http |
| opencost.metrics.serviceMonitor.scrapeInterval | string | "30s" |
Interval at which metrics should be scraped |
| opencost.metrics.serviceMonitor.scrapeTimeout | string | "10s" |
Timeout after which the scrape is ended |
| opencost.metrics.serviceMonitor.tlsConfig | object | {} |
TLS configuration for scraping metrics |
| opencost.nodeSelector | object | {} |
Node labels for pod assignment |
| opencost.platforms.openshift.createMonitoringClusterRoleBinding | bool | false |
If true, the helm chart will create a ClusterRoleBinding to grant the OpenCost ServiceAccount access to query Prometheus. |
| opencost.platforms.openshift.createMonitoringResourceReaderRoleBinding | bool | false |
If true, create a Role and RoleBinding to allow Prometheus to list and watch OpenCost resources. |
| opencost.platforms.openshift.enablePromAccess | bool | false |
If true, enable internal prom access |
| opencost.platforms.openshift.enableSCC | bool | false |
If true, set Security Context Constraints on serviceaccount for read/write premissions |
| opencost.platforms.openshift.enabled | bool | false |
Enable OpenShift specific configurations |
| opencost.platforms.openshift.monitoringServiceAccountName | string | "prometheus-k8s" |
Name of the Prometheus serviceaccount to bind to the Resource Reader Role Binding. |
| opencost.platforms.openshift.monitoringServiceAccountNamespace | string | "openshift-monitoring" |
Namespace of the Prometheus serviceaccount to bind to the Resource Reader Role Binding. |
| opencost.prometheus.amp.enabled | bool | false |
Use Amazon Managed Service for Prometheus (AMP) |
| opencost.prometheus.amp.workspaceId | string | "" |
Workspace ID for AMP |
| opencost.prometheus.bearer_token | string | "" |
Prometheus Bearer token |
| opencost.prometheus.bearer_token_key | string | "DB_BEARER_TOKEN" |
|
| opencost.prometheus.existingSecretName | string | nil |
Existing secret name that contains credentials for Prometheus |
| opencost.prometheus.external.enabled | bool | false |
Use external Prometheus (eg. Grafana Cloud) |
| opencost.prometheus.external.url | string | "https://prometheus.example.com/prometheus" |
External Prometheus url |
| opencost.prometheus.insecureSkipVerify | bool | false |
Whether to disable SSL certificate verification |
| opencost.prometheus.internal.enabled | bool | true |
Use in-cluster Prometheus |
| opencost.prometheus.internal.namespaceName | string | "prometheus-system" |
Namespace of in-cluster Prometheus |
| opencost.prometheus.internal.path | string | "" |
Path to access the Prometheus API, this is neccesary if the Prometheus server is behind a reverse proxy(mimir) or has a different path. |
| opencost.prometheus.internal.port | int | 80 |
Service port of in-cluster Prometheus |
| opencost.prometheus.internal.scheme | string | "http" |
Scheme to use for in-cluster Prometheus |
| opencost.prometheus.internal.serviceName | string | "prometheus-server" |
Service name of in-cluster Prometheus |
| opencost.prometheus.kubeRBACProxy | bool | false |
If true, opencost will use kube-rbac-proxy to authenticate with in cluster Prometheus for openshift |
| opencost.prometheus.password | string | "" |
Prometheus Basic auth password |
| opencost.prometheus.password_key | string | "DB_BASIC_AUTH_PW" |
Key in the secret that references the password |
| opencost.prometheus.secret_name | string | nil |
Secret name that contains credentials for Prometheus |
| opencost.prometheus.thanos.enabled | bool | false |
|
| opencost.prometheus.thanos.external.enabled | bool | false |
|
| opencost.prometheus.thanos.external.url | string | "https://thanos-query.example.com/thanos" |
|
| opencost.prometheus.thanos.internal.enabled | bool | true |
|
| opencost.prometheus.thanos.internal.namespaceName | string | "opencost" |
|
| opencost.prometheus.thanos.internal.port | int | 10901 |
|
| opencost.prometheus.thanos.internal.scheme | string | "http" |
|
| opencost.prometheus.thanos.internal.serviceName | string | "my-thanos-query" |
|
| opencost.prometheus.thanos.maxSourceResolution | string | "" |
|
| opencost.prometheus.thanos.queryOffset | string | "" |
|
| opencost.prometheus.username | string | "" |
Prometheus Basic auth username |
| opencost.prometheus.username_key | string | "DB_BASIC_AUTH_USERNAME" |
Key in the secret that references the username |
| opencost.retention1d | int | 15 |
|
| opencost.retention1h | int | 49 |
|
| opencost.sigV4Proxy.extraEnv | string | nil |
|
| opencost.sigV4Proxy.host | string | "aps-workspaces.us-west-2.amazonaws.com" |
|
| opencost.sigV4Proxy.image | string | "public.ecr.aws/aws-observability/aws-sigv4-proxy:latest" |
|
| opencost.sigV4Proxy.imagePullPolicy | string | "IfNotPresent" |
|
| opencost.sigV4Proxy.name | string | "aps" |
|
| opencost.sigV4Proxy.port | int | 8005 |
|
| opencost.sigV4Proxy.region | string | "us-west-2" |
|
| opencost.sigV4Proxy.resources | object | {} |
|
| opencost.sigV4Proxy.securityContext | object | {} |
|
| opencost.tolerations | list | [] |
Toleration labels for pod assignment |
| opencost.topologySpreadConstraints | list | [] |
Assign custom TopologySpreadConstraints rules |
| opencost.ui.enabled | bool | true |
Enable OpenCost UI |
| opencost.ui.extraEnv | list | [] |
A list of environment variables to be added to the pod |
| opencost.ui.extraVolumeMounts | list | [] |
A list of volume mounts to be added to the pod |
| opencost.ui.httpRoute | object | {"annotations":{},"enabled":false,"hostnames":[],"labels":{},"parentRefs":[{"name":"","namespace":"","sectionName":""}],"rules":[{"backendRefs":[{"name":"","port":9090}],"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]} |
HTTPRoute for OpenCost UI (Gateway API) |
| opencost.ui.httpRoute.annotations | object | {} |
Annotations for HTTPRoute resource |
| opencost.ui.httpRoute.enabled | bool | false |
Enable HTTPRoute resource |
| opencost.ui.httpRoute.hostnames | list | [] |
Hostnames for the HTTPRoute |
| opencost.ui.httpRoute.labels | object | {} |
Labels for HTTPRoute resource |
| opencost.ui.httpRoute.parentRefs | list | See values.yaml | Gateway API parent references |
| opencost.ui.httpRoute.rules | list | See values.yaml | HTTPRoute rules. Each rule supports an optional filters list at the rule level and per-backendRef filters for Gateway API filter configuration (e.g. basic auth via ExtensionRef, header modification via RequestHeaderModifier, etc.). |
| opencost.ui.image.fullImageName | string | nil |
Override the full image name for development purposes |
| opencost.ui.image.pullPolicy | string | "IfNotPresent" |
UI container image pull policy |
| opencost.ui.image.registry | string | "ghcr.io" |
UI container image registry |
| opencost.ui.image.repository | string | "opencost/opencost-ui" |
UI container image name |
| opencost.ui.image.tag | string | "" (use appVersion in Chart.yaml) |
UI container image tag |
| opencost.ui.ingress.annotations | object | {} |
Annotations for Ingress resource |
| opencost.ui.ingress.enabled | bool | false |
Ingress for OpenCost UI |
| opencost.ui.ingress.hosts | list | See values.yaml | A list of host rules used to configure the Ingress |
| opencost.ui.ingress.ingressClassName | string | "" |
Ingress controller which implements the resource |
| opencost.ui.ingress.servicePort | string | "http-ui" |
Redirect ingress to an extraPort defined on the service such as oauth-proxy |
| opencost.ui.ingress.tls | list | [] |
Ingress TLS configuration |
| opencost.ui.livenessProbe.enabled | bool | true |
Whether probe is enabled |
| opencost.ui.livenessProbe.failureThreshold | int | 3 |
Number of failures for probe to be considered failed |
| opencost.ui.livenessProbe.initialDelaySeconds | int | 30 |
Number of seconds before probe is initiated |
| opencost.ui.livenessProbe.path | string | "/healthz" |
Probe path |
| opencost.ui.livenessProbe.periodSeconds | int | 10 |
Probe frequency in seconds |
| opencost.ui.nginx | object | {"proxyConnectTimeout":180,"proxyReadTimeout":180,"proxySendTimeout":180} |
Nginx proxy timeout settings (in seconds) |
| opencost.ui.nginx.proxyConnectTimeout | int | 180 |
Timeout for establishing a connection with the proxied server |
| opencost.ui.nginx.proxyReadTimeout | int | 180 |
Timeout for reading a response from the proxied server |
| opencost.ui.nginx.proxySendTimeout | int | 180 |
Timeout for transmitting a request to the proxied server |
| opencost.ui.readinessProbe.enabled | bool | true |
Whether probe is enabled |
| opencost.ui.readinessProbe.failureThreshold | int | 3 |
Number of failures for probe to be considered failed |
| opencost.ui.readinessProbe.initialDelaySeconds | int | 30 |
Number of seconds before probe is initiated |
| opencost.ui.readinessProbe.path | string | "/healthz" |
Probe path |
| opencost.ui.readinessProbe.periodSeconds | int | 10 |
Probe frequency in seconds |
| opencost.ui.resources.limits | object | {"memory":"1Gi"} |
CPU/Memory resource limits |
| opencost.ui.resources.requests | object | {"cpu":"10m","memory":"55Mi"} |
CPU/Memory resource requests |
| opencost.ui.route.annotations | object | {} |
Annotations for Ingress resource |
| opencost.ui.route.enabled | bool | false |
OpenShift route for OpenCost UI |
| opencost.ui.route.host | string | "example.local" |
|
| opencost.ui.route.path | string | nil |
|
| opencost.ui.route.targetPort | string | "http-ui" |
Redirect ingress to an extraPort defined on the service such as oauth-proxy |
| opencost.ui.route.tls | object | {} |
Route TLS configuration as a map (e.g. with termination and insecureEdgeTerminationPolicy fields) |
| opencost.ui.securityContext | object | {} |
The security options the container should be run with |
| opencost.ui.uiPath | string | "/" |
|
| opencost.ui.uiPort | int | 9090 |
|
| opencost.ui.useDefaultFqdn | bool | false |
|
| opencost.ui.useIPv6 | bool | true |
|
| opencost.updateCaTrust.caCertsSecret | string | "ca-certs-secret" |
|
| opencost.updateCaTrust.enabled | bool | false |
|
| opencost.updateCaTrust.resources | object | {} |
|
| opencost.updateCaTrust.securityContext.allowPrivilegeEscalation | bool | false |
|
| opencost.updateCaTrust.securityContext.readOnlyRootFilesystem | bool | true |
|
| opencost.updateCaTrust.securityContext.runAsGroup | int | 0 |
|
| opencost.updateCaTrust.securityContext.runAsNonRoot | bool | false |
|
| opencost.updateCaTrust.securityContext.runAsUser | int | 0 |
|
| opencost.updateCaTrust.securityContext.seccompProfile.type | string | "RuntimeDefault" |
|
| pdb.enabled | bool | false |
|
| pdb.maxUnavailable | string | nil |
Maximum number of pods that can be unavailable after the eviction |
| pdb.minAvailable | string | nil |
Minimum number of pods that must be available after the eviction |
| plugins.configs | string | nil |
|
| plugins.enabled | bool | false |
|
| plugins.existingSecret | string | "" |
Use an existing Secret for plugin configuration instead of generating one from plugins.configs. The referenced Secret MUST contain a <plugin>_config.json key for every entry in plugins.install.plugins (and for every plugin whose configs key would otherwise drive the install/mount list) -- the Deployment mounts those files via subPath and missing keys cause Pod startup failures. This is useful when using ExternalSecrets, Vault, or other secret-management tools so that plugin credentials do not have to be committed via plugins.configs. Mutually exclusive with plugins.configs: when existingSecret is set, the chart does not render a generated Secret and any plugins.configs entries would be silently ignored, so the chart will fail template rendering in that case. |
| plugins.folder | string | "/opt/opencost/plugin" |
|
| plugins.install.enabled | bool | true |
|
| plugins.install.fullImageName | string | "curlimages/curl:latest" |
|
| plugins.install.plugins | list | [] |
List of plugins to download, independent of plugins.configs. When specified, these plugins are downloaded regardless of what's in configs, which enables using plugins.existingSecret for credentials while still downloading plugin binaries. This list also drives which <plugin>_config.json subPaths the Deployment mounts, so each listed plugin MUST have a matching config source -- either a plugins.configs.<plugin> entry (when plugins.existingSecret is empty) or a <plugin>_config.json key in the Secret referenced by plugins.existingSecret. Missing entries cause Pod startup failures because the mounted subPath will not exist. When plugins.existingSecret is empty, the chart validates this at template-render time and fails with an actionable error; the check is skipped when plugins.existingSecret is set because the contents of an externally-managed Secret cannot be introspected from Helm. Example: ["datadog", "mongodb"]. If empty, falls back to downloading plugins based on keys in configs (legacy behavior). |
| plugins.install.securityContext.allowPrivilegeEscalation | bool | false |
|
| plugins.install.securityContext.capabilities.drop[0] | string | "ALL" |
|
| plugins.install.securityContext.readOnlyRootFilesystem | bool | true |
|
| plugins.install.securityContext.runAsNonRoot | bool | true |
|
| plugins.install.securityContext.runAsUser | int | 1000 |
|
| plugins.install.securityContext.seccompProfile.type | string | "RuntimeDefault" |
|
| podAnnotations | object | {} |
Annotations to add to the OpenCost Pod |
| podAutomountServiceAccountToken | bool | true |
Enable automounting of service account token at the pod level |
| podLabels | object | {} |
Labels to add to the OpenCost Pod |
| podSecurityContext | object | {} |
Holds pod-level security attributes and common container settings |
| priorityClassName | string | nil |
Pod priority |
| rbac.enabled | bool | true |
|
| secretAnnotations | object | {} |
Annotations to add to the Secret |
| service.annotations | object | {} |
Annotations to add to the service |
| service.enabled | bool | true |
|
| service.extraPorts | list | [] |
extra ports. Useful for sidecar pods such as oauth-proxy |
| service.labels | object | {} |
Labels to add to the service account |
| service.loadBalancerSourceRanges | list | [] |
LoadBalancer Source IP CIDR if service type is LoadBalancer and cloud provider supports this |
| service.nodePort | object | {} |
NodePort if service type is NodePort |
| service.type | string | "ClusterIP" |
Kubernetes Service type |
| serviceAccount.annotations | object | {} |
Annotations to add to the service account |
| serviceAccount.automountServiceAccountToken | bool | true |
Whether pods running as this service account should have an API token automatically mounted |
| serviceAccount.create | bool | true |
Specifies whether a service account should be created |
| serviceAccount.name | string | "" |
|
| updateStrategy | object | {"rollingUpdate":{"maxSurge":1,"maxUnavailable":1},"type":"RollingUpdate"} |
Strategy to be used for the Deployment |
Autogenerated from chart metadata using helm-docs v1.14.2