mirror of
https://github.com/wahyd4/charts.git
synced 2026-08-28 22:47:14 +10:00
[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 <containers@bitnami.com> Co-authored-by: Bitnami Containers <containers@bitnami.com>
This commit is contained in:
co-authored by
Bitnami Containers
parent
eaf474947c
commit
e4da06aa3d
@@ -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
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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).
|
||||
@@ -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" . }}
|
||||
@@ -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 -}}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -0,0 +1,4 @@
|
||||
{{- range .Values.extraDeploy }}
|
||||
---
|
||||
{{ include "common.tplvalues.render" (dict "value" . "context" $) }}
|
||||
{{- end }}
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user