From e4da06aa3dd7b6d73f9dd2f20d17fe7b4f01ff5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20J=2E=20Salmer=C3=B3n-Garc=C3=ADa?= Date: Fri, 2 Jul 2021 18:01:14 +0200 Subject: [PATCH] [bitnami/grafana-tempo] Add chart (#6766) * [bitnami/grafana-tempo] Add chart * New changes * undo * mem * Add names * servicemonitor * [bitnami/grafana-tempo] Update components versions Signed-off-by: Bitnami Containers Co-authored-by: Bitnami Containers --- bitnami/grafana-tempo/.helmignore | 21 + bitnami/grafana-tempo/Chart.lock | 9 + bitnami/grafana-tempo/Chart.yaml | 30 + bitnami/grafana-tempo/README.md | 680 ++++++ bitnami/grafana-tempo/templates/NOTES.txt | 33 + bitnami/grafana-tempo/templates/_helpers.tpl | 196 ++ .../templates/compactor/deployment.yaml | 159 ++ .../templates/compactor/service.yaml | 47 + .../templates/compactor/servicemonitor.yaml | 37 + .../templates/distributor/deployment.yaml | 194 ++ .../templates/distributor/service.yaml | 107 + .../templates/distributor/servicemonitor.yaml | 37 + .../grafana-tempo/templates/extra-list.yaml | 4 + .../gossip-ring-headless-service.yaml | 30 + .../templates/ingester/service.yaml | 54 + .../templates/ingester/servicemonitor.yaml | 37 + .../templates/ingester/statefulset.yaml | 209 ++ .../templates/overrides-configmap.yaml | 16 + .../templates/querier/deployment.yaml | 159 ++ .../templates/querier/service.yaml | 54 + .../templates/querier/servicemonitor.yaml | 37 + .../templates/query-frontend/deployment.yaml | 227 ++ .../query-frontend/headless-service.yaml | 29 + .../query-frontend/query-configmap.yaml | 16 + .../templates/query-frontend/service.yaml | 50 + .../query-frontend/servicemonitor.yaml | 37 + .../templates/service-account.yaml | 15 + .../templates/tempo-configmap.yaml | 16 + .../templates/vulture/deployment.yaml | 144 ++ .../templates/vulture/service.yaml | 47 + .../templates/vulture/servicemonitor.yaml | 37 + bitnami/grafana-tempo/values.yaml | 1897 +++++++++++++++++ 32 files changed, 4665 insertions(+) create mode 100644 bitnami/grafana-tempo/.helmignore create mode 100644 bitnami/grafana-tempo/Chart.lock create mode 100644 bitnami/grafana-tempo/Chart.yaml create mode 100644 bitnami/grafana-tempo/README.md create mode 100644 bitnami/grafana-tempo/templates/NOTES.txt create mode 100644 bitnami/grafana-tempo/templates/_helpers.tpl create mode 100644 bitnami/grafana-tempo/templates/compactor/deployment.yaml create mode 100644 bitnami/grafana-tempo/templates/compactor/service.yaml create mode 100644 bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml create mode 100644 bitnami/grafana-tempo/templates/distributor/deployment.yaml create mode 100644 bitnami/grafana-tempo/templates/distributor/service.yaml create mode 100644 bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml create mode 100644 bitnami/grafana-tempo/templates/extra-list.yaml create mode 100644 bitnami/grafana-tempo/templates/gossip-ring-headless-service.yaml create mode 100644 bitnami/grafana-tempo/templates/ingester/service.yaml create mode 100644 bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml create mode 100644 bitnami/grafana-tempo/templates/ingester/statefulset.yaml create mode 100644 bitnami/grafana-tempo/templates/overrides-configmap.yaml create mode 100644 bitnami/grafana-tempo/templates/querier/deployment.yaml create mode 100644 bitnami/grafana-tempo/templates/querier/service.yaml create mode 100644 bitnami/grafana-tempo/templates/querier/servicemonitor.yaml create mode 100644 bitnami/grafana-tempo/templates/query-frontend/deployment.yaml create mode 100644 bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml create mode 100644 bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml create mode 100644 bitnami/grafana-tempo/templates/query-frontend/service.yaml create mode 100644 bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml create mode 100644 bitnami/grafana-tempo/templates/service-account.yaml create mode 100644 bitnami/grafana-tempo/templates/tempo-configmap.yaml create mode 100644 bitnami/grafana-tempo/templates/vulture/deployment.yaml create mode 100644 bitnami/grafana-tempo/templates/vulture/service.yaml create mode 100644 bitnami/grafana-tempo/templates/vulture/servicemonitor.yaml create mode 100644 bitnami/grafana-tempo/values.yaml diff --git a/bitnami/grafana-tempo/.helmignore b/bitnami/grafana-tempo/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/bitnami/grafana-tempo/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/bitnami/grafana-tempo/Chart.lock b/bitnami/grafana-tempo/Chart.lock new file mode 100644 index 000000000..8ebed554b --- /dev/null +++ b/bitnami/grafana-tempo/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://charts.bitnami.com/bitnami + version: 1.7.0 +- name: memcached + repository: https://charts.bitnami.com/bitnami + version: 5.13.1 +digest: sha256:eb748e9862d4e53cf5572bb1a2fd460abf58c0b257bd65e183110a2b587eaf6b +generated: "2021-07-02T15:32:20.686275209Z" diff --git a/bitnami/grafana-tempo/Chart.yaml b/bitnami/grafana-tempo/Chart.yaml new file mode 100644 index 000000000..c97242baa --- /dev/null +++ b/bitnami/grafana-tempo/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + category: Infrastructure +apiVersion: v2 +appVersion: 1.0.1 +dependencies: + - name: common + repository: https://charts.bitnami.com/bitnami + tags: + - bitnami-common + version: 1.x.x + - name: memcached + repository: https://charts.bitnami.com/bitnami + version: 5.x.x +description: Grafana Tempo is an open source, easy-to-use and high-scale distributed tracing backend. +engine: gotpl +home: https://github.com/grafana/tempo/ +icon: https://bitnami.com/assets/stacks/grafana-tempo/img/grafana-tempo-stack-220x234.png +keywords: + - grafana + - tracing + - metrics + - infrastructure +maintainers: + - email: containers@bitnami.com + name: Bitnami +name: grafana-tempo +sources: + - https://github.com/bitnami/bitnami-docker-grafana-tempo + - https://github.com/grafana/tempo/ +version: 0.1.0 diff --git a/bitnami/grafana-tempo/README.md b/bitnami/grafana-tempo/README.md new file mode 100644 index 000000000..9195f8bdc --- /dev/null +++ b/bitnami/grafana-tempo/README.md @@ -0,0 +1,680 @@ +# grafana-tempo + +[Grafana Tempo](https://github.com/grafana/tempo) is a an open source high-scale distributed tracing backend. It only requires object storage and supports integration with Grafana, Prometheus and Loki. + +## TL;DR + +```console +$ helm repo add bitnami https://charts.bitnami.com/bitnami +$ helm install my-release bitnami/grafana-tempo +``` + +## Introduction + +Bitnami charts for Helm are carefully engineered, actively maintained and are the quickest and easiest way to deploy containers on a Kubernetes cluster that are ready to handle production workloads. + +This chart bootstraps a [Grafana Tempo](https://github.com/grafana/tempo) Deployment in a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. This Helm chart has been tested on top of [Bitnami Kubernetes Production Runtime](https://kubeprod.io/) (BKPR). Deploy BKPR to get automated TLS certificates, logging and monitoring for your applications. + +[Learn more about the default configuration of the chart](https://docs.bitnami.com/kubernetes/infrastructure/grafana-tempo/get-started/understand-default-configuration/). + +## Prerequisites + +- Kubernetes 1.12+ +- Helm 3.1.0 +- PV provisioner support in the underlying infrastructure + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +helm install my-release bitnami/grafana-tempo +``` + +The command deploys grafana-tempo on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```console +helm delete my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Parameters + +### Global parameters + +| Name | Description | Value | +|---------------------------|-------------------------------------------------|-------| +| `global.imageRegistry` | Global Docker image registry | `nil` | +| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | +| `global.storageClass` | Global StorageClass for Persistent Volume(s) | `nil` | + +### Common parameters + +| Name | Description | Value | +|---------------------|----------------------------------------------------|-----------------| +| `kubeVersion` | Override Kubernetes version | `nil` | +| `nameOverride` | String to partially override common.names.fullname | `nil` | +| `fullnameOverride` | String to fully override common.names.fullname | `nil` | +| `commonLabels` | Labels to add to all deployed objects | `{}` | +| `commonAnnotations` | Annotations to add to all deployed objects | `{}` | +| `clusterDomain` | Kubernetes cluster domain name | `cluster.local` | +| `extraDeploy` | Array of extra objects to deploy with the release | `[]` | + +### Common Grafana Tempo Parameters + +| Name | Description | Value | +|----------------------------------------|------------------------------------------------------------|-------------------------------| +| `tempo.image.registry` | Grafana Tempo image registry | `docker.io` | +| `tempo.image.repository` | Grafana Tempo image repository | `grafana/tempo` | +| `tempo.image.tag` | Grafana Tempo image tag (immutable tags are recommended) | `latest` | +| `tempo.image.pullPolicy` | Grafana Tempo image pull policy | `IfNotPresent` | +| `tempo.image.pullSecrets` | Grafana Tempo image pull secrets | `[]` | +| `tempo.containerPort` | Tempo components web port | `3100` | +| `tempo.grpcContainerPort` | Tempo components GRPC port | `9095` | +| `tempo.memBallastSizeMbs` | Tempo components memory ballast size in MB | `1024` | +| `tempo.dataDir` | Tempo components data directory | `/bitnami/tempo-grafana/data` | +| `tempo.traces.jaeger.grpc` | Enable Tempo to ingest Jaeger GRPC traces | `true` | +| `tempo.traces.jaeger.thriftBinary` | Enable Tempo to ingest Jaeger Thrift Binary traces | `false` | +| `tempo.traces.jaeger.thriftCompact` | Enable Tempo to ingest Jaeger Thrift Compact traces | `false` | +| `tempo.traces.jaeger.thriftHttp` | Enable Tempo to ingest Jaeger Thrift HTTP traces | `true` | +| `tempo.traces.zipkin` | Enable Tempo to ingest Zipkin traces | `false` | +| `tempo.traces.otlp.http` | Enable Tempo to ingest Open Telementry HTTP traces | `false` | +| `tempo.traces.otlp.grpc` | Enable Tempo to ingest Open Telementry GRPC traces | `false` | +| `tempo.traces.opencensus` | Enable Tempo to ingest Open Census traces | `false` | +| `tempo.gossipRing.containerPort` | gossip service HTTP port | `7946` | +| `tempo.gossipRing.service.port` | gossip headless service HTTP port | `7946` | +| `tempo.gossipRing.service.annotations` | Additional custom annotations for gossip headless service | `{}` | +| `tempo.configuration` | Tempo components configuration | `""` | +| `tempo.existingConfigmap` | name of a ConfigMap with the tempo configuration | `nil` | +| `tempo.overridesConfiguration` | Tempo components overrides configuration settings | `""` | +| `tempo.existingOverridesConfigmap` | name of a ConfigMap with the tempo overrides configuration | `nil` | + +### Compactor Deployment Parameters + +| Name | Description | Value | +|------------------------------------------------|-----------------------------------------------------------------------------------------------------|-----------------| +| `compactor.enabled` | Enable compactor deployment | `true` | +| `compactor.replicaCount` | Number of compactor replicas to deploy | `1` | +| `compactor.livenessProbe.enabled` | Enable livenessProbe on compactor nodes | `true` | +| `compactor.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `compactor.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `compactor.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `compactor.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `compactor.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `compactor.readinessProbe.enabled` | Enable readinessProbe on compactor nodes | `true` | +| `compactor.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `compactor.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `compactor.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `compactor.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `compactor.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `compactor.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `compactor.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `compactor.resources.limits` | The resources limits for the compactor containers | `{}` | +| `compactor.resources.requests` | The requested resources for the compactor containers | `{}` | +| `compactor.podSecurityContext.enabled` | Enabled compactor pods' Security Context | `true` | +| `compactor.podSecurityContext.fsGroup` | Set compactor pod's Security Context fsGroup | `1001` | +| `compactor.containerSecurityContext.enabled` | Enabled compactor containers' Security Context | `true` | +| `compactor.containerSecurityContext.runAsUser` | Set compactor containers' Security Context runAsUser | `1001` | +| `compactor.command` | Override default container command (useful when using custom images) | `[]` | +| `compactor.args` | Override default container args (useful when using custom images) | `[]` | +| `compactor.hostAliases` | compactor pods host aliases | `[]` | +| `compactor.podLabels` | Extra labels for compactor pods | `{}` | +| `compactor.podAnnotations` | Annotations for compactor pods | `{}` | +| `compactor.podAffinityPreset` | Pod affinity preset. Ignored if `compactor.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `compactor.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `compactor.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `compactor.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `compactor.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `compactor.nodeAffinityPreset.key` | Node label key to match. Ignored if `compactor.affinity` is set | `""` | +| `compactor.nodeAffinityPreset.values` | Node label values to match. Ignored if `compactor.affinity` is set | `[]` | +| `compactor.affinity` | Affinity for compactor pods assignment | `{}` | +| `compactor.nodeSelector` | Node labels for compactor pods assignment | `{}` | +| `compactor.tolerations` | Tolerations for compactor pods assignment | `[]` | +| `compactor.updateStrategy.type` | compactor statefulset strategy type | `RollingUpdate` | +| `compactor.priorityClassName` | compactor pods' priorityClassName | `""` | +| `compactor.lifecycleHooks` | for the compactor container(s) to automate configuration before or after startup | `{}` | +| `compactor.extraEnvVars` | Array with extra environment variables to add to compactor nodes | `[]` | +| `compactor.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for compactor nodes | `nil` | +| `compactor.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for compactor nodes | `nil` | +| `compactor.extraVolumes` | Optionally specify extra list of additional volumes for the compactor pod(s) | `[]` | +| `compactor.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the compactor container(s) | `[]` | +| `compactor.sidecars` | Add additional sidecar containers to the compactor pod(s) | `{}` | +| `compactor.initContainers` | Add additional init containers to the compactor pod(s) | `{}` | + +### Compactor Traffic Exposure Parameters + +| Name | Description | Value | +|----------------------------------------------|-----------------------------------------------------|-------------| +| `compactor.service.type` | compactor service type | `ClusterIP` | +| `compactor.service.port` | compactor service HTTP port | `3100` | +| `compactor.service.nodePorts.http` | Node port for HTTP | `nil` | +| `compactor.service.clusterIP` | compactor service Cluster IP | `nil` | +| `compactor.service.loadBalancerIP` | compactor service Load Balancer IP | `nil` | +| `compactor.service.loadBalancerSourceRanges` | compactor service Load Balancer sources | `[]` | +| `compactor.service.externalTrafficPolicy` | compactor service external traffic policy | `Cluster` | +| `compactor.service.annotations` | Additional custom annotations for compactor service | `{}` | + +### Distributor Deployment Parameters + +| Name | Description | Value | +|--------------------------------------------------|-------------------------------------------------------------------------------------------------------|-----------------| +| `distributor.replicaCount` | Number of distributor replicas to deploy | `1` | +| `distributor.livenessProbe.enabled` | Enable livenessProbe on distributor nodes | `true` | +| `distributor.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `distributor.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `distributor.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `distributor.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `distributor.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `distributor.readinessProbe.enabled` | Enable readinessProbe on distributor nodes | `true` | +| `distributor.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `distributor.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `distributor.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `distributor.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `distributor.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `distributor.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `distributor.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `distributor.resources.limits` | The resources limits for the distributor containers | `{}` | +| `distributor.resources.requests` | The requested resources for the distributor containers | `{}` | +| `distributor.podSecurityContext.enabled` | Enabled distributor pods' Security Context | `true` | +| `distributor.podSecurityContext.fsGroup` | Set distributor pod's Security Context fsGroup | `1001` | +| `distributor.containerSecurityContext.enabled` | Enabled distributor containers' Security Context | `true` | +| `distributor.containerSecurityContext.runAsUser` | Set distributor containers' Security Context runAsUser | `1001` | +| `distributor.command` | Override default container command (useful when using custom images) | `[]` | +| `distributor.args` | Override default container args (useful when using custom images) | `[]` | +| `distributor.hostAliases` | distributor pods host aliases | `[]` | +| `distributor.podLabels` | Extra labels for distributor pods | `{}` | +| `distributor.podAnnotations` | Annotations for distributor pods | `{}` | +| `distributor.podAffinityPreset` | Pod affinity preset. Ignored if `distributor.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `distributor.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `distributor.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `distributor.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `distributor.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `distributor.nodeAffinityPreset.key` | Node label key to match. Ignored if `distributor.affinity` is set | `""` | +| `distributor.nodeAffinityPreset.values` | Node label values to match. Ignored if `distributor.affinity` is set | `[]` | +| `distributor.affinity` | Affinity for distributor pods assignment | `{}` | +| `distributor.nodeSelector` | Node labels for distributor pods assignment | `{}` | +| `distributor.tolerations` | Tolerations for distributor pods assignment | `[]` | +| `distributor.updateStrategy.type` | distributor statefulset strategy type | `RollingUpdate` | +| `distributor.priorityClassName` | distributor pods' priorityClassName | `""` | +| `distributor.lifecycleHooks` | for the distributor container(s) to automate configuration before or after startup | `{}` | +| `distributor.extraEnvVars` | Array with extra environment variables to add to distributor nodes | `[]` | +| `distributor.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for distributor nodes | `nil` | +| `distributor.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for distributor nodes | `nil` | +| `distributor.extraVolumes` | Optionally specify extra list of additional volumes for the distributor pod(s) | `[]` | +| `distributor.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the distributor container(s) | `[]` | +| `distributor.sidecars` | Add additional sidecar containers to the distributor pod(s) | `{}` | +| `distributor.initContainers` | Add additional init containers to the distributor pod(s) | `{}` | + +### Distributor Traffic Exposure Parameters + +| Name | Description | Value | +|------------------------------------------------|-------------------------------------------------------|-------------| +| `distributor.service.type` | distributor service type | `ClusterIP` | +| `distributor.service.port` | distributor service HTTP port | `3100` | +| `distributor.service.grpcPort` | distributor service HTTP port | `9095` | +| `distributor.service.nodePorts.http` | Node port for HTTP | `nil` | +| `distributor.service.nodePorts.grpc` | Node port for GRPC | `nil` | +| `distributor.service.clusterIP` | distributor service Cluster IP | `nil` | +| `distributor.service.loadBalancerIP` | distributor service Load Balancer IP | `nil` | +| `distributor.service.loadBalancerSourceRanges` | distributor service Load Balancer sources | `[]` | +| `distributor.service.externalTrafficPolicy` | distributor service external traffic policy | `Cluster` | +| `distributor.service.annotations` | Additional custom annotations for distributor service | `{}` | + +### Ingester Deployment Parameters + +| Name | Description | Value | +|-----------------------------------------------|----------------------------------------------------------------------------------------------------|-----------------| +| `ingester.replicaCount` | Number of ingester replicas to deploy | `1` | +| `ingester.livenessProbe.enabled` | Enable livenessProbe on ingester nodes | `true` | +| `ingester.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `ingester.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `ingester.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `ingester.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `ingester.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `ingester.readinessProbe.enabled` | Enable readinessProbe on ingester nodes | `true` | +| `ingester.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `ingester.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `ingester.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `ingester.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `ingester.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `ingester.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `ingester.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `ingester.resources.limits` | The resources limits for the ingester containers | `{}` | +| `ingester.resources.requests` | The requested resources for the ingester containers | `{}` | +| `ingester.podSecurityContext.enabled` | Enabled ingester pods' Security Context | `true` | +| `ingester.podSecurityContext.fsGroup` | Set ingester pod's Security Context fsGroup | `1001` | +| `ingester.containerSecurityContext.enabled` | Enabled ingester containers' Security Context | `true` | +| `ingester.containerSecurityContext.runAsUser` | Set ingester containers' Security Context runAsUser | `1001` | +| `ingester.command` | Override default container command (useful when using custom images) | `[]` | +| `ingester.args` | Override default container args (useful when using custom images) | `[]` | +| `ingester.hostAliases` | ingester pods host aliases | `[]` | +| `ingester.podLabels` | Extra labels for ingester pods | `{}` | +| `ingester.podAnnotations` | Annotations for ingester pods | `{}` | +| `ingester.podAffinityPreset` | Pod affinity preset. Ignored if `ingester.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `ingester.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `ingester.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `ingester.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `ingester.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `ingester.nodeAffinityPreset.key` | Node label key to match. Ignored if `ingester.affinity` is set | `""` | +| `ingester.nodeAffinityPreset.values` | Node label values to match. Ignored if `ingester.affinity` is set | `[]` | +| `ingester.affinity` | Affinity for ingester pods assignment | `{}` | +| `ingester.nodeSelector` | Node labels for ingester pods assignment | `{}` | +| `ingester.tolerations` | Tolerations for ingester pods assignment | `[]` | +| `ingester.updateStrategy.type` | ingester statefulset strategy type | `RollingUpdate` | +| `ingester.priorityClassName` | ingester pods' priorityClassName | `""` | +| `ingester.lifecycleHooks` | for the ingester container(s) to automate configuration before or after startup | `{}` | +| `ingester.extraEnvVars` | Array with extra environment variables to add to ingester nodes | `[]` | +| `ingester.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for ingester nodes | `nil` | +| `ingester.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for ingester nodes | `nil` | +| `ingester.extraVolumes` | Optionally specify extra list of additional volumes for the ingester pod(s) | `[]` | +| `ingester.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the ingester container(s) | `[]` | +| `ingester.sidecars` | Add additional sidecar containers to the ingester pod(s) | `{}` | +| `ingester.initContainers` | Add additional init containers to the ingester pod(s) | `{}` | + +### Ingester Persistence Parameters + +| Name | Description | Value | +|--------------------------------------------------------|--------------------------------------------|--------| +| `ingester.persistence.enabled` | Enable persistence in ingester instances | `true` | +| `ingester.persistence.storageClass` | Persistent Volumes storage class | `nil` | +| `ingester.persistence.subPath` | The subdirectory of the volume to mount to | `""` | +| `ingester.persistence.accessModes` | Persistent Volumes access modes | `[]` | +| `ingester.persistence.size` | Persistent Volumes size | `8Gi` | +| `ingester.persistence.annotations` | Persistent Volumes annotations | `{}` | +| `ingester.persistence.volumeClaimTemplates.selector` | Persistent Volumes selector | `nil` | +| `ingester.persistence.volumeClaimTemplates.requests` | Persistent Volumes requests | `nil` | +| `ingester.persistence.volumeClaimTemplates.dataSource` | Persistent Volumes data source | `nil` | + +### Ingester Traffic Exposure Parameters + +| Name | Description | Value | +|---------------------------------------------|----------------------------------------------------|-------------| +| `ingester.service.type` | ingester service type | `ClusterIP` | +| `ingester.service.port` | ingester service HTTP port | `3100` | +| `ingester.service.grpcPort` | ingester service HTTP port | `9095` | +| `ingester.service.nodePorts.http` | Node port for HTTP | `nil` | +| `ingester.service.nodePorts.grpc` | Node port for GRPC | `nil` | +| `ingester.service.clusterIP` | ingester service Cluster IP | `nil` | +| `ingester.service.loadBalancerIP` | ingester service Load Balancer IP | `nil` | +| `ingester.service.loadBalancerSourceRanges` | ingester service Load Balancer sources | `[]` | +| `ingester.service.externalTrafficPolicy` | ingester service external traffic policy | `Cluster` | +| `ingester.service.annotations` | Additional custom annotations for ingester service | `{}` | + +### Querier Deployment Parameters + +| Name | Description | Value | +|----------------------------------------------|---------------------------------------------------------------------------------------------------|-----------------| +| `querier.replicaCount` | Number of querier replicas to deploy | `1` | +| `querier.livenessProbe.enabled` | Enable livenessProbe on querier nodes | `true` | +| `querier.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `querier.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `querier.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `querier.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `querier.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `querier.readinessProbe.enabled` | Enable readinessProbe on querier nodes | `true` | +| `querier.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `querier.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `querier.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `querier.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `querier.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `querier.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `querier.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `querier.resources.limits` | The resources limits for the querier containers | `{}` | +| `querier.resources.requests` | The requested resources for the querier containers | `{}` | +| `querier.podSecurityContext.enabled` | Enabled querier pods' Security Context | `true` | +| `querier.podSecurityContext.fsGroup` | Set querier pod's Security Context fsGroup | `1001` | +| `querier.containerSecurityContext.enabled` | Enabled querier containers' Security Context | `true` | +| `querier.containerSecurityContext.runAsUser` | Set querier containers' Security Context runAsUser | `1001` | +| `querier.command` | Override default container command (useful when using custom images) | `[]` | +| `querier.args` | Override default container args (useful when using custom images) | `[]` | +| `querier.hostAliases` | querier pods host aliases | `[]` | +| `querier.podLabels` | Extra labels for querier pods | `{}` | +| `querier.podAnnotations` | Annotations for querier pods | `{}` | +| `querier.podAffinityPreset` | Pod affinity preset. Ignored if `querier.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `querier.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `querier.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `querier.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `querier.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `querier.nodeAffinityPreset.key` | Node label key to match. Ignored if `querier.affinity` is set | `""` | +| `querier.nodeAffinityPreset.values` | Node label values to match. Ignored if `querier.affinity` is set | `[]` | +| `querier.affinity` | Affinity for querier pods assignment | `{}` | +| `querier.nodeSelector` | Node labels for querier pods assignment | `{}` | +| `querier.tolerations` | Tolerations for querier pods assignment | `[]` | +| `querier.updateStrategy.type` | querier statefulset strategy type | `RollingUpdate` | +| `querier.priorityClassName` | querier pods' priorityClassName | `""` | +| `querier.lifecycleHooks` | for the querier container(s) to automate configuration before or after startup | `{}` | +| `querier.extraEnvVars` | Array with extra environment variables to add to querier nodes | `[]` | +| `querier.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for querier nodes | `nil` | +| `querier.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for querier nodes | `nil` | +| `querier.extraVolumes` | Optionally specify extra list of additional volumes for the querier pod(s) | `[]` | +| `querier.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the querier container(s) | `[]` | +| `querier.sidecars` | Add additional sidecar containers to the querier pod(s) | `{}` | +| `querier.initContainers` | Add additional init containers to the querier pod(s) | `{}` | + +### Querier Traffic Exposure Parameters + +| Name | Description | Value | +|--------------------------------------------|---------------------------------------------------|-------------| +| `querier.service.type` | querier service type | `ClusterIP` | +| `querier.service.port` | querier service HTTP port | `3100` | +| `querier.service.grpcPort` | querier service HTTP port | `9095` | +| `querier.service.nodePorts.http` | Node port for HTTP | `nil` | +| `querier.service.nodePorts.grpc` | Node port for GRPC | `nil` | +| `querier.service.clusterIP` | querier service Cluster IP | `nil` | +| `querier.service.loadBalancerIP` | querier service Load Balancer IP | `nil` | +| `querier.service.loadBalancerSourceRanges` | querier service Load Balancer sources | `[]` | +| `querier.service.externalTrafficPolicy` | querier service external traffic policy | `Cluster` | +| `querier.service.annotations` | Additional custom annotations for querier service | `{}` | + +### Query Frontend Deployment Parameters + +| Name | Description | Value | +|----------------------------------------------------------|---------------------------------------------------------------------------------------------------------|-----------------------| +| `queryFrontend.replicaCount` | Number of queryFrontend replicas to deploy | `1` | +| `queryFrontend.livenessProbe.enabled` | Enable livenessProbe on queryFrontend nodes | `true` | +| `queryFrontend.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `queryFrontend.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `queryFrontend.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `queryFrontend.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `queryFrontend.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `queryFrontend.readinessProbe.enabled` | Enable readinessProbe on queryFrontend nodes | `true` | +| `queryFrontend.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `queryFrontend.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `queryFrontend.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `queryFrontend.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `queryFrontend.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `queryFrontend.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `queryFrontend.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `queryFrontend.resources.limits` | The resources limits for the queryFrontend containers | `{}` | +| `queryFrontend.resources.requests` | The requested resources for the queryFrontend containers | `{}` | +| `queryFrontend.podSecurityContext.enabled` | Enabled queryFrontend pods' Security Context | `true` | +| `queryFrontend.podSecurityContext.fsGroup` | Set queryFrontend pod's Security Context fsGroup | `1001` | +| `queryFrontend.containerSecurityContext.enabled` | Enabled queryFrontend containers' Security Context | `true` | +| `queryFrontend.containerSecurityContext.runAsUser` | Set queryFrontend containers' Security Context runAsUser | `1001` | +| `queryFrontend.command` | Override default container command (useful when using custom images) | `[]` | +| `queryFrontend.args` | Override default container args (useful when using custom images) | `[]` | +| `queryFrontend.hostAliases` | queryFrontend pods host aliases | `[]` | +| `queryFrontend.podLabels` | Extra labels for queryFrontend pods | `{}` | +| `queryFrontend.podAnnotations` | Annotations for queryFrontend pods | `{}` | +| `queryFrontend.podAffinityPreset` | Pod affinity preset. Ignored if `queryFrontend.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `queryFrontend.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `queryFrontend.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `queryFrontend.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `queryFrontend.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `queryFrontend.nodeAffinityPreset.key` | Node label key to match. Ignored if `queryFrontend.affinity` is set | `""` | +| `queryFrontend.nodeAffinityPreset.values` | Node label values to match. Ignored if `queryFrontend.affinity` is set | `[]` | +| `queryFrontend.affinity` | Affinity for queryFrontend pods assignment | `{}` | +| `queryFrontend.nodeSelector` | Node labels for queryFrontend pods assignment | `{}` | +| `queryFrontend.tolerations` | Tolerations for queryFrontend pods assignment | `[]` | +| `queryFrontend.updateStrategy.type` | queryFrontend statefulset strategy type | `RollingUpdate` | +| `queryFrontend.priorityClassName` | queryFrontend pods' priorityClassName | `""` | +| `queryFrontend.lifecycleHooks` | for the queryFrontend container(s) to automate configuration before or after startup | `{}` | +| `queryFrontend.extraEnvVars` | Array with extra environment variables to add to queryFrontend nodes | `[]` | +| `queryFrontend.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for queryFrontend nodes | `nil` | +| `queryFrontend.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for queryFrontend nodes | `nil` | +| `queryFrontend.extraVolumes` | Optionally specify extra list of additional volumes for the queryFrontend pod(s) | `[]` | +| `queryFrontend.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the queryFrontend container(s) | `[]` | +| `queryFrontend.sidecars` | Add additional sidecar containers to the queryFrontend pod(s) | `{}` | +| `queryFrontend.initContainers` | Add additional init containers to the queryFrontend pod(s) | `{}` | +| `queryFrontend.query.image.registry` | Grafana Tempo Query image registry | `docker.io` | +| `queryFrontend.query.image.repository` | Grafana Tempo Query image repository | `grafana/tempo-query` | +| `queryFrontend.query.image.tag` | Grafana Tempo Query image tag (immutable tags are recommended) | `latest` | +| `queryFrontend.query.image.pullPolicy` | Grafana Tempo Query image pull policy | `IfNotPresent` | +| `queryFrontend.query.image.pullSecrets` | Grafana Tempo Query image pull secrets | `[]` | +| `queryFrontend.query.command` | Override default container command (useful when using custom images) | `[]` | +| `queryFrontend.query.args` | Override default container args (useful when using custom images) | `[]` | +| `queryFrontend.query.configuration` | Query sidecar configuration | `""` | +| `queryFrontend.query.jaegerMetricsContainerPort` | Jaeger metrics container port | `16687` | +| `queryFrontend.query.jaegerUIContainerPort` | Jaeger UI container port | `16686` | +| `queryFrontend.query.existingConfigmap` | Name of a configmap with the query configuration | `nil` | +| `queryFrontend.query.livenessProbe.enabled` | Enable livenessProbe on query sidecar nodes | `true` | +| `queryFrontend.query.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `queryFrontend.query.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `queryFrontend.query.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `queryFrontend.query.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `queryFrontend.query.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `queryFrontend.query.readinessProbe.enabled` | Enable readinessProbe on query sidecar nodes | `true` | +| `queryFrontend.query.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `queryFrontend.query.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `queryFrontend.query.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `queryFrontend.query.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `queryFrontend.query.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `queryFrontend.query.resources.limits` | The resources limits for the query sidecar containers | `{}` | +| `queryFrontend.query.resources.requests` | The requested resources for the query sidecar containers | `{}` | +| `queryFrontend.query.lifecycleHooks` | for the query sidecar container(s) to automate configuration before or after startup | `{}` | +| `queryFrontend.query.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `queryFrontend.query.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `queryFrontend.query.extraEnvVars` | Array with extra environment variables to add to queryFrontend nodes | `[]` | +| `queryFrontend.query.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for queryFrontend nodes | `nil` | +| `queryFrontend.query.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for queryFrontend nodes | `nil` | +| `queryFrontend.query.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the queryFrontend container(s) | `[]` | +| `queryFrontend.query.containerSecurityContext.enabled` | Enabled query-frontend query sidecar containers' Security Context | `true` | +| `queryFrontend.query.containerSecurityContext.runAsUser` | Set query-frontend query sidecar containers' Security Context runAsUser | `1001` | + +### Query Frontend Traffic Exposure Parameters + +| Name | Description | Value | +|--------------------------------------------------|---------------------------------------------------------|-------------| +| `queryFrontend.service.type` | queryFrontend service type | `ClusterIP` | +| `queryFrontend.service.port` | queryFrontend service HTTP port | `3100` | +| `queryFrontend.service.grpcPort` | queryFrontend service HTTP port | `9095` | +| `queryFrontend.service.nodePorts.http` | Node port for HTTP | `nil` | +| `queryFrontend.service.nodePorts.grpc` | Node port for GRPC | `nil` | +| `queryFrontend.service.clusterIP` | queryFrontend service Cluster IP | `nil` | +| `queryFrontend.service.loadBalancerIP` | queryFrontend service Load Balancer IP | `nil` | +| `queryFrontend.service.loadBalancerSourceRanges` | queryFrontend service Load Balancer sources | `[]` | +| `queryFrontend.service.externalTrafficPolicy` | queryFrontend service external traffic policy | `Cluster` | +| `queryFrontend.service.annotations` | Additional custom annotations for queryFrontend service | `{}` | + +### Vulture Deployment Parameters + +| Name | Description | Value | +|----------------------------------------------|---------------------------------------------------------------------------------------------------|-------------------------| +| `vulture.enabled` | Enable vulture deployment | `true` | +| `vulture.image.registry` | Grafana Vulture image registry | `docker.io` | +| `vulture.image.repository` | Grafana Vulture image repository | `grafana/tempo-vulture` | +| `vulture.image.tag` | Grafana Vulture image tag (immutable tags are recommended) | `latest` | +| `vulture.image.pullPolicy` | Grafana Vulture image pull policy | `IfNotPresent` | +| `vulture.image.pullSecrets` | Grafana Vulture image pull secrets | `[]` | +| `vulture.replicaCount` | Number of vulture replicas to deploy | `1` | +| `vulture.livenessProbe.enabled` | Enable livenessProbe on vulture nodes | `true` | +| `vulture.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `vulture.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `vulture.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `vulture.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `vulture.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `vulture.readinessProbe.enabled` | Enable readinessProbe on vulture nodes | `true` | +| `vulture.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `vulture.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `vulture.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `vulture.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `vulture.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `vulture.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `vulture.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `vulture.resources.limits` | The resources limits for the vulture containers | `{}` | +| `vulture.resources.requests` | The requested resources for the vulture containers | `{}` | +| `vulture.podSecurityContext.enabled` | Enabled vulture pods' Security Context | `true` | +| `vulture.podSecurityContext.fsGroup` | Set vulture pod's Security Context fsGroup | `1001` | +| `vulture.containerSecurityContext.enabled` | Enabled vulture containers' Security Context | `true` | +| `vulture.containerSecurityContext.runAsUser` | Set vulture containers' Security Context runAsUser | `1001` | +| `vulture.command` | Override default container command (useful when using custom images) | `[]` | +| `vulture.args` | Override default container args (useful when using custom images) | `[]` | +| `vulture.hostAliases` | vulture pods host aliases | `[]` | +| `vulture.podLabels` | Extra labels for vulture pods | `{}` | +| `vulture.podAnnotations` | Annotations for vulture pods | `{}` | +| `vulture.podAffinityPreset` | Pod affinity preset. Ignored if `vulture.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `vulture.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `vulture.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `vulture.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `vulture.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `vulture.nodeAffinityPreset.key` | Node label key to match. Ignored if `vulture.affinity` is set | `""` | +| `vulture.nodeAffinityPreset.values` | Node label values to match. Ignored if `vulture.affinity` is set | `[]` | +| `vulture.containerPort` | Vulture container port | `8080` | +| `vulture.affinity` | Affinity for vulture pods assignment | `{}` | +| `vulture.nodeSelector` | Node labels for vulture pods assignment | `{}` | +| `vulture.tolerations` | Tolerations for vulture pods assignment | `[]` | +| `vulture.updateStrategy.type` | vulture statefulset strategy type | `RollingUpdate` | +| `vulture.priorityClassName` | vulture pods' priorityClassName | `""` | +| `vulture.lifecycleHooks` | for the vulture container(s) to automate configuration before or after startup | `{}` | +| `vulture.extraEnvVars` | Array with extra environment variables to add to vulture nodes | `[]` | +| `vulture.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for vulture nodes | `nil` | +| `vulture.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for vulture nodes | `nil` | +| `vulture.extraVolumes` | Optionally specify extra list of additional volumes for the vulture pod(s) | `[]` | +| `vulture.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the vulture container(s) | `[]` | +| `vulture.sidecars` | Add additional sidecar containers to the vulture pod(s) | `{}` | +| `vulture.initContainers` | Add additional init containers to the vulture pod(s) | `{}` | + +### Vulture Traffic Exposure Parameters + +| Name | Description | Value | +|--------------------------------------------|---------------------------------------------------|-------------| +| `vulture.service.type` | vulture service type | `ClusterIP` | +| `vulture.service.port` | vulture service HTTP port | `3100` | +| `vulture.service.nodePorts.http` | Node port for HTTP | `nil` | +| `vulture.service.clusterIP` | vulture service Cluster IP | `nil` | +| `vulture.service.loadBalancerIP` | vulture service Load Balancer IP | `nil` | +| `vulture.service.loadBalancerSourceRanges` | vulture service Load Balancer sources | `[]` | +| `vulture.service.externalTrafficPolicy` | vulture service external traffic policy | `Cluster` | +| `vulture.service.annotations` | Additional custom annotations for vulture service | `{}` | + +### Init Container Parameters + +| Name | Description | Value | +|--------------------------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------| +| `volumePermissions.enabled` | Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup` | `false` | +| `volumePermissions.image.registry` | Bitnami Shell image registry | `docker.io` | +| `volumePermissions.image.repository` | Bitnami Shell image repository | `bitnami/bitnami-shell` | +| `volumePermissions.image.tag` | Bitnami Shell image tag (immutable tags are recommended) | `10` | +| `volumePermissions.image.pullPolicy` | Bitnami Shell image pull policy | `Always` | +| `volumePermissions.image.pullSecrets` | Bitnami Shell image pull secrets | `[]` | +| `volumePermissions.resources.limits` | The resources limits for the init container | `{}` | +| `volumePermissions.resources.requests` | The requested resources for the init container | `{}` | +| `volumePermissions.containerSecurityContext.runAsUser` | Set init container's Security Context runAsUser | `0` | + +### Other Parameters + +| Name | Description | Value | +|-------------------------|------------------------------------------------------|--------| +| `serviceAccount.create` | Specifies whether a ServiceAccount should be created | `true` | +| `serviceAccount.name` | The name of the ServiceAccount to use. | `""` | + +### Metrics Parameters + +| Name | Description | Value | +|----------------------------------------|---------------------------------------------------------------------------------|---------| +| `metrics.enabled` | Enable metrics | `false` | +| `metrics.serviceMonitor.enabled` | Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator | `false` | +| `metrics.serviceMonitor.namespace` | The namespace in which the ServiceMonitor will be created | `nil` | +| `metrics.serviceMonitor.interval` | The interval at which metrics should be scraped | `30s` | +| `metrics.serviceMonitor.scrapeTimeout` | The timeout after which the scrape is ended | `nil` | +| `metrics.serviceMonitor.selector` | Scrape selector | `nil` | + +### External Memcached Parameters + +| Name | Description | Value | +|--------------------------|-----------------------------------------------|---------| +| `externalMemcached.host` | Host of a running external memcached instance | `nil` | +| `externalMemcached.port` | Port of a running external memcached instance | `11211` | + +### Memcached Sub-chart Parameters + +| Name | Description | Value | +|--------------------------|----------------------------|---------| +| `memcached.enabled` | Deploy memcached sub-chart | `true` | +| `memcached.service.port` | Memcached service port | `11211` | + +See https://github.com/bitnami-labs/readme-generator-for-helm to create the table + +The above parameters map to the env variables defined in [bitnami/grafana-tempo](http://github.com/bitnami/bitnami-docker-grafana-tempo). For more information please refer to the [bitnami/grafana-tempo](http://github.com/bitnami/bitnami-docker-grafana-tempo) image documentation. + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```console +helm install my-release \ + --set tempo.traces.jaeger.grpc=true \ + bitnami/grafana-tempo +``` + +The above command enables the Jaeger GRPC traces. + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, + +```console +helm install my-release -f values.yaml bitnami/grafana-tempo +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Configuration and installation details + +### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/) + +It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. + +Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. +### Tempo configuration + +The tempo configuration file `tempo.yaml` is shared across the different components: `distributor`, `compactor`, `ingester`, `querier` and `queryFrontend`. This is set in the `tempo.configuration` value. Check the official [Tempo Grafana documentation](https://grafana.com/docs/tempo/latest/configuration/) for the list of possible configurations. + +## Persistence + +The [Bitnami grafana-tempo](https://github.com/bitnami/bitnami-docker-grafana-tempo) image stores the grafana-tempo `ingester` data at the `/bitnami` path of the container. Persistent Volume Claims are used to keep the data across deployments. [Learn more about persistence in the chart documentation](https://docs.bitnami.com/kubernetes/apps/grafana-tempo/configuration/chart-persistence/). + +### Additional environment variables + +In case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the `extraEnvVars` property inside each of the subsections: `distributor`, `compactor`, `ingester`, `querier`, `queryFrontend` and `vulture`. + +```yaml +compactor: + extraEnvVars: + - name: LOG_LEVEL + value: error + +distributor: + extraEnvVars: + - name: LOG_LEVEL + value: error + +ingester: + extraEnvVars: + - name: LOG_LEVEL + value: error + +querier: + extraEnvVars: + - name: LOG_LEVEL + value: error + +queryFrontend: + extraEnvVars: + - name: LOG_LEVEL + value: error + +vulture: + extraEnvVars: + - name: LOG_LEVEL + value: error +``` + +Alternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `extraEnvVarsCM` or the `extraEnvVarsSecret` values. + +### Sidecars + +If additional containers are needed in the same pod as grafana-tempo (such as additional metrics or logging exporters), they can be defined using the `sidecars` parameter inside each of the subsections: `distributor`, `compactor`, `ingester`, `querier`, `queryFrontend` and `vulture` . If these sidecars export extra ports, extra port definitions can be added using the `service.extraPorts` parameter. [Learn more about configuring and using sidecar containers](https://docs.bitnami.com/kubernetes/apps/grafana-tempo/administration/configure-use-sidecars/). + +### Pod affinity + +This chart allows you to set your custom affinity using the `affinity` parameter. Find more information about Pod affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). + +As an alternative, use one of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/master/bitnami/common#affinities) chart. To do so, set the `podAffinityPreset`, `podAntiAffinityPreset`, or `nodeAffinityPreset` parameters inside each of the subsections: `distributor`, `compactor`, `ingester`, `querier`, `queryFrontend` and `vulture`. + +### External cache support + +You may want to have Grafana Tempo connect to an external Memcached rather than installing one inside your cluster. Typical reasons for this are to use a managed cache service, or to share a common cache server for all your applications. To achieve this, the chart allows you to specify credentials for an external database with the [`externalMemcached` parameter](#parameters). You should also disable the Memcached installation with the `memcached.enabled` option. Here is an example: + +```console +memcached.enabled=false +externalMemcached.host=myexternalhost +externalMemcached.port=11211 +``` + +## Troubleshooting + +Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). diff --git a/bitnami/grafana-tempo/templates/NOTES.txt b/bitnami/grafana-tempo/templates/NOTES.txt new file mode 100644 index 000000000..4af76e025 --- /dev/null +++ b/bitnami/grafana-tempo/templates/NOTES.txt @@ -0,0 +1,33 @@ +** Please be patient while the chart is being deployed ** + +Installed components: + + * ingester + * distributor + * querier + * query-frontend + * compactor + {{- if .Values.vulture.enabled }} + * vulture + {{- end }} + +1. Get the query-frontend URL by running these commands: + +{{- if contains "NodePort" .Values.queryFrontend.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "grafana-tempo.query-frontend.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.queryFrontend.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ template "common.names.fullname" . }} + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "common.names.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.queryFrontend.service.port }} +{{- else if contains "ClusterIP" .Values.queryFrontend.service.type }} + echo "The Query Frontend is available at http://127.0.0.1:{{ .Values.queryFrontend.service.port }}" + kubectl port-forward svc/{{ template "grafana-tempo.query-frontend.fullname" . }} {{ .Values.queryFrontend.service.port }}:{{ .Values.queryFrontend.service.port }} & +{{- end }} + +{{- include "common.warnings.rollingTag" .Values.tempo.image }} +{{- include "common.warnings.rollingTag" .Values.queryFrontend.query.image }} +{{- include "common.warnings.rollingTag" .Values.vulture.image }} +{{- include "grafana-tempo.validateValues" . }} diff --git a/bitnami/grafana-tempo/templates/_helpers.tpl b/bitnami/grafana-tempo/templates/_helpers.tpl new file mode 100644 index 000000000..67fc3c308 --- /dev/null +++ b/bitnami/grafana-tempo/templates/_helpers.tpl @@ -0,0 +1,196 @@ +{{/* +Return the proper Grafana Tempo image name +*/}} +{{- define "grafana-tempo.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.tempo.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper Grafana Tempo compactor fullname +*/}} +{{- define "grafana-tempo.compactor.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "compactor" -}} +{{- end -}} + +{{/* +Return the proper Grafana Tempo distributor fullname +*/}} +{{- define "grafana-tempo.distributor.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "distributor" -}} +{{- end -}} + +{{/* +Return the proper Grafana Tempo ingester fullname +*/}} +{{- define "grafana-tempo.ingester.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "ingester" -}} +{{- end -}} + +{{/* +Return the proper Grafana Tempo querier fullname +*/}} +{{- define "grafana-tempo.querier.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "querier" -}} +{{- end -}} + +{{/* +Return the proper Grafana Tempo query-frontend fullname +*/}} +{{- define "grafana-tempo.query-frontend.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "query-frontend" -}} +{{- end -}} + +{{/* +Return the proper Grafana Tempo vulture fullname +*/}} +{{- define "grafana-tempo.vulture.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "vulture" -}} +{{- end -}} + +{{/* +Return the proper Grafana Tempo gossip-ring fullname +*/}} +{{- define "grafana-tempo.gossip-ring.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "gossip-ring" -}} +{{- end -}} + +{{/* +Return the proper Grafana Tempo image name +*/}} +{{- define "grafana-tempo.queryImage" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.queryFrontend.query.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper Grafana Tempo image name +*/}} +{{- define "grafana-tempo.volumePermissions.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.volumePermissions.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper Grafana Tempo image name +*/}} +{{- define "grafana-tempo.vultureImage" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.vulture.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "grafana-tempo.imagePullSecrets" -}} +{{- include "common.images.pullSecrets" (dict "images" (list .Values.tempo.image .Values.vulture.image .Values.queryFrontend.query.image .Values.volumePermissions.image) "global" .Values.global) -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "grafana-tempo.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (printf "%s" (include "common.names.fullname" .)) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Get the Tempo configuration configmap. +*/}} +{{- define "grafana-tempo.tempoConfigmapName" -}} +{{- if .Values.tempo.existingConfigmap -}} + {{- .Values.tempo.existingConfigmap -}} +{{- else }} + {{- printf "%s-tempo" (include "common.names.fullname" . ) -}} +{{- end -}} +{{- end -}} + +{{/* +Get the Tempo overrides configmap. +*/}} +{{- define "grafana-tempo.overridesConfigmapName" -}} +{{- if .Values.tempo.existingOverridesConfigmap -}} + {{- .Values.tempo.existingOverridesConfigmap -}} +{{- else }} + {{- printf "%s-overrides" (include "common.names.fullname" . ) -}} +{{- end -}} +{{- end -}} + +{{/* +Get the Tempo overrides configmap. +*/}} +{{- define "grafana-tempo.queryConfigmapName" -}} +{{- if .Values.queryFrontend.query.existingConfigmap -}} + {{- .Values.queryFrontend.query.existingConfigmap -}} +{{- else }} + {{- include "grafana-tempo.query-frontend.fullname" . -}} +{{- end -}} +{{- end -}} + +{{/* +Create a default fully qualified memcached name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "grafana-tempo.memcached.fullname" -}} +{{- $name := default "memcached" .Values.memcached.nameOverride -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified memcached name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "grafana-tempo.memcached.url" -}} +{{- $port := "" -}} +{{- if .Values.externalMemcached.host -}} +{{- $servicePortString := printf "%v" .Values.externalMemcached.port -}} +{{- if (not (eq $servicePortString "11211")) -}} + {{- $port = printf ":%s" $servicePortString -}} +{{- end -}} +{{- printf "%s%s" .Values.externalMemcached.host $port }} +{{- else -}} +{{- $servicePortString := printf "%v" .Values.memcached.service.port -}} +{{- if (not (eq $servicePortString "11211")) -}} + {{- $port = printf ":%s" $servicePortString -}} +{{- end -}} +{{- printf "%s%s" (include "grafana-tempo.memcached.fullname" .) $port }} +{{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message. +*/}} +{{- define "grafana-tempo.validateValues" -}} +{{- $messages := list -}} +{{- $messages := append $messages (include "grafana-tempo.validateValues.vulture" .) -}} +{{- $messages := append $messages (include "grafana-tempo.validateValues.memcached" .) -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} + +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message -}} +{{- end -}} +{{- end -}} + +{{/* Validate values of Grafana Tempo - Memcached */}} +{{- define "grafana-tempo.validateValues.vulture" -}} +{{- if not (and .Values.vulture.enabled .Values.tempo.traces.jaeger.grpc) -}} +grafana-tempo: Vulture and GRPC + In order to use Vulture, Jaeger GRPC traces must be enabled. Please set tempo.traces.jaeger.grpc=true when installing the chart. +{{- end -}} +{{- end -}} + +{{/* Validate values of Grafana Tempo - Memcached */}} +{{- define "grafana-tempo.validateValues.memcached" -}} +{{- if and .Values.memcached.enabled .Values.externalMemcached.host -}} +jupyherhub: Memcached + You can only use one database. + Please choose installing a Memcached chart (--set memcached.enabled=true) or + using an external database (--set externalMemcached.host) +{{- end -}} +{{- if and (not .Values.memcached.enabled) (not .Values.externalMemcached.host) -}} +jupyherhub: NoMemcached + You did not set any cache. + Please choose installing a Memcached chart (--set memcached.enabled=true) or + using an external instance (--set externalMemcached.host) +{{- end -}} +{{- end -}} diff --git a/bitnami/grafana-tempo/templates/compactor/deployment.yaml b/bitnami/grafana-tempo/templates/compactor/deployment.yaml new file mode 100644 index 000000000..e57e10295 --- /dev/null +++ b/bitnami/grafana-tempo/templates/compactor/deployment.yaml @@ -0,0 +1,159 @@ +{{- if .Values.compactor.enabled }} +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "grafana-tempo.compactor.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: compactor + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.compactor.replicaCount }} + {{- if .Values.compactor.updateStrategy }} + strategy: {{- toYaml .Values.compactor.updateStrategy | nindent 4 }} + {{- end }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: compactor + template: + metadata: + {{- if .Values.compactor.podAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: compactor + tempo-gossip-member: "true" + {{- if .Values.compactor.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.compactor.podLabels "context" $) | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ template "grafana-tempo.serviceAccountName" . }} + {{- include "grafana-tempo.imagePullSecrets" . | nindent 6 }} + {{- if .Values.compactor.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.compactor.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.compactor.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.compactor.podAffinityPreset "component" "compactor" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.compactor.podAntiAffinityPreset "component" "compactor" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.compactor.nodeAffinityPreset.type "key" .Values.compactor.nodeAffinityPreset.key "values" .Values.compactor.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.compactor.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.compactor.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.compactor.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.tolerations "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.compactor.priorityClassName }} + priorityClassName: {{ .Values.compactor.priorityClassName | quote }} + {{- end }} + {{- if .Values.compactor.podSecurityContext.enabled }} + securityContext: {{- omit .Values.compactor.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + initContainers: + {{- if .Values.compactor.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.compactor.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: grafana-tempo-compactor + image: {{ template "grafana-tempo.image" . }} + imagePullPolicy: {{ .Values.tempo.image.pullPolicy }} + {{- if .Values.compactor.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.compactor.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.compactor.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.compactor.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.compactor.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.args "context" $) | nindent 12 }} + {{- else }} + args: + - -target=compactor + - -config.file=/bitnami/grafana-tempo/conf/tempo.yaml + - -mem-ballast-size-mbs={{ .Values.tempo.memBallastSizeMbs }} + {{- end }} + {{- if .Values.compactor.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.compactor.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.compactor.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.compactor.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.compactor.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.tempo.containerPort }} + name: http + - containerPort: {{ .Values.tempo.gossipRing.containerPort }} + name: http-memberlist + {{- if .Values.compactor.resources }} + resources: {{- toYaml .Values.compactor.resources | nindent 12 }} + {{- end }} + {{- if .Values.compactor.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.compactor.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.compactor.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.compactor.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.compactor.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.compactor.livenessProbe.failureThreshold }} + {{- else if .Values.compactor.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.customLivenessProbe "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.compactor.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.compactor.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.compactor.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.compactor.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.compactor.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.compactor.readinessProbe.failureThreshold }} + {{- else if .Values.compactor.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.customReadinessProbe "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: tempo-config + mountPath: /bitnami/grafana-tempo/conf/tempo.yaml + subPath: tempo.yaml + - name: overrides-config + mountPath: /bitnami/grafana-tempo/conf/overrides.yaml + subPath: overrides.yaml + - name: data + mountPath: {{ .Values.tempo.dataDir }} + {{- if .Values.compactor.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.compactor.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.compactor.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.compactor.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + # NOTE: The upstream chart does not create a PVC for this, we assume that it is just for tmp data + - name: data + emptyDir: {} + - name: tempo-config + configMap: + name: {{ template "grafana-tempo.tempoConfigmapName" . }} + - name: overrides-config + configMap: + name: {{ template "grafana-tempo.overridesConfigmapName" . }} + {{- if .Values.compactor.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.compactor.extraVolumes "context" $) | nindent 8 }} + {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/compactor/service.yaml b/bitnami/grafana-tempo/templates/compactor/service.yaml new file mode 100644 index 000000000..cc2cb0d9d --- /dev/null +++ b/bitnami/grafana-tempo/templates/compactor/service.yaml @@ -0,0 +1,47 @@ +{{- if .Values.compactor.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.compactor.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: compactor + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.commonAnnotations .Values.compactor.service.annotations }} + annotations: + {{- if .Values.compactor.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.compactor.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.compactor.service.type }} + {{- if .Values.compactor.service.clusterIP }} + clusterIP: {{ .Values.compactor.service.clusterIP }} + {{- end }} + {{- if (or (eq .Values.compactor.service.type "LoadBalancer") (eq .Values.compactor.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.compactor.service.externalTrafficPolicy | quote }} + {{- end }} + {{ if eq .Values.compactor.service.type "LoadBalancer" }} + loadBalancerSourceRanges: {{ .Values.compactor.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.compactor.service.type "LoadBalancer") (not (empty .Values.compactor.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.compactor.service.loadBalancerIP }} + {{- end }} + ports: + - name: http + port: {{ .Values.compactor.service.port }} + targetPort: http + protocol: TCP + {{- if (and (or (eq .Values.compactor.service.type "NodePort") (eq .Values.compactor.service.type "LoadBalancer")) (not (empty .Values.compactor.service.nodePorts.http))) }} + nodePort: {{ .Values.compactor.service.nodePorts.http }} + {{- else if eq .Values.compactor.service.type "ClusterIP" }} + nodePort: null + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: compactor +{{- end }} diff --git a/bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml b/bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml new file mode 100644 index 000000000..c25ccb2b9 --- /dev/null +++ b/bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.compactor.enabled .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana-tempo.compactor.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: compactor + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: compactor + endpoints: + - port: http + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/distributor/deployment.yaml b/bitnami/grafana-tempo/templates/distributor/deployment.yaml new file mode 100644 index 000000000..6ebb54a71 --- /dev/null +++ b/bitnami/grafana-tempo/templates/distributor/deployment.yaml @@ -0,0 +1,194 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "grafana-tempo.distributor.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: distributor + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.distributor.replicaCount }} + {{- if .Values.distributor.updateStrategy }} + strategy: {{- toYaml .Values.distributor.updateStrategy | nindent 4 }} + {{- end }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: distributor + template: + metadata: + {{- if .Values.distributor.podAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: distributor + tempo-gossip-member: "true" + {{- if .Values.distributor.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.distributor.podLabels "context" $) | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ template "grafana-tempo.serviceAccountName" . }} + {{- include "grafana-tempo.imagePullSecrets" . | nindent 6 }} + {{- if .Values.distributor.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.distributor.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.distributor.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.distributor.podAffinityPreset "component" "distributor" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.distributor.podAntiAffinityPreset "component" "distributor" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.distributor.nodeAffinityPreset.type "key" .Values.distributor.nodeAffinityPreset.key "values" .Values.distributor.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.distributor.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.distributor.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.distributor.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.tolerations "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.distributor.priorityClassName }} + priorityClassName: {{ .Values.distributor.priorityClassName | quote }} + {{- end }} + {{- if .Values.distributor.podSecurityContext.enabled }} + securityContext: {{- omit .Values.distributor.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + initContainers: + {{- if .Values.distributor.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.distributor.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: grafana-tempo-distributor + image: {{ template "grafana-tempo.image" . }} + imagePullPolicy: {{ .Values.tempo.image.pullPolicy }} + {{- if .Values.distributor.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.distributor.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.distributor.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.distributor.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.distributor.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.args "context" $) | nindent 12 }} + {{- else }} + args: + - -target=distributor + - -config.file=/bitnami/grafana-tempo/conf/tempo.yaml + - -mem-ballast-size-mbs={{ .Values.tempo.memBallastSizeMbs }} + {{- end }} + {{- if .Values.distributor.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.distributor.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.distributor.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.distributor.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.distributor.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.tempo.containerPort }} + name: http + - containerPort: {{ .Values.tempo.gossipRing.containerPort }} + name: http-memberlist + - containerPort: {{ .Values.tempo.grpcContainerPort }} + name: grpc + {{- if .Values.tempo.traces.jaeger.thriftCompact }} + - containerPort: 6831 + name: jaeger-compact + protocol: UDP + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftBinary }} + - containerPort: 6832 + name: jaeger-binary + protocol: UDP + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftHttp }} + - containerPort: 14268 + name: jaeger-http + protocol: TCP + {{- end }} + {{- if .Values.tempo.traces.jaeger.grpc }} + - containerPort: 14250 + name: jaeger-grpc + protocol: TCP + {{- end }} + {{- if .Values.tempo.traces.zipkin }} + - containerPort: 9411 + name: zipkin + protocol: TCP + {{- end }} + {{- if .Values.tempo.traces.otlp.http }} + - containerPort: 55681 + name: otlp-http + protocol: TCP + {{- end }} + {{- if .Values.tempo.traces.otlp.grpc }} + - containerPort: 4317 + name: otlp-grpc + protocol: TCP + {{- end }} + {{- if .Values.tempo.traces.opencensus }} + - containerPort: 55678 + name: opencensus + protocol: TCP + {{- end }} + {{- if .Values.distributor.resources }} + resources: {{- toYaml .Values.distributor.resources | nindent 12 }} + {{- end }} + {{- if .Values.distributor.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.distributor.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.distributor.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.distributor.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.distributor.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.distributor.livenessProbe.failureThreshold }} + {{- else if .Values.distributor.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.customLivenessProbe "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.distributor.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.distributor.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.distributor.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.distributor.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.distributor.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.distributor.readinessProbe.failureThreshold }} + {{- else if .Values.distributor.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.distributor.customReadinessProbe "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: tempo-config + mountPath: /bitnami/grafana-tempo/conf/tempo.yaml + subPath: tempo.yaml + - name: overrides-config + mountPath: /bitnami/grafana-tempo/conf/overrides.yaml + subPath: overrides.yaml + {{- if .Values.distributor.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.distributor.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.distributor.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.distributor.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + - name: tempo-config + configMap: + name: {{ template "grafana-tempo.tempoConfigmapName" . }} + - name: overrides-config + configMap: + name: {{ template "grafana-tempo.overridesConfigmapName" . }} + {{- if .Values.distributor.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.distributor.extraVolumes "context" $) | nindent 8 }} + {{- end }} diff --git a/bitnami/grafana-tempo/templates/distributor/service.yaml b/bitnami/grafana-tempo/templates/distributor/service.yaml new file mode 100644 index 000000000..5e89677b4 --- /dev/null +++ b/bitnami/grafana-tempo/templates/distributor/service.yaml @@ -0,0 +1,107 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.distributor.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: distributor + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.commonAnnotations .Values.distributor.service.annotations }} + annotations: + {{- if .Values.distributor.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.distributor.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.distributor.service.type }} + {{- if .Values.distributor.service.clusterIP }} + clusterIP: {{ .Values.distributor.service.clusterIP }} + {{- end }} + {{- if (or (eq .Values.distributor.service.type "LoadBalancer") (eq .Values.distributor.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.distributor.service.externalTrafficPolicy | quote }} + {{- end }} + {{ if eq .Values.distributor.service.type "LoadBalancer" }} + loadBalancerSourceRanges: {{ .Values.distributor.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.distributor.service.type "LoadBalancer") (not (empty .Values.distributor.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.distributor.service.loadBalancerIP }} + {{- end }} + ports: + - name: http + port: {{ .Values.distributor.service.port }} + targetPort: http + protocol: TCP + {{- if (and (or (eq .Values.distributor.service.type "NodePort") (eq .Values.distributor.service.type "LoadBalancer")) (not (empty .Values.distributor.service.nodePorts.http))) }} + nodePort: {{ .Values.distributor.service.nodePorts.http }} + {{- else if eq .Values.distributor.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: grpc + port: {{ .Values.distributor.service.grpcPort }} + protocol: TCP + targetPort: grpc + {{- if (and (or (eq .Values.distributor.service.type "NodePort") (eq .Values.distributor.service.type "LoadBalancer")) (not (empty .Values.distributor.service.nodePorts.grpc))) }} + nodePort: {{ .Values.distributor.service.nodePorts.grpc }} + {{- else if eq .Values.distributor.service.type "ClusterIP" }} + nodePort: null + {{- end }} + ## From here we use non-configurable, standard ports + {{- if .Values.tempo.traces.jaeger.thriftCompact }} + - name: distributor-jaeger-thrift-compact + port: 6831 + protocol: UDP + targetPort: jaeger-compact + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftBinary }} + - name: distributor-jaeger-thrift-binary + port: 6832 + protocol: UDP + targetPort: jaeger-binary + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftHttp }} + - name: distributor-jaeger-thrift-http + port: 14268 + protocol: TCP + targetPort: jaeger-http + {{- end }} + {{- if .Values.tempo.traces.jaeger.grpc }} + - name: distributor-jaeger-grpc + port: 14250 + protocol: TCP + targetPort: jaeger-grpc + {{- end }} + {{- if .Values.tempo.traces.zipkin }} + - name: distributor-zipkin + port: 9411 + protocol: TCP + targetPort: zipkin + {{- end }} + {{- if .Values.tempo.traces.otlp.http }} + - name: distributor-otlp-http + port: 55681 + protocol: TCP + targetPort: otlp-http + {{- end }} + {{- if .Values.tempo.traces.otlp.grpc }} + - name: distributor-otlp-grpc + port: 4317 + protocol: TCP + targetPort: otlp-grpc + - name: distributor-otlp-legacy + port: 55680 + protocol: TCP + targetPort: otlp-grpc + {{- end }} + {{- if .Values.tempo.traces.opencensus }} + - name: distributor-opencensus + port: 55678 + protocol: TCP + targetPort: opencensus + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: distributor diff --git a/bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml b/bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml new file mode 100644 index 000000000..69e2f4483 --- /dev/null +++ b/bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana-tempo.distributor.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: distributor + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: distributor + endpoints: + - port: http + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/extra-list.yaml b/bitnami/grafana-tempo/templates/extra-list.yaml new file mode 100644 index 000000000..9ac65f9e1 --- /dev/null +++ b/bitnami/grafana-tempo/templates/extra-list.yaml @@ -0,0 +1,4 @@ +{{- range .Values.extraDeploy }} +--- +{{ include "common.tplvalues.render" (dict "value" . "context" $) }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/gossip-ring-headless-service.yaml b/bitnami/grafana-tempo/templates/gossip-ring-headless-service.yaml new file mode 100644 index 000000000..9b057b31b --- /dev/null +++ b/bitnami/grafana-tempo/templates/gossip-ring-headless-service.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.gossip-ring.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: tempo + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.commonAnnotations .Values.tempo.gossipRing.service.annotations }} + annotations: + {{- if .Values.tempo.gossipRing.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.tempo.gossipRing.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} +spec: + type: ClusterIP + publishNotReadyAddresses: true + clusterIP: None + ports: + - name: http + port: {{ .Values.tempo.gossipRing.service.port }} + targetPort: http-memberlist + protocol: TCP + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + tempo-gossip-member: "true" diff --git a/bitnami/grafana-tempo/templates/ingester/service.yaml b/bitnami/grafana-tempo/templates/ingester/service.yaml new file mode 100644 index 000000000..33b6a2e9e --- /dev/null +++ b/bitnami/grafana-tempo/templates/ingester/service.yaml @@ -0,0 +1,54 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.ingester.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: ingester + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.commonAnnotations .Values.ingester.service.annotations }} + annotations: + {{- if .Values.ingester.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.ingester.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.ingester.service.type }} + {{- if .Values.ingester.service.clusterIP }} + clusterIP: {{ .Values.ingester.service.clusterIP }} + {{- end }} + {{- if (or (eq .Values.ingester.service.type "LoadBalancer") (eq .Values.ingester.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.ingester.service.externalTrafficPolicy | quote }} + {{- end }} + {{ if eq .Values.ingester.service.type "LoadBalancer" }} + loadBalancerSourceRanges: {{ .Values.ingester.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.ingester.service.type "LoadBalancer") (not (empty .Values.ingester.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.ingester.service.loadBalancerIP }} + {{- end }} + ports: + - name: http + port: {{ .Values.ingester.service.port }} + targetPort: http + protocol: TCP + {{- if (and (or (eq .Values.ingester.service.type "NodePort") (eq .Values.ingester.service.type "LoadBalancer")) (not (empty .Values.ingester.service.nodePorts.http))) }} + nodePort: {{ .Values.ingester.service.nodePorts.http }} + {{- else if eq .Values.ingester.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: grpc + port: {{ .Values.ingester.service.grpcPort }} + targetPort: grpc + protocol: TCP + {{- if (and (or (eq .Values.ingester.service.type "NodePort") (eq .Values.ingester.service.type "LoadBalancer")) (not (empty .Values.ingester.service.nodePorts.grpc))) }} + nodePort: {{ .Values.ingester.service.nodePorts.grpc }} + {{- else if eq .Values.ingester.service.type "ClusterIP" }} + nodePort: null + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: ingester diff --git a/bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml b/bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml new file mode 100644 index 000000000..94da51080 --- /dev/null +++ b/bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana-tempo.ingester.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: ingester + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: ingester + endpoints: + - port: http + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/ingester/statefulset.yaml b/bitnami/grafana-tempo/templates/ingester/statefulset.yaml new file mode 100644 index 000000000..561f168af --- /dev/null +++ b/bitnami/grafana-tempo/templates/ingester/statefulset.yaml @@ -0,0 +1,209 @@ +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ template "grafana-tempo.ingester.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: ingester + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.ingester.replicaCount }} + {{- if .Values.ingester.updateStrategy }} + updateStrategy: {{- toYaml .Values.ingester.updateStrategy | nindent 4 }} + {{- end }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: ingester + serviceName: {{ template "grafana-tempo.ingester.fullname" . }} + template: + metadata: + {{- if .Values.ingester.podAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: ingester + tempo-gossip-member: "true" + {{- if .Values.ingester.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.ingester.podLabels "context" $) | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ template "grafana-tempo.serviceAccountName" . }} + {{- include "grafana-tempo.imagePullSecrets" . | nindent 6 }} + {{- if .Values.ingester.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.ingester.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.ingester.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.ingester.podAffinityPreset "component" "ingester" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.ingester.podAntiAffinityPreset "component" "ingester" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.ingester.nodeAffinityPreset.type "key" .Values.ingester.nodeAffinityPreset.key "values" .Values.ingester.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.ingester.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.ingester.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.ingester.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.tolerations "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.ingester.priorityClassName }} + priorityClassName: {{ .Values.ingester.priorityClassName | quote }} + {{- end }} + {{- if .Values.ingester.podSecurityContext.enabled }} + securityContext: {{- omit .Values.ingester.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + initContainers: + {{- if .Values.ingester.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.ingester.initContainers "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.volumePermissions.enabled .Values.ingester.persistence.enabled }} + - name: volume-permissions + image: {{ include "grafana-tempo.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + args: + - | + mkdir -p {{ .Values.tempo.dataDir }}{{- if .Values.ingester.persistence.subPath }}/{{ .Values.ingester.persistence.subPath }}{{- end }} + {{- if and .Values.podSecurityContext.enabled .Values.containerSecurityContext.enabled }} + chown -R "{{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }}" "{{ .Values.tempo.dataDir }}{{- if .Values.ingester.persistence.subPath }}/{{ .Values.ingester.persistence.subPath }}{{- end }}" + {{- end }} + {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} + securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "runAsUser" | toYaml | nindent 12 }} + {{- else }} + securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: {{ .Values.tempo.dataDir }} + {{- end }} + containers: + - name: grafana-tempo-ingester + image: {{ template "grafana-tempo.image" . }} + imagePullPolicy: {{ .Values.tempo.image.pullPolicy }} + {{- if .Values.ingester.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.ingester.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.ingester.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.ingester.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.ingester.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.args "context" $) | nindent 12 }} + {{- else }} + args: + - -target=ingester + - -config.file=/bitnami/grafana-tempo/conf/tempo.yaml + - -mem-ballast-size-mbs={{ .Values.tempo.memBallastSizeMbs }} + {{- end }} + {{- if .Values.ingester.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.ingester.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.ingester.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.ingester.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.ingester.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.tempo.containerPort }} + name: http + - containerPort: {{ .Values.tempo.gossipRing.containerPort }} + name: http-memberlist + - containerPort: {{ .Values.tempo.grpcContainerPort }} + name: grpc + {{- if .Values.ingester.resources }} + resources: {{- toYaml .Values.ingester.resources | nindent 12 }} + {{- end }} + {{- if .Values.ingester.livenessProbe.enabled }} + livenessProbe: + tcpSocket: + port: http + initialDelaySeconds: {{ .Values.ingester.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.ingester.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.ingester.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.ingester.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.ingester.livenessProbe.failureThreshold }} + {{- else if .Values.ingester.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.customLivenessProbe "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.ingester.readinessProbe.enabled }} + readinessProbe: + tcpSocket: + port: http + initialDelaySeconds: {{ .Values.ingester.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.ingester.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.ingester.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.ingester.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.ingester.readinessProbe.failureThreshold }} + {{- else if .Values.ingester.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.customReadinessProbe "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: tempo-config + mountPath: /bitnami/grafana-tempo/conf/tempo.yaml + subPath: tempo.yaml + - name: overrides-config + mountPath: /bitnami/grafana-tempo/conf/overrides.yaml + subPath: overrides.yaml + - name: data + mountPath: {{ .Values.tempo.dataDir }} + {{- if .Values.ingester.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.ingester.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.ingester.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.ingester.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + - name: tempo-config + configMap: + name: {{ template "grafana-tempo.tempoConfigmapName" . }} + - name: overrides-config + configMap: + name: {{ template "grafana-tempo.overridesConfigmapName" . }} + {{- if .Values.ingester.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.ingester.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if not .Values.ingester.persistence.enabled }} + - name: data + emptyDir: {} + {{- else }} + volumeClaimTemplates: + - metadata: + name: data + {{- if .Values.ingester.persistence.annotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.persistence.annotations "context" $) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.ingester.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.ingester.persistence.size | quote }} + {{- if .Values.ingester.persistence.volumeClaimTemplates.requests }} + {{- include "common.tplvalues.render" (dict "value" .Values.ingester.persistence.volumeClaimTemplates.requests "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.ingester.persistence.volumeClaimTemplates.dataSource }} + dataSource: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.persistence.volumeClaimTemplates.dataSource "context" $) | nindent 10 }} + {{- end }} + {{- if .Values.ingester.persistence.volumeClaimTemplates.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.ingester.persistence.volumeClaimTemplates.selector "context" $) | nindent 10 }} + {{- end }} + {{ include "common.storage.class" (dict "persistence" .Values.ingester.persistence "global" .Values.global) }} + {{- end }} diff --git a/bitnami/grafana-tempo/templates/overrides-configmap.yaml b/bitnami/grafana-tempo/templates/overrides-configmap.yaml new file mode 100644 index 000000000..bd6e73b13 --- /dev/null +++ b/bitnami/grafana-tempo/templates/overrides-configmap.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "common.names.fullname" . }}-overrides + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: tempo + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + overrides.yaml: |- + {{- include "common.tplvalues.render" (dict "value" .Values.tempo.overridesConfiguration "context" $) | nindent 4 }} diff --git a/bitnami/grafana-tempo/templates/querier/deployment.yaml b/bitnami/grafana-tempo/templates/querier/deployment.yaml new file mode 100644 index 000000000..687e7ecd2 --- /dev/null +++ b/bitnami/grafana-tempo/templates/querier/deployment.yaml @@ -0,0 +1,159 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "grafana-tempo.querier.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: querier + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.querier.replicaCount }} + {{- if .Values.querier.updateStrategy }} + strategy: {{- toYaml .Values.querier.updateStrategy | nindent 4 }} + {{- end }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: querier + template: + metadata: + {{- if .Values.querier.podAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.querier.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: querier + tempo-gossip-member: "true" + {{- if .Values.querier.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.querier.podLabels "context" $) | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ template "grafana-tempo.serviceAccountName" . }} + {{- include "grafana-tempo.imagePullSecrets" . | nindent 6 }} + {{- if .Values.querier.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.querier.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.querier.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.querier.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.querier.podAffinityPreset "component" "querier" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.querier.podAntiAffinityPreset "component" "querier" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.querier.nodeAffinityPreset.type "key" .Values.querier.nodeAffinityPreset.key "values" .Values.querier.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.querier.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.querier.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.querier.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.querier.tolerations "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.querier.priorityClassName }} + priorityClassName: {{ .Values.querier.priorityClassName | quote }} + {{- end }} + {{- if .Values.querier.podSecurityContext.enabled }} + securityContext: {{- omit .Values.querier.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + initContainers: + {{- if .Values.querier.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.querier.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: grafana-tempo-querier + image: {{ template "grafana-tempo.image" . }} + imagePullPolicy: {{ .Values.tempo.image.pullPolicy }} + {{- if .Values.querier.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.querier.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.querier.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.querier.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.querier.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.querier.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.querier.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.querier.args "context" $) | nindent 12 }} + {{- else }} + args: + - -target=querier + - -config.file=/bitnami/grafana-tempo/conf/tempo.yaml + - -mem-ballast-size-mbs={{ .Values.tempo.memBallastSizeMbs }} + {{- end }} + {{- if .Values.querier.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.querier.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.querier.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.querier.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.querier.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.querier.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.tempo.containerPort }} + name: http + - containerPort: {{ .Values.tempo.gossipRing.containerPort }} + name: http-memberlist + - containerPort: {{ .Values.tempo.grpcContainerPort }} + name: grpc + {{- if .Values.querier.resources }} + resources: {{- toYaml .Values.querier.resources | nindent 12 }} + {{- end }} + {{- if .Values.querier.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.querier.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.querier.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.querier.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.querier.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.querier.livenessProbe.failureThreshold }} + {{- else if .Values.querier.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.querier.customLivenessProbe "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.querier.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.querier.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.querier.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.querier.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.querier.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.querier.readinessProbe.failureThreshold }} + {{- else if .Values.querier.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.querier.customReadinessProbe "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: tempo-config + mountPath: /bitnami/grafana-tempo/conf/tempo.yaml + subPath: tempo.yaml + - name: overrides-config + mountPath: /bitnami/grafana-tempo/conf/overrides.yaml + subPath: overrides.yaml + - name: data + mountPath: {{ .Values.tempo.dataDir }} + {{- if .Values.querier.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.querier.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.querier.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.querier.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + # NOTE: The upstream chart does not create a PVC for this, we assume that it is just for tmp data + - name: data + emptyDir: {} + - name: tempo-config + configMap: + name: {{ template "grafana-tempo.tempoConfigmapName" . }} + - name: overrides-config + configMap: + name: {{ template "grafana-tempo.overridesConfigmapName" . }} + {{- if .Values.querier.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.querier.extraVolumes "context" $) | nindent 8 }} + {{- end }} diff --git a/bitnami/grafana-tempo/templates/querier/service.yaml b/bitnami/grafana-tempo/templates/querier/service.yaml new file mode 100644 index 000000000..2f0f1e8cd --- /dev/null +++ b/bitnami/grafana-tempo/templates/querier/service.yaml @@ -0,0 +1,54 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.querier.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: querier + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.commonAnnotations .Values.querier.service.annotations }} + annotations: + {{- if .Values.querier.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.querier.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.querier.service.type }} + {{- if .Values.querier.service.clusterIP }} + clusterIP: {{ .Values.querier.service.clusterIP }} + {{- end }} + {{- if (or (eq .Values.querier.service.type "LoadBalancer") (eq .Values.querier.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.querier.service.externalTrafficPolicy | quote }} + {{- end }} + {{ if eq .Values.querier.service.type "LoadBalancer" }} + loadBalancerSourceRanges: {{ .Values.querier.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.querier.service.type "LoadBalancer") (not (empty .Values.querier.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.querier.service.loadBalancerIP }} + {{- end }} + ports: + - name: http + port: {{ .Values.querier.service.port }} + targetPort: http + protocol: TCP + {{- if (and (or (eq .Values.querier.service.type "NodePort") (eq .Values.querier.service.type "LoadBalancer")) (not (empty .Values.querier.service.nodePorts.http))) }} + nodePort: {{ .Values.querier.service.nodePorts.http }} + {{- else if eq .Values.querier.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: grpc + port: {{ .Values.querier.service.grpcPort }} + targetPort: grpc + protocol: TCP + {{- if (and (or (eq .Values.querier.service.type "NodePort") (eq .Values.querier.service.type "LoadBalancer")) (not (empty .Values.querier.service.nodePorts.grpc))) }} + nodePort: {{ .Values.querier.service.nodePorts.grpc }} + {{- else if eq .Values.querier.service.type "ClusterIP" }} + nodePort: null + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: querier diff --git a/bitnami/grafana-tempo/templates/querier/servicemonitor.yaml b/bitnami/grafana-tempo/templates/querier/servicemonitor.yaml new file mode 100644 index 000000000..4f3ebfe6e --- /dev/null +++ b/bitnami/grafana-tempo/templates/querier/servicemonitor.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana-tempo.querier.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: querier + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: querier + endpoints: + - port: http + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/deployment.yaml b/bitnami/grafana-tempo/templates/query-frontend/deployment.yaml new file mode 100644 index 000000000..5e42ca08b --- /dev/null +++ b/bitnami/grafana-tempo/templates/query-frontend/deployment.yaml @@ -0,0 +1,227 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "grafana-tempo.query-frontend.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: query-frontend + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.queryFrontend.replicaCount }} + {{- if .Values.queryFrontend.updateStrategy }} + strategy: {{- toYaml .Values.queryFrontend.updateStrategy | nindent 4 }} + {{- end }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: query-frontend + template: + metadata: + {{- if .Values.queryFrontend.podAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: query-frontend + tempo-gossip-member: "true" + {{- if .Values.queryFrontend.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.podLabels "context" $) | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ template "grafana-tempo.serviceAccountName" . }} + {{- include "grafana-tempo.imagePullSecrets" . | nindent 6 }} + {{- if .Values.queryFrontend.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.queryFrontend.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.queryFrontend.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.queryFrontend.podAffinityPreset "component" "query-frontend" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.queryFrontend.podAntiAffinityPreset "component" "query-frontend" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.queryFrontend.nodeAffinityPreset.type "key" .Values.queryFrontend.nodeAffinityPreset.key "values" .Values.queryFrontend.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.queryFrontend.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.queryFrontend.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.queryFrontend.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.tolerations "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.queryFrontend.priorityClassName }} + priorityClassName: {{ .Values.queryFrontend.priorityClassName | quote }} + {{- end }} + {{- if .Values.queryFrontend.podSecurityContext.enabled }} + securityContext: {{- omit .Values.queryFrontend.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + initContainers: + {{- if .Values.queryFrontend.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: grafana-tempo-query-frontend + image: {{ template "grafana-tempo.image" . }} + imagePullPolicy: {{ .Values.tempo.image.pullPolicy }} + {{- if .Values.queryFrontend.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.queryFrontend.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.args "context" $) | nindent 12 }} + {{- else }} + args: + - -target=query-frontend + - -config.file=/bitnami/grafana-tempo/conf/tempo.yaml + - -mem-ballast-size-mbs={{ .Values.tempo.memBallastSizeMbs }} + {{- end }} + {{- if .Values.queryFrontend.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.queryFrontend.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.queryFrontend.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.queryFrontend.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.queryFrontend.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.tempo.containerPort }} + name: http + - containerPort: {{ .Values.tempo.gossipRing.containerPort }} + name: http-memberlist + - containerPort: {{ .Values.tempo.grpcContainerPort }} + name: grpc + {{- if .Values.queryFrontend.resources }} + resources: {{- toYaml .Values.queryFrontend.resources | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.queryFrontend.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.queryFrontend.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.queryFrontend.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.queryFrontend.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.queryFrontend.livenessProbe.failureThreshold }} + {{- else if .Values.queryFrontend.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.customLivenessProbe "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: {{ .Values.queryFrontend.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.queryFrontend.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.queryFrontend.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.queryFrontend.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.queryFrontend.readinessProbe.failureThreshold }} + {{- else if .Values.queryFrontend.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.customReadinessProbe "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: tempo-config + mountPath: /bitnami/grafana-tempo/conf/tempo.yaml + subPath: tempo.yaml + - name: overrides-config + mountPath: /bitnami/grafana-tempo/conf/overrides.yaml + subPath: overrides.yaml + {{- if .Values.queryFrontend.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + - name: grafana-tempo-query + image: {{ template "grafana-tempo.queryImage" . }} + imagePullPolicy: {{ .Values.queryFrontend.query.image.pullPolicy }} + {{- if .Values.queryFrontend.query.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.query.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.queryFrontend.query.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.query.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.query.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.args "context" $) | nindent 12 }} + {{- else }} + args: + - --query.base-path=/ + - --grpc-storage-plugin.configuration-file=/bitnami/grafana-tempo/conf/tempo-query.yaml + - --query.bearer-token-propagation=true + {{- end }} + {{- if .Values.queryFrontend.query.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.queryFrontend.query.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.queryFrontend.query.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.queryFrontend.query.jaegerUIContainerPort }} + name: jaeger-ui + - containerPort: {{ .Values.queryFrontend.query.jaegerMetricsContainerPort }} + name: jaeger-metrics + {{- if .Values.queryFrontend.query.resources }} + resources: {{- toYaml .Values.queryFrontend.query.resources | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.query.livenessProbe.enabled }} + livenessProbe: + tcpSocket: + port: jaeger-ui + initialDelaySeconds: {{ .Values.queryFrontend.query.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.queryFrontend.query.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.queryFrontend.query.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.queryFrontend.query.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.queryFrontend.query.livenessProbe.failureThreshold }} + {{- else if .Values.queryFrontend.query.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.customLivenessProbe "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.query.readinessProbe.enabled }} + readinessProbe: + tcpSocket: + port: jaeger-ui + initialDelaySeconds: {{ .Values.queryFrontend.query.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.queryFrontend.query.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.queryFrontend.query.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.queryFrontend.query.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.queryFrontend.query.readinessProbe.failureThreshold }} + {{- else if .Values.queryFrontend.query.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.customReadinessProbe "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: tempo-query-config + mountPath: /bitnami/grafana-tempo/conf + {{- if .Values.queryFrontend.query.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.queryFrontend.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.queryFrontend.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + - name: tempo-config + configMap: + name: {{ template "grafana-tempo.tempoConfigmapName" . }} + - name: overrides-config + configMap: + name: {{ template "grafana-tempo.overridesConfigmapName" . }} + - name: tempo-query-config + configMap: + name: {{ template "grafana-tempo.queryConfigmapName" . }} + {{- if .Values.queryFrontend.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.extraVolumes "context" $) | nindent 8 }} + {{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml b/bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml new file mode 100644 index 000000000..4effaa3f7 --- /dev/null +++ b/bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.query-frontend.fullname" . }}-headless + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: query-frontend + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + # NOTE: this is based on this https://github.com/grafana/helm-charts/pull/451. Should be reviewed if it is actually necessary in the future + publishNotReadyAddresses: true + type: ClusterIP + clusterIP: None + ports: + - name: http + port: {{ .Values.queryFrontend.service.port }} + targetPort: http + protocol: TCP + - name: grpc + port: {{ .Values.queryFrontend.service.grpcPort }} + targetPort: grpc + protocol: TCP + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: query-frontend diff --git a/bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml b/bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml new file mode 100644 index 000000000..26c907617 --- /dev/null +++ b/bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "grafana-tempo.query-frontend.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: query + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + tempo-query.yaml: |- + {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.configuration "context" $) | nindent 4 }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/service.yaml b/bitnami/grafana-tempo/templates/query-frontend/service.yaml new file mode 100644 index 000000000..e1d470238 --- /dev/null +++ b/bitnami/grafana-tempo/templates/query-frontend/service.yaml @@ -0,0 +1,50 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.query-frontend.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: query-frontend + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.commonAnnotations .Values.queryFrontend.service.annotations }} + annotations: + {{- if .Values.queryFrontend.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.queryFrontend.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.queryFrontend.service.type }} + {{- if .Values.queryFrontend.service.clusterIP }} + clusterIP: {{ .Values.queryFrontend.service.clusterIP }} + {{- end }} + {{- if (or (eq .Values.queryFrontend.service.type "LoadBalancer") (eq .Values.queryFrontend.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.queryFrontend.service.externalTrafficPolicy | quote }} + {{- end }} + {{ if eq .Values.queryFrontend.service.type "LoadBalancer" }} + loadBalancerSourceRanges: {{ .Values.queryFrontend.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.queryFrontend.service.type "LoadBalancer") (not (empty .Values.queryFrontend.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.queryFrontend.service.loadBalancerIP }} + {{- end }} + publishNotReadyAddresses: true + ports: + - name: http + port: {{ .Values.queryFrontend.service.port }} + targetPort: http + protocol: TCP + {{- if (and (or (eq .Values.queryFrontend.service.type "NodePort") (eq .Values.queryFrontend.service.type "LoadBalancer")) (not (empty .Values.queryFrontend.service.nodePorts.http))) }} + nodePort: {{ .Values.queryFrontend.service.nodePorts.http }} + {{- else if eq .Values.queryFrontend.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: grpc + port: {{ .Values.queryFrontend.service.grpcPort }} + targetPort: grpc + protocol: TCP + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: query-frontend diff --git a/bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml b/bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml new file mode 100644 index 000000000..69162d660 --- /dev/null +++ b/bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana-tempo.query-frontend.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: query-frontend + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: query-frontend + endpoints: + - port: http + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/service-account.yaml b/bitnami/grafana-tempo/templates/service-account.yaml new file mode 100644 index 000000000..b066966c9 --- /dev/null +++ b/bitnami/grafana-tempo/templates/service-account.yaml @@ -0,0 +1,15 @@ +{{- if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: tempo + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + name: {{ template "grafana-tempo.serviceAccountName" . }} + namespace: {{ .Release.Namespace | quote }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/tempo-configmap.yaml b/bitnami/grafana-tempo/templates/tempo-configmap.yaml new file mode 100644 index 000000000..105f5a7d4 --- /dev/null +++ b/bitnami/grafana-tempo/templates/tempo-configmap.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "common.names.fullname" . }}-tempo + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: tempo + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + tempo.yaml: |- + {{- include "common.tplvalues.render" (dict "value" .Values.tempo.configuration "context" $) | nindent 4 }} diff --git a/bitnami/grafana-tempo/templates/vulture/deployment.yaml b/bitnami/grafana-tempo/templates/vulture/deployment.yaml new file mode 100644 index 000000000..077ce52d2 --- /dev/null +++ b/bitnami/grafana-tempo/templates/vulture/deployment.yaml @@ -0,0 +1,144 @@ +{{- if .Values.vulture.enabled }} +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "grafana-tempo.vulture.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: vulture + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.vulture.replicaCount }} + {{- if .Values.vulture.updateStrategy }} + strategy: {{- toYaml .Values.vulture.updateStrategy | nindent 4 }} + {{- end }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: vulture + template: + metadata: + {{- if .Values.vulture.podAnnotations }} + annotations: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: vulture + {{- if .Values.vulture.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.vulture.podLabels "context" $) | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ template "grafana-tempo.serviceAccountName" . }} + {{- include "grafana-tempo.imagePullSecrets" . | nindent 6 }} + {{- if .Values.vulture.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.vulture.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.vulture.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.vulture.podAffinityPreset "component" "vulture" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.vulture.podAntiAffinityPreset "component" "vulture" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.vulture.nodeAffinityPreset.type "key" .Values.vulture.nodeAffinityPreset.key "values" .Values.vulture.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.vulture.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.vulture.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.vulture.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.tolerations "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.vulture.priorityClassName }} + priorityClassName: {{ .Values.vulture.priorityClassName | quote }} + {{- end }} + {{- if .Values.vulture.podSecurityContext.enabled }} + securityContext: {{- omit .Values.vulture.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + initContainers: + {{- if .Values.vulture.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.vulture.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: grafana-tempo-vulture + image: {{ template "grafana-tempo.vultureImage" . }} + imagePullPolicy: {{ .Values.vulture.image.pullPolicy }} + {{- if .Values.vulture.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.vulture.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.vulture.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.vulture.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.vulture.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.args "context" $) | nindent 12 }} + {{- else }} + args: + - -prometheus-listen-address=0.0.0.0:{{ .Values.vulture.containerPort }} + - -tempo-push-url=http://{{ template "grafana-tempo.distributor.fullname" . }} + - -tempo-query-url=http://{{ template "grafana-tempo.query-frontend.fullname" . }}:{{ .Values.queryFrontend.service.port }} + {{- end }} + {{- if .Values.vulture.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.vulture.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.vulture.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.vulture.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.vulture.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.vulture.containerPort }} + name: http + {{- if .Values.vulture.resources }} + resources: {{- toYaml .Values.vulture.resources | nindent 12 }} + {{- end }} + {{- if .Values.vulture.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: /metrics + port: http + initialDelaySeconds: {{ .Values.vulture.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.vulture.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.vulture.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.vulture.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.vulture.livenessProbe.failureThreshold }} + {{- else if .Values.vulture.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.customLivenessProbe "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.vulture.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: /metrics + port: http + initialDelaySeconds: {{ .Values.vulture.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.vulture.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.vulture.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.vulture.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.vulture.readinessProbe.failureThreshold }} + {{- else if .Values.vulture.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.customReadinessProbe "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: tempo-config + mountPath: /bitnami/grafana-tempo/conf + {{- if .Values.vulture.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.vulture.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.vulture.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.vulture.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + - name: tempo-config + configMap: + name: {{ template "grafana-tempo.tempoConfigmapName" . }} + {{- if .Values.vulture.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.vulture.extraVolumes "context" $) | nindent 8 }} + {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/vulture/service.yaml b/bitnami/grafana-tempo/templates/vulture/service.yaml new file mode 100644 index 000000000..401f03516 --- /dev/null +++ b/bitnami/grafana-tempo/templates/vulture/service.yaml @@ -0,0 +1,47 @@ +{{- if .Values.vulture.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.vulture.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: vulture + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if or .Values.commonAnnotations .Values.vulture.service.annotations }} + annotations: + {{- if .Values.vulture.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.vulture.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.vulture.service.type }} + {{- if .Values.vulture.service.clusterIP }} + clusterIP: {{ .Values.vulture.service.clusterIP }} + {{- end }} + {{- if (or (eq .Values.vulture.service.type "LoadBalancer") (eq .Values.vulture.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.vulture.service.externalTrafficPolicy | quote }} + {{- end }} + {{ if eq .Values.vulture.service.type "LoadBalancer" }} + loadBalancerSourceRanges: {{ .Values.vulture.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.vulture.service.type "LoadBalancer") (not (empty .Values.vulture.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.vulture.service.loadBalancerIP }} + {{- end }} + ports: + - name: prom-metrics + port: {{ .Values.vulture.service.port }} + targetPort: prom-metrics + protocol: TCP + {{- if (and (or (eq .Values.vulture.service.type "NodePort") (eq .Values.vulture.service.type "LoadBalancer")) (not (empty .Values.vulture.service.nodePorts.http))) }} + nodePort: {{ .Values.vulture.service.nodePorts.http }} + {{- else if eq .Values.vulture.service.type "ClusterIP" }} + nodePort: null + {{- end }} + selector: {{- include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: vulture +{{- end }} diff --git a/bitnami/grafana-tempo/templates/vulture/servicemonitor.yaml b/bitnami/grafana-tempo/templates/vulture/servicemonitor.yaml new file mode 100644 index 000000000..01d709df7 --- /dev/null +++ b/bitnami/grafana-tempo/templates/vulture/servicemonitor.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.vulture.enabled .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana-tempo.vulture.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: vulture + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: vulture + endpoints: + - port: http + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/bitnami/grafana-tempo/values.yaml b/bitnami/grafana-tempo/values.yaml new file mode 100644 index 000000000..c12a95925 --- /dev/null +++ b/bitnami/grafana-tempo/values.yaml @@ -0,0 +1,1897 @@ +## @section Global parameters +## Global Docker image parameters +## Please, note that this will override the image parameters, including dependencies, configured to use the global value +## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass +## + +## @param global.imageRegistry Global Docker image registry +## @param global.imagePullSecrets Global Docker registry secret names as an array +## @param global.storageClass Global StorageClass for Persistent Volume(s) +## +global: + imageRegistry: + ## E.g. + ## imagePullSecrets: + ## - myRegistryKeySecretName + ## + imagePullSecrets: [] + storageClass: + +## @section Common parameters +## + +## @param kubeVersion Override Kubernetes version +## +kubeVersion: +## @param nameOverride String to partially override common.names.fullname +## +nameOverride: +## @param fullnameOverride String to fully override common.names.fullname +## +fullnameOverride: +## @param commonLabels Labels to add to all deployed objects +## +commonLabels: {} +## @param commonAnnotations Annotations to add to all deployed objects +## +commonAnnotations: {} +## @param clusterDomain Kubernetes cluster domain name +## +clusterDomain: cluster.local +## @param extraDeploy Array of extra objects to deploy with the release +## +extraDeploy: [] + +## @section Common Grafana Tempo Parameters +## +tempo: + ## Bitnami Grafana Tempo image + ## ref: https://hub.docker.com/r/bitnami/redis/tags/ + ## @param tempo.image.registry Grafana Tempo image registry + ## @param tempo.image.repository Grafana Tempo image repository + ## @param tempo.image.tag Grafana Tempo image tag (immutable tags are recommended) + ## @param tempo.image.pullPolicy Grafana Tempo image pull policy + ## @param tempo.image.pullSecrets Grafana Tempo image pull secrets + ## + + image: + registry: docker.io + repository: bitnami/grafana-tempo + tag: 1.0.1-debian-10-r0 + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + + ## @param tempo.containerPort Tempo components web port + ## + containerPort: 3100 + ## @param tempo.grpcContainerPort Tempo components GRPC port + ## + grpcContainerPort: 9095 + ## @param tempo.memBallastSizeMbs Tempo components memory ballast size in MB + ## + memBallastSizeMbs: 1024 + ## @param tempo.dataDir Tempo components data directory + ## + dataDir: /bitnami/tempo-grafana/data + traces: + jaeger: + ## @param tempo.traces.jaeger.grpc Enable Tempo to ingest Jaeger GRPC traces + ## + grpc: true + ## @param tempo.traces.jaeger.thriftBinary Enable Tempo to ingest Jaeger Thrift Binary traces + ## + thriftBinary: false + ## @param tempo.traces.jaeger.thriftCompact Enable Tempo to ingest Jaeger Thrift Compact traces + ## + thriftCompact: false + ## @param tempo.traces.jaeger.thriftHttp Enable Tempo to ingest Jaeger Thrift HTTP traces + ## + thriftHttp: true + ## @param tempo.traces.zipkin Enable Tempo to ingest Zipkin traces + ## + zipkin: false + otlp: + ## @param tempo.traces.otlp.http Enable Tempo to ingest Open Telementry HTTP traces + ## + http: false + ## @param tempo.traces.otlp.grpc Enable Tempo to ingest Open Telementry GRPC traces + ## + grpc: false + ## @param tempo.traces.opencensus Enable Tempo to ingest Open Census traces + ## + opencensus: false + + gossipRing: + ## @param tempo.gossipRing.containerPort gossip service HTTP port + ## + containerPort: 7946 + ## gossip service parameters + ## + service: + ## @param tempo.gossipRing.service.port gossip headless service HTTP port + ## + port: 7946 + ## @param tempo.gossipRing.service.annotations Additional custom annotations for gossip headless service + ## + annotations: {} + + ## @param tempo.configuration [string] Tempo components configuration + ## + configuration: | + multitenancy_enabled: false + compactor: + compaction: + block_retention: 48h + ring: + kvstore: + store: memberlist + distributor: + ring: + kvstore: + store: memberlist + receivers: + {{- if or (.Values.tempo.traces.jaeger.thriftCompact) (.Values.tempo.traces.jaeger.thriftBinary) (.Values.tempo.traces.jaeger.thriftHttp) (.Values.tempo.traces.jaeger.grpc) }} + jaeger: + protocols: + {{- if .Values.tempo.traces.jaeger.thriftCompact }} + thrift_compact: + endpoint: 0.0.0.0:6831 + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftBinary }} + thrift_binary: + endpoint: 0.0.0.0:6832 + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftHttp }} + thrift_http: + endpoint: 0.0.0.0:14268 + {{- end }} + {{- if .Values.tempo.traces.jaeger.grpc }} + grpc: + endpoint: 0.0.0.0:14250 + {{- end }} + {{- end }} + {{- if .Values.tempo.traces.zipkin }} + zipkin: + endpoint: 0.0.0.0:9411 + {{- end }} + {{- if or (.Values.tempo.traces.otlp.http) (.Values.tempo.traces.otlp.grpc) }} + otlp: + protocols: + {{- if .Values.tempo.traces.otlp.http }} + http: + endpoint: 0.0.0.0:55681 + {{- end }} + {{- if .Values.tempo.traces.otlp.grpc }} + grpc: + endpoint: 0.0.0.0:4317 + {{- end }} + {{- end }} + {{- if .Values.tempo.traces.opencensus }} + opencensus: + endpoint: 0.0.0.0:55678 + {{- end }} + querier: + frontend_worker: + frontend_address: {{ template "grafana-tempo.query-frontend.fullname" . }}-headless:{{ .Values.queryFrontend.service.grpcPort }} + ingester: + lifecycler: + ring: + replication_factor: 1 + kvstore: + store: memberlist + tokens_file_path: {{ .Values.tempo.dataDir }}/tokens.json + memberlist: + abort_if_cluster_join_fails: false + join_members: + - {{ template "grafana-tempo.gossip-ring.fullname" . }} + overrides: + per_tenant_override_config: /bitnami/grafana-tempo/conf/overrides.yaml + server: + http_listen_port: 3100 + storage: + trace: + backend: local + blocklist_poll: 5m + local: + path: {{ .Values.tempo.dataDir }}/traces + wal: + path: {{ .Values.tempo.dataDir }}/wal + cache: memcached + memcached: + consistent_hash: true + host: {{ template "grafana-tempo.memcached.url" . }} + service: memcache + timeout: 500ms + + ## @param tempo.existingConfigmap name of a ConfigMap with the tempo configuration + ## + existingConfigmap: + + ## @param tempo.overridesConfiguration [string] Tempo components overrides configuration settings + ## + overridesConfiguration: | + overrides: {} + + ## @param tempo.existingOverridesConfigmap name of a ConfigMap with the tempo overrides configuration + ## + existingOverridesConfigmap: + +## @section Compactor Deployment Parameters +## +compactor: + ## @param compactor.enabled Enable compactor deployment + ## + enabled: true + ## @param compactor.replicaCount Number of compactor replicas to deploy + ## + replicaCount: 1 + ## Configure extra options for compactor containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param compactor.livenessProbe.enabled Enable livenessProbe on compactor nodes + ## @param compactor.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param compactor.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param compactor.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param compactor.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param compactor.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param compactor.readinessProbe.enabled Enable readinessProbe on compactor nodes + ## @param compactor.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param compactor.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param compactor.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param compactor.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param compactor.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param compactor.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param compactor.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## compactor resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param compactor.resources.limits The resources limits for the compactor containers + ## @param compactor.resources.requests The requested resources for the compactor containers + ## + resources: + limits: {} + requests: {} + ## Configure Pods Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param compactor.podSecurityContext.enabled Enabled compactor pods' Security Context + ## @param compactor.podSecurityContext.fsGroup Set compactor pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param compactor.containerSecurityContext.enabled Enabled compactor containers' Security Context + ## @param compactor.containerSecurityContext.runAsUser Set compactor containers' Security Context runAsUser + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + + ## @param compactor.command Override default container command (useful when using custom images) + ## + command: [] + ## @param compactor.args Override default container args (useful when using custom images) + ## + args: [] + ## @param compactor.hostAliases compactor pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param compactor.podLabels Extra labels for compactor pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param compactor.podAnnotations Annotations for compactor pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param compactor.podAffinityPreset Pod affinity preset. Ignored if `compactor.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param compactor.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `compactor.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node compactor.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param compactor.nodeAffinityPreset.type Node affinity preset type. Ignored if `compactor.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param compactor.nodeAffinityPreset.key Node label key to match. Ignored if `compactor.affinity` is set + ## + key: "" + ## @param compactor.nodeAffinityPreset.values Node label values to match. Ignored if `compactor.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param compactor.affinity Affinity for compactor pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `compactor.podAffinityPreset`, `compactor.podAntiAffinityPreset`, and `compactor.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param compactor.nodeSelector Node labels for compactor pods assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param compactor.tolerations Tolerations for compactor pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param compactor.updateStrategy.type compactor statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param compactor.priorityClassName compactor pods' priorityClassName + ## + priorityClassName: "" + ## @param compactor.lifecycleHooks for the compactor container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param compactor.extraEnvVars Array with extra environment variables to add to compactor nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param compactor.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for compactor nodes + ## + extraEnvVarsCM: + ## @param compactor.extraEnvVarsSecret Name of existing Secret containing extra env vars for compactor nodes + ## + extraEnvVarsSecret: + ## @param compactor.extraVolumes Optionally specify extra list of additional volumes for the compactor pod(s) + ## + extraVolumes: [] + ## @param compactor.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the compactor container(s) + ## + extraVolumeMounts: [] + ## @param compactor.sidecars Add additional sidecar containers to the compactor pod(s) + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: {} + ## @param compactor.initContainers Add additional init containers to the compactor pod(s) + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: {} + ## @section Compactor Traffic Exposure Parameters + ## + + ## compactor service parameters + ## + service: + ## @param compactor.service.type compactor service type + ## + type: ClusterIP + ## @param compactor.service.port compactor service HTTP port + ## + port: 3100 + ## Node ports to expose + ## @param compactor.service.nodePorts.http Node port for HTTP + ## NOTE: choose port between <30000-32767> + ## + nodePorts: + http: + ## @param compactor.service.clusterIP compactor service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: + ## @param compactor.service.loadBalancerIP compactor service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: + ## @param compactor.service.loadBalancerSourceRanges compactor service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param compactor.service.externalTrafficPolicy compactor service external traffic policy + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param compactor.service.annotations Additional custom annotations for compactor service + ## + annotations: {} + +## @section Distributor Deployment Parameters +## +distributor: + ## @param distributor.replicaCount Number of distributor replicas to deploy + ## + replicaCount: 1 + ## Configure extra options for distributor containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param distributor.livenessProbe.enabled Enable livenessProbe on distributor nodes + ## @param distributor.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param distributor.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param distributor.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param distributor.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param distributor.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param distributor.readinessProbe.enabled Enable readinessProbe on distributor nodes + ## @param distributor.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param distributor.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param distributor.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param distributor.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param distributor.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param distributor.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param distributor.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## distributor resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param distributor.resources.limits The resources limits for the distributor containers + ## @param distributor.resources.requests The requested resources for the distributor containers + ## + resources: + limits: {} + requests: {} + ## Configure Pods Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param distributor.podSecurityContext.enabled Enabled distributor pods' Security Context + ## @param distributor.podSecurityContext.fsGroup Set distributor pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param distributor.containerSecurityContext.enabled Enabled distributor containers' Security Context + ## @param distributor.containerSecurityContext.runAsUser Set distributor containers' Security Context runAsUser + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + + ## @param distributor.command Override default container command (useful when using custom images) + ## + command: [] + ## @param distributor.args Override default container args (useful when using custom images) + ## + args: [] + ## @param distributor.hostAliases distributor pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param distributor.podLabels Extra labels for distributor pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param distributor.podAnnotations Annotations for distributor pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param distributor.podAffinityPreset Pod affinity preset. Ignored if `distributor.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param distributor.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `distributor.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node distributor.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param distributor.nodeAffinityPreset.type Node affinity preset type. Ignored if `distributor.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param distributor.nodeAffinityPreset.key Node label key to match. Ignored if `distributor.affinity` is set + ## + key: "" + ## @param distributor.nodeAffinityPreset.values Node label values to match. Ignored if `distributor.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param distributor.affinity Affinity for distributor pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `distributor.podAffinityPreset`, `distributor.podAntiAffinityPreset`, and `distributor.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param distributor.nodeSelector Node labels for distributor pods assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param distributor.tolerations Tolerations for distributor pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param distributor.updateStrategy.type distributor statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param distributor.priorityClassName distributor pods' priorityClassName + ## + priorityClassName: "" + ## @param distributor.lifecycleHooks for the distributor container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param distributor.extraEnvVars Array with extra environment variables to add to distributor nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param distributor.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for distributor nodes + ## + extraEnvVarsCM: + ## @param distributor.extraEnvVarsSecret Name of existing Secret containing extra env vars for distributor nodes + ## + extraEnvVarsSecret: + ## @param distributor.extraVolumes Optionally specify extra list of additional volumes for the distributor pod(s) + ## + extraVolumes: [] + ## @param distributor.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the distributor container(s) + ## + extraVolumeMounts: [] + ## @param distributor.sidecars Add additional sidecar containers to the distributor pod(s) + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: {} + ## @param distributor.initContainers Add additional init containers to the distributor pod(s) + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: {} + ## @section Distributor Traffic Exposure Parameters + ## + + ## distributor service parameters + ## + service: + ## @param distributor.service.type distributor service type + ## + type: ClusterIP + ## @param distributor.service.port distributor service HTTP port + ## + port: 3100 + ## @param distributor.service.grpcPort distributor service HTTP port + ## + grpcPort: 9095 + ## Node ports to expose + ## @param distributor.service.nodePorts.http Node port for HTTP + ## @param distributor.service.nodePorts.grpc Node port for GRPC + ## NOTE: choose port between <30000-32767> + ## + nodePorts: + http: + grpc: + ## @param distributor.service.clusterIP distributor service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: + ## @param distributor.service.loadBalancerIP distributor service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: + ## @param distributor.service.loadBalancerSourceRanges distributor service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param distributor.service.externalTrafficPolicy distributor service external traffic policy + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param distributor.service.annotations Additional custom annotations for distributor service + ## + annotations: {} + +## @section Ingester Deployment Parameters +## +ingester: + ## @param ingester.replicaCount Number of ingester replicas to deploy + ## + replicaCount: 1 + ## Configure extra options for ingester containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param ingester.livenessProbe.enabled Enable livenessProbe on ingester nodes + ## @param ingester.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param ingester.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param ingester.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param ingester.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param ingester.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param ingester.readinessProbe.enabled Enable readinessProbe on ingester nodes + ## @param ingester.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param ingester.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param ingester.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param ingester.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param ingester.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param ingester.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param ingester.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## ingester resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param ingester.resources.limits The resources limits for the ingester containers + ## @param ingester.resources.requests The requested resources for the ingester containers + ## + resources: + limits: {} + requests: {} + ## Configure Pods Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param ingester.podSecurityContext.enabled Enabled ingester pods' Security Context + ## @param ingester.podSecurityContext.fsGroup Set ingester pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param ingester.containerSecurityContext.enabled Enabled ingester containers' Security Context + ## @param ingester.containerSecurityContext.runAsUser Set ingester containers' Security Context runAsUser + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + + ## @param ingester.command Override default container command (useful when using custom images) + ## + command: [] + ## @param ingester.args Override default container args (useful when using custom images) + ## + args: [] + ## @param ingester.hostAliases ingester pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param ingester.podLabels Extra labels for ingester pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param ingester.podAnnotations Annotations for ingester pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param ingester.podAffinityPreset Pod affinity preset. Ignored if `ingester.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param ingester.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `ingester.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node ingester.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param ingester.nodeAffinityPreset.type Node affinity preset type. Ignored if `ingester.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param ingester.nodeAffinityPreset.key Node label key to match. Ignored if `ingester.affinity` is set + ## + key: "" + ## @param ingester.nodeAffinityPreset.values Node label values to match. Ignored if `ingester.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param ingester.affinity Affinity for ingester pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `ingester.podAffinityPreset`, `ingester.podAntiAffinityPreset`, and `ingester.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param ingester.nodeSelector Node labels for ingester pods assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param ingester.tolerations Tolerations for ingester pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param ingester.updateStrategy.type ingester statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param ingester.priorityClassName ingester pods' priorityClassName + ## + priorityClassName: "" + ## @param ingester.lifecycleHooks for the ingester container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param ingester.extraEnvVars Array with extra environment variables to add to ingester nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param ingester.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for ingester nodes + ## + extraEnvVarsCM: + ## @param ingester.extraEnvVarsSecret Name of existing Secret containing extra env vars for ingester nodes + ## + extraEnvVarsSecret: + ## @param ingester.extraVolumes Optionally specify extra list of additional volumes for the ingester pod(s) + ## + extraVolumes: [] + ## @param ingester.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the ingester container(s) + ## + extraVolumeMounts: [] + ## @param ingester.sidecars Add additional sidecar containers to the ingester pod(s) + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: {} + ## @param ingester.initContainers Add additional init containers to the ingester pod(s) + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: {} + + ## @section Ingester Persistence Parameters + ## + + ## Enable persistence using Persistent Volume Claims + ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## + persistence: + ## @param ingester.persistence.enabled Enable persistence in ingester instances + ## + enabled: true + ## PV Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. + ## @param ingester.persistence.storageClass Persistent Volumes storage class + ## + storageClass: + ## The subdirectory of the volume to mount to, useful in dev environments + ## and one PV for multiple services. + ## @param ingester.persistence.subPath The subdirectory of the volume to mount to + ## + subPath: "" + ## PV Access Mode + ## @param ingester.persistence.accessModes [array] Persistent Volumes access modes + ## + accessModes: + - ReadWriteOnce + ## PVC size + ## @param ingester.persistence.size Persistent Volumes size + ## + size: 8Gi + ## PVC annotations + ## @param ingester.persistence.annotations Persistent Volumes annotations + ## + annotations: {} + ## Fine tuning for volumeClaimTemplates + ## + volumeClaimTemplates: + ## A label query over volumes to consider for binding (e.g. when using local volumes) + ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#labelselector-v1-meta for more details + ## @param ingester.persistence.volumeClaimTemplates.selector Persistent Volumes selector + ## + selector: + ## Override the requests attribute + ## Sometime cloud providers use additional requests attributes to provision custom storage instance + ## See https://cloud.ibm.com/docs/containers?topic=containers-file_storage#file_dynamic_statefulset + ## @param ingester.persistence.volumeClaimTemplates.requests Persistent Volumes requests + ## + requests: + ## Set volumeClaimTemplate dataSource + ## @param ingester.persistence.volumeClaimTemplates.dataSource Persistent Volumes data source + ## + dataSource: + + ## @section Ingester Traffic Exposure Parameters + ## + + ## ingester service parameters + ## + service: + ## @param ingester.service.type ingester service type + ## + type: ClusterIP + ## @param ingester.service.port ingester service HTTP port + ## + port: 3100 + ## @param ingester.service.grpcPort ingester service HTTP port + ## + grpcPort: 9095 + ## Node ports to expose + ## @param ingester.service.nodePorts.http Node port for HTTP + ## @param ingester.service.nodePorts.grpc Node port for GRPC + ## NOTE: choose port between <30000-32767> + ## + nodePorts: + http: + grpc: + ## @param ingester.service.clusterIP ingester service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: + ## @param ingester.service.loadBalancerIP ingester service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: + ## @param ingester.service.loadBalancerSourceRanges ingester service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param ingester.service.externalTrafficPolicy ingester service external traffic policy + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param ingester.service.annotations Additional custom annotations for ingester service + ## + annotations: {} + +## @section Querier Deployment Parameters +## +querier: + ## @param querier.replicaCount Number of querier replicas to deploy + ## + replicaCount: 1 + ## Configure extra options for querier containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param querier.livenessProbe.enabled Enable livenessProbe on querier nodes + ## @param querier.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param querier.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param querier.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param querier.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param querier.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param querier.readinessProbe.enabled Enable readinessProbe on querier nodes + ## @param querier.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param querier.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param querier.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param querier.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param querier.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param querier.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param querier.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## querier resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param querier.resources.limits The resources limits for the querier containers + ## @param querier.resources.requests The requested resources for the querier containers + ## + resources: + limits: {} + requests: {} + ## Configure Pods Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param querier.podSecurityContext.enabled Enabled querier pods' Security Context + ## @param querier.podSecurityContext.fsGroup Set querier pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param querier.containerSecurityContext.enabled Enabled querier containers' Security Context + ## @param querier.containerSecurityContext.runAsUser Set querier containers' Security Context runAsUser + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + + ## @param querier.command Override default container command (useful when using custom images) + ## + command: [] + ## @param querier.args Override default container args (useful when using custom images) + ## + args: [] + ## @param querier.hostAliases querier pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param querier.podLabels Extra labels for querier pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param querier.podAnnotations Annotations for querier pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param querier.podAffinityPreset Pod affinity preset. Ignored if `querier.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param querier.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `querier.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node querier.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param querier.nodeAffinityPreset.type Node affinity preset type. Ignored if `querier.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param querier.nodeAffinityPreset.key Node label key to match. Ignored if `querier.affinity` is set + ## + key: "" + ## @param querier.nodeAffinityPreset.values Node label values to match. Ignored if `querier.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param querier.affinity Affinity for querier pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `querier.podAffinityPreset`, `querier.podAntiAffinityPreset`, and `querier.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param querier.nodeSelector Node labels for querier pods assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param querier.tolerations Tolerations for querier pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param querier.updateStrategy.type querier statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param querier.priorityClassName querier pods' priorityClassName + ## + priorityClassName: "" + ## @param querier.lifecycleHooks for the querier container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param querier.extraEnvVars Array with extra environment variables to add to querier nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param querier.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for querier nodes + ## + extraEnvVarsCM: + ## @param querier.extraEnvVarsSecret Name of existing Secret containing extra env vars for querier nodes + ## + extraEnvVarsSecret: + ## @param querier.extraVolumes Optionally specify extra list of additional volumes for the querier pod(s) + ## + extraVolumes: [] + ## @param querier.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the querier container(s) + ## + extraVolumeMounts: [] + ## @param querier.sidecars Add additional sidecar containers to the querier pod(s) + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: {} + ## @param querier.initContainers Add additional init containers to the querier pod(s) + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: {} + ## @section Querier Traffic Exposure Parameters + ## + + ## querier service parameters + ## + service: + ## @param querier.service.type querier service type + ## + type: ClusterIP + ## @param querier.service.port querier service HTTP port + ## + port: 3100 + ## @param querier.service.grpcPort querier service HTTP port + ## + grpcPort: 9095 + ## Node ports to expose + ## @param querier.service.nodePorts.http Node port for HTTP + ## @param querier.service.nodePorts.grpc Node port for GRPC + ## NOTE: choose port between <30000-32767> + ## + nodePorts: + http: + grpc: + ## @param querier.service.clusterIP querier service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: + ## @param querier.service.loadBalancerIP querier service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: + ## @param querier.service.loadBalancerSourceRanges querier service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param querier.service.externalTrafficPolicy querier service external traffic policy + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param querier.service.annotations Additional custom annotations for querier service + ## + annotations: {} + +## @section Query Frontend Deployment Parameters +## +queryFrontend: + ## @param queryFrontend.replicaCount Number of queryFrontend replicas to deploy + ## + replicaCount: 1 + ## Configure extra options for queryFrontend containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param queryFrontend.livenessProbe.enabled Enable livenessProbe on queryFrontend nodes + ## @param queryFrontend.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param queryFrontend.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param queryFrontend.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param queryFrontend.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param queryFrontend.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param queryFrontend.readinessProbe.enabled Enable readinessProbe on queryFrontend nodes + ## @param queryFrontend.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param queryFrontend.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param queryFrontend.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param queryFrontend.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param queryFrontend.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param queryFrontend.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param queryFrontend.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## queryFrontend resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param queryFrontend.resources.limits The resources limits for the queryFrontend containers + ## @param queryFrontend.resources.requests The requested resources for the queryFrontend containers + ## + resources: + limits: {} + requests: {} + ## Configure Pods Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param queryFrontend.podSecurityContext.enabled Enabled queryFrontend pods' Security Context + ## @param queryFrontend.podSecurityContext.fsGroup Set queryFrontend pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param queryFrontend.containerSecurityContext.enabled Enabled queryFrontend containers' Security Context + ## @param queryFrontend.containerSecurityContext.runAsUser Set queryFrontend containers' Security Context runAsUser + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + + ## @param queryFrontend.command Override default container command (useful when using custom images) + ## + command: [] + ## @param queryFrontend.args Override default container args (useful when using custom images) + ## + args: [] + ## @param queryFrontend.hostAliases queryFrontend pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param queryFrontend.podLabels Extra labels for queryFrontend pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param queryFrontend.podAnnotations Annotations for queryFrontend pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param queryFrontend.podAffinityPreset Pod affinity preset. Ignored if `queryFrontend.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param queryFrontend.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `queryFrontend.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node queryFrontend.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param queryFrontend.nodeAffinityPreset.type Node affinity preset type. Ignored if `queryFrontend.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param queryFrontend.nodeAffinityPreset.key Node label key to match. Ignored if `queryFrontend.affinity` is set + ## + key: "" + ## @param queryFrontend.nodeAffinityPreset.values Node label values to match. Ignored if `queryFrontend.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param queryFrontend.affinity Affinity for queryFrontend pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `queryFrontend.podAffinityPreset`, `queryFrontend.podAntiAffinityPreset`, and `queryFrontend.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param queryFrontend.nodeSelector Node labels for queryFrontend pods assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param queryFrontend.tolerations Tolerations for queryFrontend pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param queryFrontend.updateStrategy.type queryFrontend statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param queryFrontend.priorityClassName queryFrontend pods' priorityClassName + ## + priorityClassName: "" + ## @param queryFrontend.lifecycleHooks for the queryFrontend container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param queryFrontend.extraEnvVars Array with extra environment variables to add to queryFrontend nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param queryFrontend.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for queryFrontend nodes + ## + extraEnvVarsCM: + ## @param queryFrontend.extraEnvVarsSecret Name of existing Secret containing extra env vars for queryFrontend nodes + ## + extraEnvVarsSecret: + ## @param queryFrontend.extraVolumes Optionally specify extra list of additional volumes for the queryFrontend pod(s) + ## + extraVolumes: [] + ## @param queryFrontend.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the queryFrontend container(s) + ## + extraVolumeMounts: [] + ## @param queryFrontend.sidecars Add additional sidecar containers to the queryFrontend pod(s) + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: {} + ## @param queryFrontend.initContainers Add additional init containers to the queryFrontend pod(s) + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: {} + + ## Query sidecar settings + ## + query: + ## Bitnami Grafana Tempo Query image + ## ref: https://hub.docker.com/r/bitnami/redis/tags/ + ## @param queryFrontend.query.image.registry Grafana Tempo Query image registry + ## @param queryFrontend.query.image.repository Grafana Tempo Query image repository + ## @param queryFrontend.query.image.tag Grafana Tempo Query image tag (immutable tags are recommended) + ## @param queryFrontend.query.image.pullPolicy Grafana Tempo Query image pull policy + ## @param queryFrontend.query.image.pullSecrets Grafana Tempo Query image pull secrets + ## + image: + registry: docker.io + repository: bitnami/grafana-tempo-query + tag: 1.0.1-debian-10-r0 + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + + ## @param queryFrontend.query.command Override default container command (useful when using custom images) + ## + command: [] + ## @param queryFrontend.query.args Override default container args (useful when using custom images) + ## + args: [] + ## @param queryFrontend.query.configuration [string] Query sidecar configuration + ## + configuration: | + backend: 127.0.0.1:{{ .Values.tempo.containerPort }} + + ## @param queryFrontend.query.jaegerMetricsContainerPort Jaeger metrics container port + ## + jaegerMetricsContainerPort: 16687 + ## @param queryFrontend.query.jaegerUIContainerPort Jaeger UI container port + ## + jaegerUIContainerPort: 16686 + + ## @param queryFrontend.query.existingConfigmap Name of a configmap with the query configuration + ## + existingConfigmap: + ## Configure extra options for query sidecar containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param queryFrontend.query.livenessProbe.enabled Enable livenessProbe on query sidecar nodes + ## @param queryFrontend.query.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param queryFrontend.query.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param queryFrontend.query.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param queryFrontend.query.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param queryFrontend.query.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param queryFrontend.query.readinessProbe.enabled Enable readinessProbe on query sidecar nodes + ## @param queryFrontend.query.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param queryFrontend.query.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param queryFrontend.query.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param queryFrontend.query.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param queryFrontend.query.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + + ## query sidecar resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param queryFrontend.query.resources.limits The resources limits for the query sidecar containers + ## @param queryFrontend.query.resources.requests The requested resources for the query sidecar containers + ## + resources: + limits: {} + requests: {} + + ## @param queryFrontend.query.lifecycleHooks for the query sidecar container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param queryFrontend.query.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param queryFrontend.query.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## @param queryFrontend.query.extraEnvVars Array with extra environment variables to add to queryFrontend nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param queryFrontend.query.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for queryFrontend nodes + ## + extraEnvVarsCM: + ## @param queryFrontend.query.extraEnvVarsSecret Name of existing Secret containing extra env vars for queryFrontend nodes + ## + extraEnvVarsSecret: + ## @param queryFrontend.query.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the queryFrontend container(s) + ## + extraVolumeMounts: [] + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param queryFrontend.query.containerSecurityContext.enabled Enabled query-frontend query sidecar containers' Security Context + ## @param queryFrontend.query.containerSecurityContext.runAsUser Set query-frontend query sidecar containers' Security Context runAsUser + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + + ## @section Query Frontend Traffic Exposure Parameters + ## + + ## queryFrontend service parameters + ## + service: + ## @param queryFrontend.service.type queryFrontend service type + ## + type: ClusterIP + ## @param queryFrontend.service.port queryFrontend service HTTP port + ## + port: 3100 + ## @param queryFrontend.service.grpcPort queryFrontend service HTTP port + ## + grpcPort: 9095 + ## Node ports to expose + ## @param queryFrontend.service.nodePorts.http Node port for HTTP + ## @param queryFrontend.service.nodePorts.grpc Node port for GRPC + ## NOTE: choose port between <30000-32767> + ## + nodePorts: + http: + grpc: + ## @param queryFrontend.service.clusterIP queryFrontend service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: + ## @param queryFrontend.service.loadBalancerIP queryFrontend service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: + ## @param queryFrontend.service.loadBalancerSourceRanges queryFrontend service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param queryFrontend.service.externalTrafficPolicy queryFrontend service external traffic policy + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param queryFrontend.service.annotations Additional custom annotations for queryFrontend service + ## + annotations: {} + +## @section Vulture Deployment Parameters +## +vulture: + ## @param vulture.enabled Enable vulture deployment + ## + enabled: true + + ## Bitnami Grafana Vulture image + ## ref: https://hub.docker.com/r/bitnami/redis/tags/ + ## @param vulture.image.registry Grafana Vulture image registry + ## @param vulture.image.repository Grafana Vulture image repository + ## @param vulture.image.tag Grafana Vulture image tag (immutable tags are recommended) + ## @param vulture.image.pullPolicy Grafana Vulture image pull policy + ## @param vulture.image.pullSecrets Grafana Vulture image pull secrets + ## + + image: + registry: docker.io + repository: bitnami/grafana-tempo-vulture + tag: 1.0.1-debian-10-r0 + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + + ## @param vulture.replicaCount Number of vulture replicas to deploy + ## + replicaCount: 1 + ## Configure extra options for vulture containers' liveness and readiness probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param vulture.livenessProbe.enabled Enable livenessProbe on vulture nodes + ## @param vulture.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param vulture.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param vulture.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param vulture.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param vulture.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param vulture.readinessProbe.enabled Enable readinessProbe on vulture nodes + ## @param vulture.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param vulture.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param vulture.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param vulture.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param vulture.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param vulture.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param vulture.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## vulture resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param vulture.resources.limits The resources limits for the vulture containers + ## @param vulture.resources.requests The requested resources for the vulture containers + ## + resources: + limits: {} + requests: {} + ## Configure Pods Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param vulture.podSecurityContext.enabled Enabled vulture pods' Security Context + ## @param vulture.podSecurityContext.fsGroup Set vulture pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param vulture.containerSecurityContext.enabled Enabled vulture containers' Security Context + ## @param vulture.containerSecurityContext.runAsUser Set vulture containers' Security Context runAsUser + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + + ## @param vulture.command Override default container command (useful when using custom images) + ## + command: [] + ## @param vulture.args Override default container args (useful when using custom images) + ## + args: [] + ## @param vulture.hostAliases vulture pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param vulture.podLabels Extra labels for vulture pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param vulture.podAnnotations Annotations for vulture pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param vulture.podAffinityPreset Pod affinity preset. Ignored if `vulture.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param vulture.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `vulture.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node vulture.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param vulture.nodeAffinityPreset.type Node affinity preset type. Ignored if `vulture.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param vulture.nodeAffinityPreset.key Node label key to match. Ignored if `vulture.affinity` is set + ## + key: "" + ## @param vulture.nodeAffinityPreset.values Node label values to match. Ignored if `vulture.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + + ## @param vulture.containerPort Vulture container port + ## + containerPort: 8080 + ## @param vulture.affinity Affinity for vulture pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `vulture.podAffinityPreset`, `vulture.podAntiAffinityPreset`, and `vulture.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param vulture.nodeSelector Node labels for vulture pods assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param vulture.tolerations Tolerations for vulture pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param vulture.updateStrategy.type vulture statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param vulture.priorityClassName vulture pods' priorityClassName + ## + priorityClassName: "" + ## @param vulture.lifecycleHooks for the vulture container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param vulture.extraEnvVars Array with extra environment variables to add to vulture nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param vulture.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for vulture nodes + ## + extraEnvVarsCM: + ## @param vulture.extraEnvVarsSecret Name of existing Secret containing extra env vars for vulture nodes + ## + extraEnvVarsSecret: + ## @param vulture.extraVolumes Optionally specify extra list of additional volumes for the vulture pod(s) + ## + extraVolumes: [] + ## @param vulture.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the vulture container(s) + ## + extraVolumeMounts: [] + ## @param vulture.sidecars Add additional sidecar containers to the vulture pod(s) + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: {} + ## @param vulture.initContainers Add additional init containers to the vulture pod(s) + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: {} + ## @section Vulture Traffic Exposure Parameters + ## + + ## vulture service parameters + ## + service: + ## @param vulture.service.type vulture service type + ## + type: ClusterIP + ## @param vulture.service.port vulture service HTTP port + ## + port: 3100 + ## Node ports to expose + ## @param vulture.service.nodePorts.http Node port for HTTP + ## NOTE: choose port between <30000-32767> + ## + nodePorts: + http: + ## @param vulture.service.clusterIP vulture service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: + ## @param vulture.service.loadBalancerIP vulture service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: + ## @param vulture.service.loadBalancerSourceRanges vulture service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param vulture.service.externalTrafficPolicy vulture service external traffic policy + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param vulture.service.annotations Additional custom annotations for vulture service + ## + annotations: {} + +## @section Init Container Parameters +## + +## 'volumePermissions' init container parameters +## Changes the owner and group of the persistent volume mount point to runAsUser:fsGroup values +## based on the *podSecurityContext/*containerSecurityContext parameters +## +volumePermissions: + ## @param volumePermissions.enabled Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup` + ## + enabled: false + ## Bitnami Shell image + ## ref: https://hub.docker.com/r/bitnami/bitnami-shell/tags/ + ## @param volumePermissions.image.registry Bitnami Shell image registry + ## @param volumePermissions.image.repository Bitnami Shell image repository + ## @param volumePermissions.image.tag Bitnami Shell image tag (immutable tags are recommended) + ## @param volumePermissions.image.pullPolicy Bitnami Shell image pull policy + ## @param volumePermissions.image.pullSecrets Bitnami Shell image pull secrets + ## + image: + registry: docker.io + repository: bitnami/bitnami-shell + tag: "10" + pullPolicy: Always + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Init container's resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## @param volumePermissions.resources.limits The resources limits for the init container + ## @param volumePermissions.resources.requests The requested resources for the init container + ## + resources: + limits: {} + requests: {} + ## Init container Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param volumePermissions.containerSecurityContext.runAsUser Set init container's Security Context runAsUser + ## NOTE: when runAsUser is set to special value "auto", init container will try to chown the + ## data folder to auto-determined user&group, using commands: `id -u`:`id -G | cut -d" " -f2` + ## "auto" is especially useful for OpenShift which has scc with dynamic user ids (and 0 is not allowed) + ## + containerSecurityContext: + runAsUser: 0 + +## @section Other Parameters +## + +## ServiceAccount configuration +## +serviceAccount: + ## @param serviceAccount.create Specifies whether a ServiceAccount should be created + ## + create: true + ## @param serviceAccount.name The name of the ServiceAccount to use. + ## If not set and create is true, a name is generated using the common.names.fullname template + ## + name: "" + +## @section Metrics Parameters +## Prometheus Exporter / Metrics +## +metrics: + ## @param metrics.enabled Enable metrics + ## + enabled: false + ## Prometheus Service Monitor + ## ref: https://github.com/coreos/prometheus-operator + ## https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md + ## + serviceMonitor: + ## @param metrics.serviceMonitor.enabled Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator + ## + enabled: false + + ## @param metrics.serviceMonitor.namespace The namespace in which the ServiceMonitor will be created + ## + namespace: + + ## @param metrics.serviceMonitor.interval The interval at which metrics should be scraped + ## + interval: 30s + ## @param metrics.serviceMonitor.scrapeTimeout The timeout after which the scrape is ended + ## + scrapeTimeout: + ## @param metrics.serviceMonitor.selector Scrape selector + ## + selector: + +## @section External Memcached Parameters +## +externalMemcached: + ## @param externalMemcached.host Host of a running external memcached instance + ## + host: + ## @param externalMemcached.port Port of a running external memcached instance + ## + port: 11211 + +## @section Memcached Sub-chart Parameters +## Memcached sub-chart +## +memcached: + ## @param memcached.enabled Deploy memcached sub-chart + ## + enabled: true + ## @param memcached.service.port Memcached service port + ## + service: + port: 11211