From ce0e7fefd685c8e1ad947cbb87b7cf21a9578aef Mon Sep 17 00:00:00 2001 From: rim99 Date: Tue, 10 Dec 2024 20:55:38 +0800 Subject: [PATCH] [grafana/tempo] support new deployment mode: scaling-monolithic add query config for scaling monolithic like query frontend add toggle for deployment mode bump chart version Signed-off-by: Zhang, Xin Signed-off-by: Zhang Xin --- .vib/grafana-tempo/runtime-parameters.yaml | 1 + bitnami/grafana-tempo/Chart.yaml | 2 +- bitnami/grafana-tempo/README.md | 173 +++++ bitnami/grafana-tempo/templates/NOTES.txt | 27 +- bitnami/grafana-tempo/templates/_helpers.tpl | 7 + .../templates/compactor/deployment.yaml | 2 + .../templates/compactor/networkpolicy.yaml | 2 + .../templates/compactor/pdb.yaml | 2 + .../templates/compactor/service.yaml | 2 + .../templates/compactor/servicemonitor.yaml | 2 + .../templates/distributor/deployment.yaml | 2 + .../templates/distributor/networkpolicy.yaml | 2 + .../templates/distributor/pdb.yaml | 2 + .../templates/distributor/service.yaml | 2 + .../templates/distributor/servicemonitor.yaml | 2 + .../templates/ingester/networkpolicy.yaml | 2 + .../grafana-tempo/templates/ingester/pdb.yaml | 2 + .../templates/ingester/service.yaml | 2 + .../templates/ingester/servicemonitor.yaml | 2 + .../templates/ingester/statefulset.yaml | 2 + .../metrics-generator/deployment.yaml | 2 + .../metrics-generator/networkpolicy.yaml | 2 + .../templates/metrics-generator/pdb.yaml | 2 + .../templates/metrics-generator/service.yaml | 2 + .../metrics-generator/servicemonitor.yaml | 2 + .../templates/querier/deployment.yaml | 2 + .../templates/querier/networkpolicy.yaml | 2 + .../grafana-tempo/templates/querier/pdb.yaml | 2 + .../templates/querier/service.yaml | 2 + .../templates/querier/servicemonitor.yaml | 2 + .../templates/query-frontend/deployment.yaml | 2 + .../query-frontend/headless-service.yaml | 2 + .../query-frontend/networkpolicy.yaml | 2 + .../templates/query-frontend/pdb.yaml | 2 + .../query-frontend/query-configmap.yaml | 2 + .../templates/query-frontend/service.yaml | 2 + .../query-frontend/servicemonitor.yaml | 2 + .../scaling-monolithic/headless-service.yaml | 97 +++ .../scaling-monolithic/networkpolicy.yaml | 126 ++++ .../templates/scaling-monolithic/pdb.yaml | 30 + .../templates/scaling-monolithic/service.yaml | 120 ++++ .../scaling-monolithic/servicemonitor.yaml | 50 ++ .../scaling-monolithic/statefulset.yaml | 235 +++++++ .../templates/vulture/deployment.yaml | 5 + bitnami/grafana-tempo/values.yaml | 599 ++++++++++++++++++ 45 files changed, 1532 insertions(+), 4 deletions(-) create mode 100644 bitnami/grafana-tempo/templates/scaling-monolithic/headless-service.yaml create mode 100644 bitnami/grafana-tempo/templates/scaling-monolithic/networkpolicy.yaml create mode 100644 bitnami/grafana-tempo/templates/scaling-monolithic/pdb.yaml create mode 100644 bitnami/grafana-tempo/templates/scaling-monolithic/service.yaml create mode 100644 bitnami/grafana-tempo/templates/scaling-monolithic/servicemonitor.yaml create mode 100644 bitnami/grafana-tempo/templates/scaling-monolithic/statefulset.yaml diff --git a/.vib/grafana-tempo/runtime-parameters.yaml b/.vib/grafana-tempo/runtime-parameters.yaml index 2bc543a4501bd8..7b93a992c3da58 100644 --- a/.vib/grafana-tempo/runtime-parameters.yaml +++ b/.vib/grafana-tempo/runtime-parameters.yaml @@ -1,4 +1,5 @@ tempo: + deploymentMode: "microservices" dataDir: /bitnami/grafana-tempo/data traces: otlp: diff --git a/bitnami/grafana-tempo/Chart.yaml b/bitnami/grafana-tempo/Chart.yaml index 29d99796922633..1e16d67d9231c6 100644 --- a/bitnami/grafana-tempo/Chart.yaml +++ b/bitnami/grafana-tempo/Chart.yaml @@ -39,4 +39,4 @@ maintainers: name: grafana-tempo sources: - https://github.com/bitnami/charts/tree/main/bitnami/grafana-tempo -version: 3.8.0 +version: 3.9.0 diff --git a/bitnami/grafana-tempo/README.md b/bitnami/grafana-tempo/README.md index d8967c0fc2bf18..73d9da4260a909 100644 --- a/bitnami/grafana-tempo/README.md +++ b/bitnami/grafana-tempo/README.md @@ -219,6 +219,7 @@ The [Bitnami grafana-tempo](https://github.com/bitnami/containers/tree/main/bitn | `tempo.image.digest` | Grafana Tempo image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | | `tempo.image.pullPolicy` | Grafana Tempo image pull policy | `IfNotPresent` | | `tempo.image.pullSecrets` | Grafana Tempo image pull secrets | `[]` | +| `tempo.deploymentMode` | decides components runs in a process. (allowed values: microservices, scalingMonolithic) | `microservices` | | `tempo.memBallastSizeMbs` | Tempo components memory ballast size in MB | `1024` | | `tempo.dataDir` | Tempo components data directory | `/bitnami/grafana-tempo/data` | | `tempo.traces.jaeger.grpc` | Enable Tempo to ingest Jaeger GRPC traces | `true` | @@ -916,6 +917,178 @@ The [Bitnami grafana-tempo](https://github.com/bitnami/containers/tree/main/bitn | `queryFrontend.networkPolicy.ingressNSMatchLabels` | Labels to match to allow traffic from other namespaces. Ignored if `queryFrontend.networkPolicy.allowExternal` is true. | `{}` | | `queryFrontend.networkPolicy.ingressNSPodMatchLabels` | Pod labels to match to allow traffic from other namespaces. Ignored if `queryFrontend.networkPolicy.allowExternal` is true. | `{}` | +### Scalable Single Binary Deployment Parameters + +| Name | Description | Value | +| --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | +| `scalingMonolithic.extraEnvVars` | Array with extra environment variables to add to scalingMonolithic nodes | `[]` | +| `scalingMonolithic.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for scalingMonolithic nodes | `""` | +| `scalingMonolithic.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for scalingMonolithic nodes | `""` | +| `scalingMonolithic.command` | Override default container command (useful when using custom images) | `[]` | +| `scalingMonolithic.args` | Override default container args (useful when using custom images) | `[]` | +| `scalingMonolithic.replicaCount` | Number of scalingMonolithic replicas to deploy | `1` | +| `scalingMonolithic.livenessProbe.enabled` | Enable livenessProbe on scalingMonolithic nodes | `true` | +| `scalingMonolithic.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `scalingMonolithic.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `scalingMonolithic.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `scalingMonolithic.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `scalingMonolithic.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `scalingMonolithic.readinessProbe.enabled` | Enable readinessProbe on scalingMonolithic nodes | `true` | +| `scalingMonolithic.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `scalingMonolithic.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `scalingMonolithic.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `scalingMonolithic.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `scalingMonolithic.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `scalingMonolithic.startupProbe.enabled` | Enable startupProbe on scalingMonolithic containers | `false` | +| `scalingMonolithic.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `30` | +| `scalingMonolithic.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `scalingMonolithic.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `scalingMonolithic.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | +| `scalingMonolithic.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `scalingMonolithic.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `scalingMonolithic.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `scalingMonolithic.customStartupProbe` | Custom startupProbe that overrides the default one | `{}` | +| `scalingMonolithic.lifecycleHooks` | for the scalingMonolithic container(s) to automate configuration before or after startup | `{}` | +| `scalingMonolithic.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if scalingMonolithic.resources is set (scalingMonolithic.resources is recommended for production). | `nano` | +| `scalingMonolithic.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `scalingMonolithic.podSecurityContext.enabled` | Enabled scalingMonolithic pods' Security Context | `true` | +| `scalingMonolithic.podSecurityContext.fsGroupChangePolicy` | Set filesystem group change policy | `Always` | +| `scalingMonolithic.podSecurityContext.sysctls` | Set kernel settings using the sysctl interface | `[]` | +| `scalingMonolithic.podSecurityContext.supplementalGroups` | Set filesystem extra groups | `[]` | +| `scalingMonolithic.podSecurityContext.fsGroup` | Set scalingMonolithic pod's Security Context fsGroup | `1001` | +| `scalingMonolithic.containerSecurityContext.enabled` | Enabled containers' Security Context | `true` | +| `scalingMonolithic.containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `{}` | +| `scalingMonolithic.containerSecurityContext.runAsUser` | Set containers' Security Context runAsUser | `1001` | +| `scalingMonolithic.containerSecurityContext.runAsGroup` | Set containers' Security Context runAsGroup | `1001` | +| `scalingMonolithic.containerSecurityContext.runAsNonRoot` | Set container's Security Context runAsNonRoot | `true` | +| `scalingMonolithic.containerSecurityContext.privileged` | Set container's Security Context privileged | `false` | +| `scalingMonolithic.containerSecurityContext.readOnlyRootFilesystem` | Set container's Security Context readOnlyRootFilesystem | `true` | +| `scalingMonolithic.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation | `false` | +| `scalingMonolithic.containerSecurityContext.capabilities.drop` | List of capabilities to be dropped | `["ALL"]` | +| `scalingMonolithic.containerSecurityContext.seccompProfile.type` | Set container's Security Context seccomp profile | `RuntimeDefault` | +| `scalingMonolithic.automountServiceAccountToken` | Mount Service Account token in pod | `false` | +| `scalingMonolithic.hostAliases` | scalingMonolithic pods host aliases | `[]` | +| `scalingMonolithic.podLabels` | Extra labels for scalingMonolithic pods | `{}` | +| `scalingMonolithic.podAnnotations` | Annotations for scalingMonolithic pods | `{}` | +| `scalingMonolithic.podAffinityPreset` | Pod affinity preset. Ignored if `scalingMonolithic.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `scalingMonolithic.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `scalingMonolithic.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `scalingMonolithic.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `scalingMonolithic.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `scalingMonolithic.nodeAffinityPreset.key` | Node label key to match. Ignored if `scalingMonolithic.affinity` is set | `""` | +| `scalingMonolithic.nodeAffinityPreset.values` | Node label values to match. Ignored if `scalingMonolithic.affinity` is set | `[]` | +| `scalingMonolithic.affinity` | Affinity for scalingMonolithic pods assignment | `{}` | +| `scalingMonolithic.nodeSelector` | Node labels for scalingMonolithic pods assignment | `{}` | +| `scalingMonolithic.tolerations` | Tolerations for scalingMonolithic pods assignment | `[]` | +| `scalingMonolithic.topologySpreadConstraints` | Topology Spread Constraints for pod assignment spread across your cluster among failure-domains | `[]` | +| `scalingMonolithic.priorityClassName` | scalingMonolithic pods' priorityClassName | `""` | +| `scalingMonolithic.schedulerName` | Kubernetes pod scheduler registry | `""` | +| `scalingMonolithic.updateStrategy.type` | scalingMonolithic statefulset strategy type | `RollingUpdate` | +| `scalingMonolithic.updateStrategy.rollingUpdate` | scalingMonolithic statefulset rolling update configuration parameters | `{}` | +| `scalingMonolithic.extraVolumes` | Optionally specify extra list of additional volumes for the scalingMonolithic pod(s) | `[]` | +| `scalingMonolithic.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the scalingMonolithic container(s) | `[]` | +| `scalingMonolithic.sidecars` | Add additional sidecar containers to the scalingMonolithic pod(s) | `[]` | +| `scalingMonolithic.initContainers` | Add additional init containers to the scalingMonolithic pod(s) | `[]` | +| `scalingMonolithic.pdb.create` | Enable/disable a Pod Disruption Budget creation | `true` | +| `scalingMonolithic.pdb.minAvailable` | Minimum number/percentage of pods that should remain scheduled | `""` | +| `scalingMonolithic.pdb.maxUnavailable` | Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `scalingMonolithic.pdb.minAvailable` and `scalingMonolithic.pdb.maxUnavailable` are empty. | `""` | +| `scalingMonolithic.enableServiceLinks` | Whether information about services should be injected into pod's environment variable | `true` | + +### scalingMonolithic Persistence Parameters + +| Name | Description | Value | +| --------------------------------------------- | -------------------------------------------------------------------------------- | ------------------- | +| `scalingMonolithic.persistence.enabled` | Enable persistence in scalingMonolithic instances | `true` | +| `scalingMonolithic.persistence.existingClaim` | Name of an existing PVC to use | `""` | +| `scalingMonolithic.persistence.storageClass` | PVC Storage Class for Memcached data volume | `""` | +| `scalingMonolithic.persistence.subPath` | The subdirectory of the volume to mount to | `""` | +| `scalingMonolithic.persistence.accessModes` | PVC Access modes | `["ReadWriteOnce"]` | +| `scalingMonolithic.persistence.size` | PVC Storage Request for Memcached data volume | `8Gi` | +| `scalingMonolithic.persistence.annotations` | Additional PVC annotations | `{}` | +| `scalingMonolithic.persistence.selector` | Selector to match an existing Persistent Volume for scalingMonolithic's data PVC | `{}` | + +### scalingMonolithic Traffic Exposure Parameters + +| Name | Description | Value | +| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | +| `scalingMonolithic.query.enabled` | Whether to enable the query container for legacy Grafana compatibility with jaeger-ui. Only required for grafana version <7.5 | `false` | +| `scalingMonolithic.query.image.registry` | Grafana Tempo Query image registry | `REGISTRY_NAME` | +| `scalingMonolithic.query.image.repository` | Grafana Tempo Query image repository | `REPOSITORY_NAME/grafana-tempo-query` | +| `scalingMonolithic.query.image.digest` | Grafana Tempo Query image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `scalingMonolithic.query.image.pullPolicy` | Grafana Tempo Query image pull policy | `IfNotPresent` | +| `scalingMonolithic.query.image.pullSecrets` | Grafana Tempo Query image pull secrets | `[]` | +| `scalingMonolithic.query.configuration` | Query sidecar configuration | `""` | +| `scalingMonolithic.query.containerPorts.jaegerMetrics` | scalingMonolithic query sidecar Jaeger metrics container port | `16687` | +| `scalingMonolithic.query.containerPorts.jaegerUI` | scalingMonolithic query sidecar Jaeger UI container port | `16686` | +| `scalingMonolithic.query.containerPorts.jaegerGRPC` | scalingMonolithic query sidecar Jaeger UI container port | `16685` | +| `scalingMonolithic.query.existingConfigmap` | Name of a configmap with the query configuration | `""` | +| `scalingMonolithic.query.extraEnvVars` | Array with extra environment variables to add to scalingMonolithic nodes | `[]` | +| `scalingMonolithic.query.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for scalingMonolithic nodes | `""` | +| `scalingMonolithic.query.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for scalingMonolithic nodes | `""` | +| `scalingMonolithic.query.command` | Override default container command (useful when using custom images) | `[]` | +| `scalingMonolithic.query.args` | Override default container args (useful when using custom images) | `[]` | +| `scalingMonolithic.query.livenessProbe.enabled` | Enable livenessProbe on Query sidecar nodes | `true` | +| `scalingMonolithic.query.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `scalingMonolithic.query.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `scalingMonolithic.query.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `scalingMonolithic.query.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `scalingMonolithic.query.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `scalingMonolithic.query.readinessProbe.enabled` | Enable readinessProbe on Query sidecar nodes | `true` | +| `scalingMonolithic.query.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `scalingMonolithic.query.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `scalingMonolithic.query.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `scalingMonolithic.query.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `scalingMonolithic.query.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `scalingMonolithic.query.startupProbe.enabled` | Enable startupProbe on Query sidecar containers | `false` | +| `scalingMonolithic.query.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `30` | +| `scalingMonolithic.query.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `scalingMonolithic.query.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `scalingMonolithic.query.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | +| `scalingMonolithic.query.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `scalingMonolithic.query.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `scalingMonolithic.query.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `scalingMonolithic.query.customStartupProbe` | Custom startupProbe that overrides the default one | `{}` | +| `scalingMonolithic.query.lifecycleHooks` | for the query sidecar container(s) to automate configuration before or after startup | `{}` | +| `scalingMonolithic.query.containerSecurityContext.enabled` | Enabled containers' Security Context | `true` | +| `scalingMonolithic.query.containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `{}` | +| `scalingMonolithic.query.containerSecurityContext.runAsUser` | Set containers' Security Context runAsUser | `1001` | +| `scalingMonolithic.query.containerSecurityContext.runAsGroup` | Set containers' Security Context runAsGroup | `1001` | +| `scalingMonolithic.query.containerSecurityContext.runAsNonRoot` | Set container's Security Context runAsNonRoot | `true` | +| `scalingMonolithic.query.containerSecurityContext.privileged` | Set container's Security Context privileged | `false` | +| `scalingMonolithic.query.containerSecurityContext.readOnlyRootFilesystem` | Set container's Security Context readOnlyRootFilesystem | `true` | +| `scalingMonolithic.query.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation | `false` | +| `scalingMonolithic.query.containerSecurityContext.capabilities.drop` | List of capabilities to be dropped | `["ALL"]` | +| `scalingMonolithic.query.containerSecurityContext.seccompProfile.type` | Set container's Security Context seccomp profile | `RuntimeDefault` | +| `scalingMonolithic.query.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if scalingMonolithic.query.resources is set (scalingMonolithic.query.resources is recommended for production). | `nano` | +| `scalingMonolithic.query.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `scalingMonolithic.query.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the scalingMonolithic container(s) | `[]` | + +### Scaling Monolithic Traffic Exposure Parameters + +| Name | Description | Value | +| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| `scalingMonolithic.service.type` | scalingMonolithic service type | `ClusterIP` | +| `scalingMonolithic.service.ports.http` | scalingMonolithic HTTP service port | `3200` | +| `scalingMonolithic.service.ports.grpc` | scalingMonolithic GRPC service port | `9095` | +| `scalingMonolithic.service.nodePorts.http` | Node port for HTTP | `""` | +| `scalingMonolithic.service.nodePorts.grpc` | Node port for GRPC | `""` | +| `scalingMonolithic.service.sessionAffinity` | Control where client requests go, to the same pod or round-robin | `None` | +| `scalingMonolithic.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `scalingMonolithic.service.clusterIP` | scalingMonolithic service Cluster IP | `""` | +| `scalingMonolithic.service.loadBalancerIP` | scalingMonolithic service Load Balancer IP | `""` | +| `scalingMonolithic.service.loadBalancerSourceRanges` | scalingMonolithic service Load Balancer sources | `[]` | +| `scalingMonolithic.service.externalTrafficPolicy` | scalingMonolithic service external traffic policy | `Cluster` | +| `scalingMonolithic.service.annotations` | Additional custom annotations for scalingMonolithic service | `{}` | +| `scalingMonolithic.service.extraPorts` | Extra ports to expose in the scalingMonolithic service | `[]` | +| `scalingMonolithic.service.headless.annotations` | Annotations for the headless service. | `{}` | +| `scalingMonolithic.networkPolicy.enabled` | Specifies whether a NetworkPolicy should be created | `true` | +| `scalingMonolithic.networkPolicy.allowExternal` | Don't require server label for connections | `true` | +| `scalingMonolithic.networkPolicy.allowExternalEgress` | Allow the pod to access any range of port and all destinations. | `true` | +| `scalingMonolithic.networkPolicy.addExternalClientAccess` | Allow access from pods with client label set to "true". Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. | `true` | +| `scalingMonolithic.networkPolicy.extraIngress` | Add extra ingress rules to the NetworkPolicy | `[]` | +| `scalingMonolithic.networkPolicy.extraEgress` | Add extra ingress rules to the NetworkPolicy | `[]` | +| `scalingMonolithic.networkPolicy.ingressPodMatchLabels` | Labels to match to allow traffic from other pods. Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. | `{}` | +| `scalingMonolithic.networkPolicy.ingressNSMatchLabels` | Labels to match to allow traffic from other namespaces. Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. | `{}` | +| `scalingMonolithic.networkPolicy.ingressNSPodMatchLabels` | Pod labels to match to allow traffic from other namespaces. Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. | `{}` | + ### Vulture Deployment Parameters | Name | Description | Value | diff --git a/bitnami/grafana-tempo/templates/NOTES.txt b/bitnami/grafana-tempo/templates/NOTES.txt index 0a5f9789485d9c..2e26746e02a0fd 100644 --- a/bitnami/grafana-tempo/templates/NOTES.txt +++ b/bitnami/grafana-tempo/templates/NOTES.txt @@ -28,17 +28,22 @@ In order to replicate the container startup execute this command: Installed components: + {{- if eq .Values.tempo.deploymentMode "microservices" }} * ingester * distributor * querier * query-frontend * compactor + {{- else if eq .Values.tempo.deploymentMode "scalingMonolithic" }} + * scaling-monolithic + {{- end }} {{- if .Values.vulture.enabled }} * vulture {{- end }} 1. Get the query-frontend URL by running these commands: +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- 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}") @@ -52,10 +57,26 @@ Installed components: echo "The Query Frontend is available at http://127.0.0.1:{{ .Values.queryFrontend.service.ports.http }}" kubectl port-forward svc/{{ template "grafana-tempo.query-frontend.fullname" . }} {{ .Values.queryFrontend.service.ports.http }}:{{ .Values.queryFrontend.service.ports.http }} & {{- end }} +{{- else if eq .Values.tempo.deploymentMode "scalingMonolithic" }} +{{- if contains "NodePort" .Values.scalingMonolithic.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "grafana-tempo.scaling-monolithic.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.scalingMonolithic.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.scalingMonolithic.service.ports.http }} +{{- else if contains "ClusterIP" .Values.scalingMonolithic.service.type }} + echo "The Query Frontend is available at http://127.0.0.1:{{ .Values.scalingMonolithic.service.ports.http }}" + kubectl port-forward svc/{{ template "grafana-tempo.scaling-monolithic.fullname" . }} {{ .Values.scalingMonolithic.service.ports.http }}:{{ .Values.scalingMonolithic.service.ports.http }} & +{{- end }} +{{- end }} + {{- end }} {{- include "grafana-tempo.checkRollingTags" . }} {{- include "grafana-tempo.validateValues" . }} -{{- include "common.warnings.resources" (dict "sections" (list "compactor" "distributor" "ingester" "metricsGenerator" "querier" "queryFrontend.query" "queryFrontend" "volumePermissions" "vulture") "context" $) }} -{{- include "common.warnings.modifiedImages" (dict "images" (list .Values.tempo.image .Values.queryFrontend.query.image .Values.vulture.image .Values.volumePermissions.image) "context" $) }} -{{- include "common.errors.insecureImages" (dict "images" (list .Values.tempo.image .Values.queryFrontend.query.image .Values.vulture.image .Values.volumePermissions.image) "context" $) }} +{{- include "common.warnings.resources" (dict "sections" (list "compactor" "distributor" "ingester" "metricsGenerator" "querier" "queryFrontend.query" "queryFrontend" "scalingMonolithic.query" "scalingMonolithic" "volumePermissions" "vulture") "context" $) }} +{{- include "common.warnings.modifiedImages" (dict "images" (list .Values.tempo.image .Values.queryFrontend.query.image .Values.scalingMonolithic.query.image .Values.vulture.image .Values.volumePermissions.image) "context" $) }} +{{- include "common.errors.insecureImages" (dict "images" (list .Values.tempo.image .Values.queryFrontend.query.image .Values.scalingMonolithic.query.image .Values.vulture.image .Values.volumePermissions.image) "context" $) }} diff --git a/bitnami/grafana-tempo/templates/_helpers.tpl b/bitnami/grafana-tempo/templates/_helpers.tpl index 5d2449bcaa975d..7c4b1de4ead021 100644 --- a/bitnami/grafana-tempo/templates/_helpers.tpl +++ b/bitnami/grafana-tempo/templates/_helpers.tpl @@ -52,6 +52,13 @@ Return the proper Grafana Tempo query-frontend fullname {{- printf "%s-%s" (include "common.names.fullname" .) "query-frontend" -}} {{- end -}} +{{/* +Return the proper Grafana Tempo scaling-monolithic fullname +*/}} +{{- define "grafana-tempo.scaling-monolithic.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) "scaling-monolithic" -}} +{{- end -}} + {{/* Return the proper Grafana Tempo vulture fullname */}} diff --git a/bitnami/grafana-tempo/templates/compactor/deployment.yaml b/bitnami/grafana-tempo/templates/compactor/deployment.yaml index d38f94eb1a7da2..774629f45d9ea5 100644 --- a/bitnami/grafana-tempo/templates/compactor/deployment.yaml +++ b/bitnami/grafana-tempo/templates/compactor/deployment.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.compactor.enabled }} apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} kind: Deployment @@ -177,3 +178,4 @@ spec: {{- include "common.tplvalues.render" (dict "value" .Values.compactor.extraVolumes "context" $) | nindent 8 }} {{- end }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/compactor/networkpolicy.yaml b/bitnami/grafana-tempo/templates/compactor/networkpolicy.yaml index 14540f723b541c..1000343448a21a 100644 --- a/bitnami/grafana-tempo/templates/compactor/networkpolicy.yaml +++ b/bitnami/grafana-tempo/templates/compactor/networkpolicy.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.compactor.enabled .Values.compactor.networkPolicy.enabled }} kind: NetworkPolicy apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} @@ -122,3 +123,4 @@ spec: {{- include "common.tplvalues.render" ( dict "value" .Values.compactor.networkPolicy.extraIngress "context" $ ) | nindent 4 }} {{- end }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/compactor/pdb.yaml b/bitnami/grafana-tempo/templates/compactor/pdb.yaml index 4f5ef3f3648aa0..10e1b15e23445b 100644 --- a/bitnami/grafana-tempo/templates/compactor/pdb.yaml +++ b/bitnami/grafana-tempo/templates/compactor/pdb.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.compactor.enabled .Values.compactor.pdb.create }} apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} kind: PodDisruptionBudget @@ -26,3 +27,4 @@ spec: matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} app.kubernetes.io/component: compactor {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/compactor/service.yaml b/bitnami/grafana-tempo/templates/compactor/service.yaml index e80929e7662383..4ab6b77c7f1847 100644 --- a/bitnami/grafana-tempo/templates/compactor/service.yaml +++ b/bitnami/grafana-tempo/templates/compactor/service.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.compactor.enabled }} apiVersion: v1 kind: Service @@ -61,3 +62,4 @@ spec: selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} app.kubernetes.io/component: compactor {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml b/bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml index e33c2df271d9a3..25039f9ad9637a 100644 --- a/bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml +++ b/bitnami/grafana-tempo/templates/compactor/servicemonitor.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.compactor.enabled .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor @@ -46,3 +47,4 @@ spec: matchNames: - {{ .Release.Namespace }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/distributor/deployment.yaml b/bitnami/grafana-tempo/templates/distributor/deployment.yaml index 5041e307d89b0c..1340793a84cabb 100644 --- a/bitnami/grafana-tempo/templates/distributor/deployment.yaml +++ b/bitnami/grafana-tempo/templates/distributor/deployment.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} kind: Deployment metadata: @@ -214,3 +215,4 @@ spec: {{- if .Values.distributor.extraVolumes }} {{- include "common.tplvalues.render" (dict "value" .Values.distributor.extraVolumes "context" $) | nindent 8 }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/distributor/networkpolicy.yaml b/bitnami/grafana-tempo/templates/distributor/networkpolicy.yaml index 6fd034b3064b1e..c5e9bd9c87b526 100644 --- a/bitnami/grafana-tempo/templates/distributor/networkpolicy.yaml +++ b/bitnami/grafana-tempo/templates/distributor/networkpolicy.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.distributor.networkPolicy.enabled }} kind: NetworkPolicy apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} @@ -149,3 +150,4 @@ spec: {{- include "common.tplvalues.render" ( dict "value" .Values.distributor.networkPolicy.extraIngress "context" $ ) | nindent 4 }} {{- end }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/distributor/pdb.yaml b/bitnami/grafana-tempo/templates/distributor/pdb.yaml index 65fcb35387ad24..98bcb9dc060c37 100644 --- a/bitnami/grafana-tempo/templates/distributor/pdb.yaml +++ b/bitnami/grafana-tempo/templates/distributor/pdb.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.distributor.pdb.create .Values.distributor.pdb.create }} apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} kind: PodDisruptionBudget @@ -26,3 +27,4 @@ spec: matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} app.kubernetes.io/component: distributor {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/distributor/service.yaml b/bitnami/grafana-tempo/templates/distributor/service.yaml index 5edc5a64d88b8c..0e0e126ea87e3a 100644 --- a/bitnami/grafana-tempo/templates/distributor/service.yaml +++ b/bitnami/grafana-tempo/templates/distributor/service.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: v1 kind: Service metadata: @@ -116,3 +117,4 @@ spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.distributor.podLabels .Values.commonLabels ) "context" . ) }} selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} app.kubernetes.io/component: distributor +{{- end }} diff --git a/bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml b/bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml index b64e879b7e5efd..280641ef0c1dbe 100644 --- a/bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml +++ b/bitnami/grafana-tempo/templates/distributor/servicemonitor.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor @@ -46,3 +47,4 @@ spec: matchNames: - {{ .Release.Namespace }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/ingester/networkpolicy.yaml b/bitnami/grafana-tempo/templates/ingester/networkpolicy.yaml index 057818f7f5b521..4d45ef4eecccbc 100644 --- a/bitnami/grafana-tempo/templates/ingester/networkpolicy.yaml +++ b/bitnami/grafana-tempo/templates/ingester/networkpolicy.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.ingester.networkPolicy.enabled }} kind: NetworkPolicy apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} @@ -122,3 +123,4 @@ spec: {{- include "common.tplvalues.render" ( dict "value" .Values.ingester.networkPolicy.extraIngress "context" $ ) | nindent 4 }} {{- end }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/ingester/pdb.yaml b/bitnami/grafana-tempo/templates/ingester/pdb.yaml index bb34e87dc0a220..94027b950a5698 100644 --- a/bitnami/grafana-tempo/templates/ingester/pdb.yaml +++ b/bitnami/grafana-tempo/templates/ingester/pdb.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.ingester.pdb.create }} apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} kind: PodDisruptionBudget @@ -26,3 +27,4 @@ spec: matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} app.kubernetes.io/component: ingester {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/ingester/service.yaml b/bitnami/grafana-tempo/templates/ingester/service.yaml index 896aae87910726..897b52379d32b7 100644 --- a/bitnami/grafana-tempo/templates/ingester/service.yaml +++ b/bitnami/grafana-tempo/templates/ingester/service.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: v1 kind: Service metadata: @@ -59,3 +60,4 @@ spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingester.podLabels .Values.commonLabels ) "context" . ) }} selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} app.kubernetes.io/component: ingester +{{- end }} diff --git a/bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml b/bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml index 75bf3fca295872..b42822d110aa64 100644 --- a/bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml +++ b/bitnami/grafana-tempo/templates/ingester/servicemonitor.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor @@ -46,3 +47,4 @@ spec: matchNames: - {{ .Release.Namespace }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/ingester/statefulset.yaml b/bitnami/grafana-tempo/templates/ingester/statefulset.yaml index 6c195dfdb4a8d1..380151c313d658 100644 --- a/bitnami/grafana-tempo/templates/ingester/statefulset.yaml +++ b/bitnami/grafana-tempo/templates/ingester/statefulset.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} kind: StatefulSet metadata: @@ -231,3 +232,4 @@ spec: {{- end }} {{- include "common.storage.class" (dict "persistence" .Values.ingester.persistence "global" .Values.global) | nindent 8 }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/metrics-generator/deployment.yaml b/bitnami/grafana-tempo/templates/metrics-generator/deployment.yaml index 393d19ca7856a2..6ff3af79cb4cd3 100644 --- a/bitnami/grafana-tempo/templates/metrics-generator/deployment.yaml +++ b/bitnami/grafana-tempo/templates/metrics-generator/deployment.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} kind: Deployment metadata: @@ -175,3 +176,4 @@ spec: {{- if .Values.metricsGenerator.extraVolumes }} {{- include "common.tplvalues.render" (dict "value" .Values.metricsGenerator.extraVolumes "context" $) | nindent 8 }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/metrics-generator/networkpolicy.yaml b/bitnami/grafana-tempo/templates/metrics-generator/networkpolicy.yaml index 9a524503366551..17dd0d058b7e27 100644 --- a/bitnami/grafana-tempo/templates/metrics-generator/networkpolicy.yaml +++ b/bitnami/grafana-tempo/templates/metrics-generator/networkpolicy.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.metricsGenerator.networkPolicy.enabled }} kind: NetworkPolicy apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} @@ -122,3 +123,4 @@ spec: {{- include "common.tplvalues.render" ( dict "value" .Values.metricsGenerator.networkPolicy.extraIngress "context" $ ) | nindent 4 }} {{- end }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/metrics-generator/pdb.yaml b/bitnami/grafana-tempo/templates/metrics-generator/pdb.yaml index 9e29211964e51f..0f340f1dc7b6d0 100644 --- a/bitnami/grafana-tempo/templates/metrics-generator/pdb.yaml +++ b/bitnami/grafana-tempo/templates/metrics-generator/pdb.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.metricsGenerator.pdb.create }} apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} kind: PodDisruptionBudget @@ -26,3 +27,4 @@ spec: matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} app.kubernetes.io/component: metrics-generator {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/metrics-generator/service.yaml b/bitnami/grafana-tempo/templates/metrics-generator/service.yaml index 2cf269eb95450e..78c6973aa75c52 100644 --- a/bitnami/grafana-tempo/templates/metrics-generator/service.yaml +++ b/bitnami/grafana-tempo/templates/metrics-generator/service.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: v1 kind: Service metadata: @@ -51,3 +52,4 @@ spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metricsGenerator.podLabels .Values.commonLabels ) "context" . ) }} selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} app.kubernetes.io/component: metrics-generator +{{- end }} diff --git a/bitnami/grafana-tempo/templates/metrics-generator/servicemonitor.yaml b/bitnami/grafana-tempo/templates/metrics-generator/servicemonitor.yaml index 167cf1261fd103..3fbedcd2c050de 100644 --- a/bitnami/grafana-tempo/templates/metrics-generator/servicemonitor.yaml +++ b/bitnami/grafana-tempo/templates/metrics-generator/servicemonitor.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor @@ -46,3 +47,4 @@ spec: matchNames: - {{ .Release.Namespace }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/querier/deployment.yaml b/bitnami/grafana-tempo/templates/querier/deployment.yaml index e03984417b7b09..54e3bd70719567 100644 --- a/bitnami/grafana-tempo/templates/querier/deployment.yaml +++ b/bitnami/grafana-tempo/templates/querier/deployment.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} kind: Deployment metadata: @@ -175,3 +176,4 @@ spec: {{- if .Values.querier.extraVolumes }} {{- include "common.tplvalues.render" (dict "value" .Values.querier.extraVolumes "context" $) | nindent 8 }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/querier/networkpolicy.yaml b/bitnami/grafana-tempo/templates/querier/networkpolicy.yaml index a015f186e43945..3357ef2d02e770 100644 --- a/bitnami/grafana-tempo/templates/querier/networkpolicy.yaml +++ b/bitnami/grafana-tempo/templates/querier/networkpolicy.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.querier.networkPolicy.enabled }} kind: NetworkPolicy apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} @@ -122,3 +123,4 @@ spec: {{- include "common.tplvalues.render" ( dict "value" .Values.querier.networkPolicy.extraIngress "context" $ ) | nindent 4 }} {{- end }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/querier/pdb.yaml b/bitnami/grafana-tempo/templates/querier/pdb.yaml index 914df7ad1ee107..0217407b7ecb3b 100644 --- a/bitnami/grafana-tempo/templates/querier/pdb.yaml +++ b/bitnami/grafana-tempo/templates/querier/pdb.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.querier.pdb.create }} apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} kind: PodDisruptionBudget @@ -26,3 +27,4 @@ spec: matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} app.kubernetes.io/component: querier {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/querier/service.yaml b/bitnami/grafana-tempo/templates/querier/service.yaml index c072c8fa14d8fe..8e2ab183d9830f 100644 --- a/bitnami/grafana-tempo/templates/querier/service.yaml +++ b/bitnami/grafana-tempo/templates/querier/service.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: v1 kind: Service metadata: @@ -59,3 +60,4 @@ spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.querier.podLabels .Values.commonLabels ) "context" . ) }} selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} app.kubernetes.io/component: querier +{{- end }} diff --git a/bitnami/grafana-tempo/templates/querier/servicemonitor.yaml b/bitnami/grafana-tempo/templates/querier/servicemonitor.yaml index e2a46a74a03f02..65596ee123c4c7 100644 --- a/bitnami/grafana-tempo/templates/querier/servicemonitor.yaml +++ b/bitnami/grafana-tempo/templates/querier/servicemonitor.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor @@ -46,3 +47,4 @@ spec: matchNames: - {{ .Release.Namespace }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/deployment.yaml b/bitnami/grafana-tempo/templates/query-frontend/deployment.yaml index 9cbbe9053acccf..0616c0d58f8f44 100644 --- a/bitnami/grafana-tempo/templates/query-frontend/deployment.yaml +++ b/bitnami/grafana-tempo/templates/query-frontend/deployment.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} kind: Deployment metadata: @@ -260,3 +261,4 @@ spec: {{- if .Values.queryFrontend.extraVolumes }} {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.extraVolumes "context" $) | nindent 8 }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml b/bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml index 65904ac9cd1d63..dab8216e9246dc 100644 --- a/bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml +++ b/bitnami/grafana-tempo/templates/query-frontend/headless-service.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: v1 kind: Service metadata: @@ -36,3 +37,4 @@ spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.queryFrontend.podLabels .Values.commonLabels ) "context" . ) }} selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} app.kubernetes.io/component: query-frontend +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/networkpolicy.yaml b/bitnami/grafana-tempo/templates/query-frontend/networkpolicy.yaml index 264f8fed9f2d92..86abbbc2110d24 100644 --- a/bitnami/grafana-tempo/templates/query-frontend/networkpolicy.yaml +++ b/bitnami/grafana-tempo/templates/query-frontend/networkpolicy.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.queryFrontend.networkPolicy.enabled }} kind: NetworkPolicy apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} @@ -132,3 +133,4 @@ spec: {{- include "common.tplvalues.render" ( dict "value" .Values.queryFrontend.networkPolicy.extraIngress "context" $ ) | nindent 4 }} {{- end }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/pdb.yaml b/bitnami/grafana-tempo/templates/query-frontend/pdb.yaml index 456323b49ef289..b3101b58a72588 100644 --- a/bitnami/grafana-tempo/templates/query-frontend/pdb.yaml +++ b/bitnami/grafana-tempo/templates/query-frontend/pdb.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if .Values.queryFrontend.pdb.create }} apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} kind: PodDisruptionBudget @@ -28,3 +29,4 @@ spec: matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} app.kubernetes.io/component: query-frontend {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml b/bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml index 5d0c412aa0396f..2bc4c9807967c6 100644 --- a/bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml +++ b/bitnami/grafana-tempo/templates/query-frontend/query-configmap.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: v1 kind: ConfigMap metadata: @@ -18,3 +19,4 @@ metadata: data: tempo-query.yaml: |- {{- include "common.tplvalues.render" (dict "value" .Values.queryFrontend.query.configuration "context" $) | nindent 4 }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/service.yaml b/bitnami/grafana-tempo/templates/query-frontend/service.yaml index ec7b7efc93ce43..7ca53eaa03d34b 100644 --- a/bitnami/grafana-tempo/templates/query-frontend/service.yaml +++ b/bitnami/grafana-tempo/templates/query-frontend/service.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} apiVersion: v1 kind: Service metadata: @@ -62,3 +63,4 @@ spec: {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.queryFrontend.podLabels .Values.commonLabels ) "context" . ) }} selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} app.kubernetes.io/component: query-frontend +{{- end }} diff --git a/bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml b/bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml index b80a9c3b7c5554..c6f812e01009bc 100644 --- a/bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml +++ b/bitnami/grafana-tempo/templates/query-frontend/servicemonitor.yaml @@ -3,6 +3,7 @@ Copyright Broadcom, Inc. All Rights Reserved. SPDX-License-Identifier: APACHE-2.0 */}} +{{- if eq .Values.tempo.deploymentMode "microservices" }} {{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor @@ -47,3 +48,4 @@ spec: matchNames: - {{ .Release.Namespace }} {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/scaling-monolithic/headless-service.yaml b/bitnami/grafana-tempo/templates/scaling-monolithic/headless-service.yaml new file mode 100644 index 00000000000000..fec722feafd373 --- /dev/null +++ b/bitnami/grafana-tempo/templates/scaling-monolithic/headless-service.yaml @@ -0,0 +1,97 @@ +{{- /* +Copyright Broadcom, Inc. All Rights Reserved. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.tempo.deploymentMode "scalingMonolithic" }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.scaling-monolithic.fullname" . }}-headless + namespace: {{ .Release.Namespace | quote }} + {{- $versionLabel := dict "app.kubernetes.io/version" ( include "common.images.version" ( dict "imageRoot" .Values.scalingMonolithic.query.image "chart" .Chart ) ) }} + {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.commonLabels $versionLabel ) "context" . ) }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic + {{- if or .Values.commonAnnotations .Values.scalingMonolithic.service.headless.annotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.scalingMonolithic.service.headless.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "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.scalingMonolithic.service.ports.http }} + targetPort: http + protocol: TCP + - name: grpc + port: {{ .Values.scalingMonolithic.service.ports.grpc }} + targetPort: grpc + protocol: TCP + ## 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: 4318 + protocol: TCP + targetPort: otlp-http + - name: distributor-otlp-http-legacy + 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-grpc-legacy + port: 55680 + protocol: TCP + targetPort: otlp-grpc + {{- end }} + {{- if .Values.tempo.traces.opencensus }} + - name: distributor-opencensus + port: 55678 + protocol: TCP + targetPort: opencensus + {{- end }} + {{- if .Values.scalingMonolithic.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scalingMonolithic.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic +{{- end }} diff --git a/bitnami/grafana-tempo/templates/scaling-monolithic/networkpolicy.yaml b/bitnami/grafana-tempo/templates/scaling-monolithic/networkpolicy.yaml new file mode 100644 index 00000000000000..6e9780e5ef1571 --- /dev/null +++ b/bitnami/grafana-tempo/templates/scaling-monolithic/networkpolicy.yaml @@ -0,0 +1,126 @@ +{{- /* +Copyright Broadcom, Inc. All Rights Reserved. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.tempo.deploymentMode "scalingMonolithic" }} +{{- if .Values.scalingMonolithic.networkPolicy.enabled }} +kind: NetworkPolicy +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +metadata: + name: {{ template "grafana-tempo.scaling-monolithic.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scalingMonolithic.podLabels .Values.commonLabels ) "context" . ) }} + podSelector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: scaling-monolithic + policyTypes: + - Ingress + - Egress + {{- if .Values.scalingMonolithic.networkPolicy.allowExternalEgress }} + egress: + - {} + {{- else }} + egress: + # Allow dns resolution + - ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + # Allow outbound connections to tempo cluster + - ports: + - port: {{ .Values.tempo.containerPorts.web }} + - port: {{ .Values.tempo.containerPorts.gossipRing }} + - port: {{ .Values.tempo.containerPorts.grpc }} + {{/* The following ports are hardcoded in grafana-tempo */}} + {{- if .Values.tempo.traces.jaeger.thriftCompact }} + - port: 6831 + protocol: UDP + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftBinary }} + - port: 6832 + protocol: UDP + {{- end }} + {{- if .Values.tempo.traces.jaeger.thriftHttp }} + - port: 14268 + {{- end }} + {{- if .Values.tempo.traces.jaeger.grpc }} + - port: 14250 + {{- end }} + {{- if .Values.tempo.traces.zipkin }} + - port: 9411 + {{- end }} + {{- if .Values.tempo.traces.otlp.http }} + - port: 4318 + {{- end }} + {{- if .Values.tempo.traces.otlp.grpc }} + - port: 4317 + {{- end }} + {{- if .Values.tempo.traces.opencensus }} + - port: 55678 + {{- end }} + to: + - podSelector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }} + {{- if .Values.vulture.enabled }} + # Allow outbound connections to vulture + - ports: + - port: {{ .Values.vulture.containerPorts.http }} + to: + - podSelector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }} + app.kubernetes.io/component: vulture + {{- end }} + # Allow outbound connections to Memcached + - ports: + {{- if .Values.memcached.enabled }} + - port: {{ .Values.memcached.containerPorts.memcached }} + to: + - podSelector: + matchLabels: + app.kubernetes.io/name: memcached + app.kubernetes.io/instance: {{ .Release.Name }} + {{- else }} + - port: {{ .Values.externalMemcached.port }} + {{- end }} + {{- if .Values.scalingMonolithic.networkPolicy.extraEgress }} + {{- include "common.tplvalues.render" ( dict "value" .Values.scalingMonolithic.networkPolicy.extraEgress "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} + ingress: + - ports: + - port: {{ .Values.tempo.containerPorts.web }} + - port: {{ .Values.tempo.containerPorts.gossipRing }} + - port: {{ .Values.tempo.containerPorts.grpc }} + {{- if not .Values.scalingMonolithic.networkPolicy.allowExternal }} + from: + {{- if .Values.scalingMonolithic.networkPolicy.addExternalClientAccess }} + - podSelector: + matchLabels: + {{ template "grafana-tempo.scaling-monolithic.fullname" . }}-scalingMonolithic: "true" + {{- end }} + {{- if .Values.scalingMonolithic.networkPolicy.ingressPodMatchLabels }} + - podSelector: + matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.networkPolicy.ingressPodMatchLabels "context" $ ) | nindent 14 }} + {{- end }} + {{- if .Values.scalingMonolithic.networkPolicy.ingressNSMatchLabels }} + - namespaceSelector: + matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.networkPolicy.ingressNSMatchLabels "context" $ ) | nindent 14 }} + {{- if .Values.scalingMonolithic.networkPolicy.ingressNSPodMatchLabels }} + podSelector: + matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.networkPolicy.ingressNSPodMatchLabels "context" $ ) | nindent 14 }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.scalingMonolithic.networkPolicy.extraIngress }} + {{- include "common.tplvalues.render" ( dict "value" .Values.scalingMonolithic.networkPolicy.extraIngress "context" $ ) | nindent 4 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/scaling-monolithic/pdb.yaml b/bitnami/grafana-tempo/templates/scaling-monolithic/pdb.yaml new file mode 100644 index 00000000000000..a080a5dd0f1f66 --- /dev/null +++ b/bitnami/grafana-tempo/templates/scaling-monolithic/pdb.yaml @@ -0,0 +1,30 @@ +{{- /* +Copyright Broadcom, Inc. All Rights Reserved. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.tempo.deploymentMode "scalingMonolithic" }} +{{- if .Values.scalingMonolithic.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ template "grafana-tempo.scaling-monolithic.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.scalingMonolithic.pdb.minAvailable }} + minAvailable: {{ .Values.scalingMonolithic.pdb.minAvailable }} + {{- end }} + {{- if or .Values.scalingMonolithic.pdb.maxUnavailable (not .Values.scalingMonolithic.pdb.minAvailable) }} + maxUnavailable: {{ .Values.scalingMonolithic.pdb.maxUnavailable | default 1 }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" (dict "values" (list .Values.scalingMonolithic.podLabels .Values.commonLabels) "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: scaling-monolithic +{{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/scaling-monolithic/service.yaml b/bitnami/grafana-tempo/templates/scaling-monolithic/service.yaml new file mode 100644 index 00000000000000..5d9bac53456052 --- /dev/null +++ b/bitnami/grafana-tempo/templates/scaling-monolithic/service.yaml @@ -0,0 +1,120 @@ +{{- /* +Copyright Broadcom, Inc. All Rights Reserved. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.tempo.deploymentMode "scalingMonolithic" }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "grafana-tempo.scaling-monolithic.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic + {{- if or .Values.commonAnnotations .Values.scalingMonolithic.service.annotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.scalingMonolithic.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.scalingMonolithic.service.type }} + {{- if .Values.scalingMonolithic.service.sessionAffinity }} + sessionAffinity: {{ .Values.scalingMonolithic.service.sessionAffinity }} + {{- end }} + {{- if .Values.scalingMonolithic.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + {{- if and .Values.scalingMonolithic.service.clusterIP (eq .Values.scalingMonolithic.service.type "ClusterIP") }} + clusterIP: {{ .Values.scalingMonolithic.service.clusterIP }} + {{- end }} + {{- if or (eq .Values.scalingMonolithic.service.type "LoadBalancer") (eq .Values.scalingMonolithic.service.type "NodePort") }} + externalTrafficPolicy: {{ .Values.scalingMonolithic.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.scalingMonolithic.service.type "LoadBalancer") (not (empty .Values.scalingMonolithic.service.loadBalancerSourceRanges)) }} + loadBalancerSourceRanges: {{ .Values.scalingMonolithic.service.loadBalancerSourceRanges }} + {{- end }} + {{- if and (eq .Values.scalingMonolithic.service.type "LoadBalancer") (not (empty .Values.scalingMonolithic.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.scalingMonolithic.service.loadBalancerIP }} + {{- end }} + ports: + - name: http + port: {{ .Values.scalingMonolithic.service.ports.http }} + targetPort: http + protocol: TCP + {{- if (and (or (eq .Values.scalingMonolithic.service.type "NodePort") (eq .Values.scalingMonolithic.service.type "LoadBalancer")) (not (empty .Values.scalingMonolithic.service.nodePorts.http))) }} + nodePort: {{ .Values.scalingMonolithic.service.nodePorts.http }} + {{- else if eq .Values.scalingMonolithic.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: grpc + port: {{ .Values.scalingMonolithic.service.ports.grpc }} + targetPort: grpc + protocol: TCP + {{- if (and (or (eq .Values.scalingMonolithic.service.type "NodePort") (eq .Values.scalingMonolithic.service.type "LoadBalancer")) (not (empty .Values.scalingMonolithic.service.nodePorts.grpc))) }} + nodePort: {{ .Values.scalingMonolithic.service.nodePorts.grpc }} + {{- else if eq .Values.scalingMonolithic.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: 4318 + protocol: TCP + targetPort: otlp-http + - name: distributor-otlp-http-legacy + 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-grpc-legacy + port: 55680 + protocol: TCP + targetPort: otlp-grpc + {{- end }} + {{- if .Values.tempo.traces.opencensus }} + - name: distributor-opencensus + port: 55678 + protocol: TCP + targetPort: opencensus + {{- end }} + {{- if .Values.scalingMonolithic.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scalingMonolithic.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic +{{- end }} diff --git a/bitnami/grafana-tempo/templates/scaling-monolithic/servicemonitor.yaml b/bitnami/grafana-tempo/templates/scaling-monolithic/servicemonitor.yaml new file mode 100644 index 00000000000000..2c1c99764e8b2b --- /dev/null +++ b/bitnami/grafana-tempo/templates/scaling-monolithic/servicemonitor.yaml @@ -0,0 +1,50 @@ +{{- /* +Copyright Broadcom, Inc. All Rights Reserved. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.tempo.deploymentMode "scalingMonolithic" }} +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana-tempo.scaling-monolithic.fullname" . }} + namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }} + {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.metrics.serviceMonitor.jobLabel }} + jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel }} + {{- end }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }} + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 6 }} + {{- end }} + app.kubernetes.io/component: scaling-monolithic + 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 }} + {{- if .Values.metrics.serviceMonitor.honorLabels }} + honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- toYaml .Values.metrics.serviceMonitor.metricRelabelings | nindent 6 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.metrics.serviceMonitor.relabelings | nindent 6 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/scaling-monolithic/statefulset.yaml b/bitnami/grafana-tempo/templates/scaling-monolithic/statefulset.yaml new file mode 100644 index 00000000000000..e8e2ad61a6dbf7 --- /dev/null +++ b/bitnami/grafana-tempo/templates/scaling-monolithic/statefulset.yaml @@ -0,0 +1,235 @@ +{{- /* +Copyright Broadcom, Inc. All Rights Reserved. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.tempo.deploymentMode "scalingMonolithic" }} +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ template "grafana-tempo.scaling-monolithic.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scaling-monolithic + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.scalingMonolithic.replicaCount }} + {{- if .Values.scalingMonolithic.updateStrategy }} + updateStrategy: {{- toYaml .Values.scalingMonolithic.updateStrategy | nindent 4 }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scalingMonolithic.podLabels .Values.commonLabels ) "context" . ) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: scaling-monolithic + serviceName: {{ template "grafana-tempo.scaling-monolithic.fullname" . }} + template: + metadata: + annotations: + checksum/config: {{ include (print $.Template.BasePath "/tempo-configmap.yaml") . | sha256sum }} + {{- if .Values.scalingMonolithic.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: scaling-monolithic + tempo-gossip-member: "true" + spec: + serviceAccountName: {{ template "grafana-tempo.serviceAccountName" . }} + {{- include "grafana-tempo.imagePullSecrets" . | nindent 6 }} + automountServiceAccountToken: {{ .Values.scalingMonolithic.automountServiceAccountToken }} + {{- if .Values.scalingMonolithic.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.scalingMonolithic.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.scalingMonolithic.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.scalingMonolithic.podAffinityPreset "component" "scalingMonolithic" "customLabels" $podLabels "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.scalingMonolithic.podAntiAffinityPreset "component" "scalingMonolithic" "customLabels" $podLabels "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.scalingMonolithic.nodeAffinityPreset.type "key" .Values.scalingMonolithic.nodeAffinityPreset.key "values" .Values.scalingMonolithic.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.scalingMonolithic.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.scalingMonolithic.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.scalingMonolithic.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.tolerations "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.scalingMonolithic.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.topologySpreadConstraints "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.scalingMonolithic.priorityClassName }} + priorityClassName: {{ .Values.scalingMonolithic.priorityClassName | quote }} + {{- end }} + {{- if .Values.scalingMonolithic.schedulerName }} + schedulerName: {{ .Values.scalingMonolithic.schedulerName }} + {{- end }} + {{- if .Values.scalingMonolithic.podSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.scalingMonolithic.podSecurityContext "context" $) | nindent 8 }} + {{- end }} + enableServiceLinks: {{ .Values.scalingMonolithic.enableServiceLinks }} + initContainers: + {{- if .Values.scalingMonolithic.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.initContainers "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.volumePermissions.enabled .Values.scalingMonolithic.persistence.enabled }} + - name: volume-permissions + image: {{ include "grafana-tempo.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + args: + - -ec + - | + mkdir -p {{ .Values.tempo.dataDir }}{{- if .Values.scalingMonolithic.persistence.subPath }}/{{ .Values.scalingMonolithic.persistence.subPath }}{{- end }} + {{- if and .Values.scalingMonolithic.podSecurityContext.enabled .Values.scalingMonolithic.containerSecurityContext.enabled }} + find {{ .Values.tempo.dataDir }}{{- if .Values.scalingMonolithic.persistence.subPath }}/{{ .Values.scalingMonolithic.persistence.subPath }}{{- end }} -mindepth 1 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" | xargs -r chown -R {{ .Values.scalingMonolithic.containerSecurityContext.runAsUser }}:{{ .Values.scalingMonolithic.podSecurityContext.fsGroup }} + {{- 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: {{- include "common.tplvalues.render" (dict "value" .Values.volumePermissions.resources "context" $) | nindent 12 }} + {{- else if ne .Values.volumePermissions.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + - name: data + mountPath: {{ .Values.tempo.dataDir }} + {{- end }} + containers: + - name: grafana-tempo-scaling-monolithic + image: {{ template "grafana-tempo.image" . }} + imagePullPolicy: {{ .Values.tempo.image.pullPolicy }} + {{- if .Values.scalingMonolithic.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.scalingMonolithic.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.scalingMonolithic.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.scalingMonolithic.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.args "context" $) | nindent 12 }} + {{- else }} + args: + - -target=scalable-single-binary + - -config.file=/bitnami/grafana-tempo/conf/tempo.yaml + - -mem-ballast-size-mbs={{ .Values.tempo.memBallastSizeMbs }} + {{- end }} + {{- if .Values.scalingMonolithic.extraEnvVars }} + env: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.scalingMonolithic.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.scalingMonolithic.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - containerPort: {{ .Values.tempo.containerPorts.web }} + name: http + - containerPort: {{ .Values.tempo.containerPorts.gossipRing }} + name: http-memberlist + - containerPort: {{ .Values.tempo.containerPorts.grpc }} + name: grpc + {{- if .Values.scalingMonolithic.resources }} + resources: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.resources "context" $) | nindent 12 }} + {{- else if ne .Values.scalingMonolithic.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.scalingMonolithic.resourcesPreset) | nindent 12 }} + {{- end }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.scalingMonolithic.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.scalingMonolithic.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.scalingMonolithic.livenessProbe "enabled") "context" $) | nindent 12 }} + tcpSocket: + port: http + {{- end }} + {{- if .Values.scalingMonolithic.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.scalingMonolithic.readinessProbe.enabled }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.scalingMonolithic.readinessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: /ready + port: http + {{- end }} + {{- if .Values.scalingMonolithic.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.scalingMonolithic.startupProbe.enabled }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.scalingMonolithic.startupProbe "enabled") "context" $) | nindent 12 }} + tcpSocket: + port: http + {{- end }} + {{- end }} + {{- if .Values.scalingMonolithic.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + volumeMounts: + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + - 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.scalingMonolithic.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.scalingMonolithic.sidecars }} + {{- include "common.tplvalues.render" ( dict "value" .Values.scalingMonolithic.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + - name: empty-dir + emptyDir: {} + - name: tempo-config + configMap: + name: {{ template "grafana-tempo.tempoConfigmapName" . }} + - name: overrides-config + configMap: + name: {{ template "grafana-tempo.overridesConfigmapName" . }} + {{- if .Values.scalingMonolithic.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if not .Values.scalingMonolithic.persistence.enabled }} + - name: data + emptyDir: {} + {{- else }} + volumeClaimTemplates: + - metadata: + name: data + {{- if or .Values.scalingMonolithic.persistence.annotations .Values.commonAnnotations }} + {{- $claimAnnotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.scalingMonolithic.persistence.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $claimAnnotations "context" $) | nindent 10 }} + {{- end }} + {{- if .Values.commonLabels }} + labels: {{- include "common.tplvalues.render" (dict "value" .Values.commonLabels "context" $) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.scalingMonolithic.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.scalingMonolithic.persistence.size | quote }} + {{- if .Values.scalingMonolithic.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.scalingMonolithic.persistence.selector "context" $) | nindent 10 }} + {{- end }} + {{- include "common.storage.class" (dict "persistence" .Values.scalingMonolithic.persistence "global" .Values.global) | nindent 8 }} + {{- end }} +{{- end }} diff --git a/bitnami/grafana-tempo/templates/vulture/deployment.yaml b/bitnami/grafana-tempo/templates/vulture/deployment.yaml index 063004ed9dcee8..87cffc3d89fa95 100644 --- a/bitnami/grafana-tempo/templates/vulture/deployment.yaml +++ b/bitnami/grafana-tempo/templates/vulture/deployment.yaml @@ -91,8 +91,13 @@ spec: {{- else }} args: - -prometheus-listen-address=0.0.0.0:{{ .Values.vulture.containerPorts.http }} + {{- if eq .Values.tempo.deploymentMode "microservices" }} - -tempo-push-url=http://{{ template "grafana-tempo.distributor.fullname" . }} - -tempo-query-url=http://{{ template "grafana-tempo.query-frontend.fullname" . }}:{{ .Values.queryFrontend.service.ports.http }} + {{- else if eq .Values.tempo.deploymentMode "scalingMonolithic" }} + - -tempo-push-url=http://{{ template "grafana-tempo.scaling-monolithic.fullname" . }} + - -tempo-query-url=http://{{ template "grafana-tempo.scaling-monolithic.fullname" . }}:{{ .Values.scalingMonolithic.service.ports.http }} + {{- end }} {{- end }} {{- if .Values.vulture.extraEnvVars }} env: {{- include "common.tplvalues.render" (dict "value" .Values.vulture.extraEnvVars "context" $) | nindent 12 }} diff --git a/bitnami/grafana-tempo/values.yaml b/bitnami/grafana-tempo/values.yaml index 1937e16ebb21d5..c438f7c005bbba 100644 --- a/bitnami/grafana-tempo/values.yaml +++ b/bitnami/grafana-tempo/values.yaml @@ -102,6 +102,9 @@ tempo: ## - myRegistryKeySecretName ## pullSecrets: [] + ## @param tempo.deploymentMode decides components runs in a process. (allowed values: microservices, scalingMonolithic) + ## + deploymentMode: "microservices" ## @param tempo.memBallastSizeMbs Tempo components memory ballast size in MB ## memBallastSizeMbs: 1024 @@ -204,7 +207,11 @@ tempo: {{- end }} querier: frontend_worker: + {{- if eq .Values.tempo.deploymentMode "microservices" }} frontend_address: {{ include "grafana-tempo.query-frontend.fullname" . }}-headless:{{ .Values.queryFrontend.service.ports.grpc }} + {{- else if eq .Values.tempo.deploymentMode "scalingMonolithic" }} + frontend_address: {{ include "grafana-tempo.scaling-monolithic.fullname" . }}-headless:{{ .Values.scalingMonolithic.service.ports.grpc }} + {{- end }} ingester: lifecycler: ring: @@ -2728,6 +2735,598 @@ queryFrontend: ingressNSMatchLabels: {} ingressNSPodMatchLabels: {} +## @section Scalable Single Binary Deployment Parameters +## +scalingMonolithic: + ## @param scalingMonolithic.extraEnvVars Array with extra environment variables to add to scalingMonolithic nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param scalingMonolithic.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for scalingMonolithic nodes + ## + extraEnvVarsCM: "" + ## @param scalingMonolithic.extraEnvVarsSecret Name of existing Secret containing extra env vars for scalingMonolithic nodes + ## + extraEnvVarsSecret: "" + ## @param scalingMonolithic.command Override default container command (useful when using custom images) + ## + command: [] + ## @param scalingMonolithic.args Override default container args (useful when using custom images) + ## + args: [] + ## @param scalingMonolithic.replicaCount Number of scalingMonolithic replicas to deploy + ## + replicaCount: 1 + ## Configure extra options for scalingMonolithic containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes + ## @param scalingMonolithic.livenessProbe.enabled Enable livenessProbe on scalingMonolithic nodes + ## @param scalingMonolithic.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param scalingMonolithic.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param scalingMonolithic.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param scalingMonolithic.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param scalingMonolithic.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param scalingMonolithic.readinessProbe.enabled Enable readinessProbe on scalingMonolithic nodes + ## @param scalingMonolithic.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param scalingMonolithic.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param scalingMonolithic.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param scalingMonolithic.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param scalingMonolithic.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param scalingMonolithic.startupProbe.enabled Enable startupProbe on scalingMonolithic containers + ## @param scalingMonolithic.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param scalingMonolithic.startupProbe.periodSeconds Period seconds for startupProbe + ## @param scalingMonolithic.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param scalingMonolithic.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param scalingMonolithic.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param scalingMonolithic.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param scalingMonolithic.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## @param scalingMonolithic.customStartupProbe Custom startupProbe that overrides the default one + ## + customStartupProbe: {} + ## @param scalingMonolithic.lifecycleHooks for the scalingMonolithic container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## scalingMonolithic resource requests and limits + ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + ## @param scalingMonolithic.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if scalingMonolithic.resources is set (scalingMonolithic.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "nano" + ## @param scalingMonolithic.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} + ## Configure Pods Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param scalingMonolithic.podSecurityContext.enabled Enabled scalingMonolithic pods' Security Context + ## @param scalingMonolithic.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy + ## @param scalingMonolithic.podSecurityContext.sysctls Set kernel settings using the sysctl interface + ## @param scalingMonolithic.podSecurityContext.supplementalGroups Set filesystem extra groups + ## @param scalingMonolithic.podSecurityContext.fsGroup Set scalingMonolithic pod's Security Context fsGroup + ## + podSecurityContext: + enabled: true + fsGroupChangePolicy: Always + sysctls: [] + supplementalGroups: [] + fsGroup: 1001 + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param scalingMonolithic.containerSecurityContext.enabled Enabled containers' Security Context + ## @param scalingMonolithic.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container + ## @param scalingMonolithic.containerSecurityContext.runAsUser Set containers' Security Context runAsUser + ## @param scalingMonolithic.containerSecurityContext.runAsGroup Set containers' Security Context runAsGroup + ## @param scalingMonolithic.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot + ## @param scalingMonolithic.containerSecurityContext.privileged Set container's Security Context privileged + ## @param scalingMonolithic.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem + ## @param scalingMonolithic.containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation + ## @param scalingMonolithic.containerSecurityContext.capabilities.drop List of capabilities to be dropped + ## @param scalingMonolithic.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile + ## + containerSecurityContext: + enabled: true + seLinuxOptions: {} + runAsUser: 1001 + runAsGroup: 1001 + runAsNonRoot: true + privileged: false + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" + ## @param scalingMonolithic.automountServiceAccountToken Mount Service Account token in pod + ## + automountServiceAccountToken: false + ## @param scalingMonolithic.hostAliases scalingMonolithic pods host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param scalingMonolithic.podLabels Extra labels for scalingMonolithic pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param scalingMonolithic.podAnnotations Annotations for scalingMonolithic pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param scalingMonolithic.podAffinityPreset Pod affinity preset. Ignored if `scalingMonolithic.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param scalingMonolithic.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `scalingMonolithic.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node scalingMonolithic.affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param scalingMonolithic.nodeAffinityPreset.type Node affinity preset type. Ignored if `scalingMonolithic.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param scalingMonolithic.nodeAffinityPreset.key Node label key to match. Ignored if `scalingMonolithic.affinity` is set + ## + key: "" + ## @param scalingMonolithic.nodeAffinityPreset.values Node label values to match. Ignored if `scalingMonolithic.affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param scalingMonolithic.affinity Affinity for scalingMonolithic pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `scalingMonolithic.podAffinityPreset`, `scalingMonolithic.podAntiAffinityPreset`, and `scalingMonolithic.nodeAffinityPreset` will be ignored when it's set + ## + affinity: {} + ## @param scalingMonolithic.nodeSelector Node labels for scalingMonolithic pods assignment + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + ## + nodeSelector: {} + ## @param scalingMonolithic.tolerations Tolerations for scalingMonolithic pods assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param scalingMonolithic.topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains + ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods + ## + topologySpreadConstraints: [] + ## @param scalingMonolithic.priorityClassName scalingMonolithic pods' priorityClassName + ## + priorityClassName: "" + ## @param scalingMonolithic.schedulerName Kubernetes pod scheduler registry + ## https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param scalingMonolithic.updateStrategy.type scalingMonolithic statefulset strategy type + ## @param scalingMonolithic.updateStrategy.rollingUpdate scalingMonolithic statefulset rolling update configuration parameters + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + type: RollingUpdate + rollingUpdate: {} + ## @param scalingMonolithic.extraVolumes Optionally specify extra list of additional volumes for the scalingMonolithic pod(s) + ## + extraVolumes: [] + ## @param scalingMonolithic.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the scalingMonolithic container(s) + ## + extraVolumeMounts: [] + ## @param scalingMonolithic.sidecars Add additional sidecar containers to the scalingMonolithic pod(s) + ## e.g: + ## sidecars: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## ports: + ## - name: portname + ## containerPort: 1234 + ## + sidecars: [] + ## @param scalingMonolithic.initContainers Add additional init containers to the scalingMonolithic pod(s) + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: [] + ## Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb + ## @param scalingMonolithic.pdb.create Enable/disable a Pod Disruption Budget creation + ## @param scalingMonolithic.pdb.minAvailable Minimum number/percentage of pods that should remain scheduled + ## @param scalingMonolithic.pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `scalingMonolithic.pdb.minAvailable` and `scalingMonolithic.pdb.maxUnavailable` are empty. + ## + pdb: + create: true + minAvailable: "" + maxUnavailable: "" + ## @param scalingMonolithic.enableServiceLinks Whether information about services should be injected into pod's environment variable + ## The environment variables injected by service links are not used, but can lead to slow boot times or slow running of the scripts when there are many services in the current namespace. + ## If you experience slow pod startups or slow running of the scripts you probably want to set this to `false`. + ## + enableServiceLinks: true + ## @section scalingMonolithic Persistence Parameters + + ## Enable persistence using Persistent Volume Claims + ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ + ## + persistence: + ## @param scalingMonolithic.persistence.enabled Enable persistence in scalingMonolithic instances + ## + enabled: true + ## @param scalingMonolithic.persistence.existingClaim Name of an existing PVC to use + ## + existingClaim: "" + ## @param scalingMonolithic.persistence.storageClass PVC Storage Class for Memcached data volume + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + ## @param scalingMonolithic.persistence.subPath The subdirectory of the volume to mount to + ## + subPath: "" + ## @param scalingMonolithic.persistence.accessModes PVC Access modes + ## + accessModes: + - ReadWriteOnce + ## @param scalingMonolithic.persistence.size PVC Storage Request for Memcached data volume + ## + size: 8Gi + ## @param scalingMonolithic.persistence.annotations Additional PVC annotations + ## + annotations: {} + ## @param scalingMonolithic.persistence.selector Selector to match an existing Persistent Volume for scalingMonolithic's data PVC + ## If set, the PVC can't have a PV dynamically provisioned for it + ## E.g. + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @section scalingMonolithic Traffic Exposure Parameters + ## + + query: + ## @param scalingMonolithic.query.enabled Whether to enable the query container for legacy Grafana compatibility with jaeger-ui. Only required for grafana version <7.5 + enabled: false + ## Bitnami Grafana Tempo Query image + ## ref: https://hub.docker.com/r/bitnami/grafana-tempo-query/tags/ + ## @param scalingMonolithic.query.image.registry [default: REGISTRY_NAME] Grafana Tempo Query image registry + ## @param scalingMonolithic.query.image.repository [default: REPOSITORY_NAME/grafana-tempo-query] Grafana Tempo Query image repository + ## @skip scalingMonolithic.query.image.tag Grafana Tempo Query image tag (immutable tags are recommended) + ## @param scalingMonolithic.query.image.digest Grafana Tempo Query image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param scalingMonolithic.query.image.pullPolicy Grafana Tempo Query image pull policy + ## @param scalingMonolithic.query.image.pullSecrets Grafana Tempo Query image pull secrets + ## + image: + registry: docker.io + repository: bitnami/grafana-tempo-query + tag: 2.6.1-debian-12-r4 + digest: "" + ## Specify a imagePullPolicy + ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param scalingMonolithic.query.configuration [string] Query sidecar configuration + ## + configuration: | + backend: 127.0.0.1:{{ .Values.tempo.containerPorts.web }} + ## @param scalingMonolithic.query.containerPorts.jaegerMetrics scalingMonolithic query sidecar Jaeger metrics container port + ## @param scalingMonolithic.query.containerPorts.jaegerUI scalingMonolithic query sidecar Jaeger UI container port + ## @param scalingMonolithic.query.containerPorts.jaegerGRPC scalingMonolithic query sidecar Jaeger UI container port + ## + containerPorts: + jaegerMetrics: 16687 + jaegerUI: 16686 + jaegerGRPC: 16685 + ## @param scalingMonolithic.query.existingConfigmap Name of a configmap with the query configuration + ## + existingConfigmap: "" + ## @param scalingMonolithic.query.extraEnvVars Array with extra environment variables to add to scalingMonolithic nodes + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + ## + extraEnvVars: [] + ## @param scalingMonolithic.query.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for scalingMonolithic nodes + ## + extraEnvVarsCM: "" + ## @param scalingMonolithic.query.extraEnvVarsSecret Name of existing Secret containing extra env vars for scalingMonolithic nodes + ## + extraEnvVarsSecret: "" + ## @param scalingMonolithic.query.command Override default container command (useful when using custom images) + ## + command: [] + ## @param scalingMonolithic.query.args Override default container args (useful when using custom images) + ## + args: [] + ## Configure extra options for Query sidecar containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes + ## @param scalingMonolithic.query.livenessProbe.enabled Enable livenessProbe on Query sidecar nodes + ## @param scalingMonolithic.query.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param scalingMonolithic.query.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param scalingMonolithic.query.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param scalingMonolithic.query.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param scalingMonolithic.query.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param scalingMonolithic.query.readinessProbe.enabled Enable readinessProbe on Query sidecar nodes + ## @param scalingMonolithic.query.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param scalingMonolithic.query.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param scalingMonolithic.query.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param scalingMonolithic.query.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param scalingMonolithic.query.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ## @param scalingMonolithic.query.startupProbe.enabled Enable startupProbe on Query sidecar containers + ## @param scalingMonolithic.query.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param scalingMonolithic.query.startupProbe.periodSeconds Period seconds for startupProbe + ## @param scalingMonolithic.query.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param scalingMonolithic.query.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param scalingMonolithic.query.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param scalingMonolithic.query.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param scalingMonolithic.query.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## @param scalingMonolithic.query.customStartupProbe Custom startupProbe that overrides the default one + ## + customStartupProbe: {} + ## @param scalingMonolithic.query.lifecycleHooks for the query sidecar container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param scalingMonolithic.query.containerSecurityContext.enabled Enabled containers' Security Context + ## @param scalingMonolithic.query.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container + ## @param scalingMonolithic.query.containerSecurityContext.runAsUser Set containers' Security Context runAsUser + + ## @param scalingMonolithic.query.containerSecurityContext.runAsGroup Set containers' Security Context runAsGroup + ## @param scalingMonolithic.query.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot + ## @param scalingMonolithic.query.containerSecurityContext.privileged Set container's Security Context privileged + ## @param scalingMonolithic.query.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem + ## @param scalingMonolithic.query.containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation + ## @param scalingMonolithic.query.containerSecurityContext.capabilities.drop List of capabilities to be dropped + ## @param scalingMonolithic.query.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile + ## + containerSecurityContext: + enabled: true + seLinuxOptions: {} + runAsUser: 1001 + runAsGroup: 1001 + runAsNonRoot: true + privileged: false + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" + ## Query sidecar resource requests and limits + ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + ## @param scalingMonolithic.query.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if scalingMonolithic.query.resources is set (scalingMonolithic.query.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "nano" + ## @param scalingMonolithic.query.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} + ## @param scalingMonolithic.query.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the scalingMonolithic container(s) + ## + extraVolumeMounts: [] + ## @section Scaling Monolithic Traffic Exposure Parameters + ## + + ## scalingMonolithic service parameters + ## + service: + ## @param scalingMonolithic.service.type scalingMonolithic service type + ## + type: ClusterIP + ## @param scalingMonolithic.service.ports.http scalingMonolithic HTTP service port + ## @param scalingMonolithic.service.ports.grpc scalingMonolithic GRPC service port + ## + ports: + http: 3200 + grpc: 9095 + ## Node ports to expose + ## NOTE: choose port between <30000-32767> + ## @param scalingMonolithic.service.nodePorts.http Node port for HTTP + ## @param scalingMonolithic.service.nodePorts.grpc Node port for GRPC + ## + nodePorts: + http: "" + grpc: "" + ## @param scalingMonolithic.service.sessionAffinity Control where client requests go, to the same pod or round-robin + ## Values: ClientIP or None + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/ + ## + sessionAffinity: None + ## @param scalingMonolithic.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## @param scalingMonolithic.service.clusterIP scalingMonolithic service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: "" + ## @param scalingMonolithic.service.loadBalancerIP scalingMonolithic service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: "" + ## @param scalingMonolithic.service.loadBalancerSourceRanges scalingMonolithic service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param scalingMonolithic.service.externalTrafficPolicy scalingMonolithic service external traffic policy + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param scalingMonolithic.service.annotations Additional custom annotations for scalingMonolithic service + ## + annotations: {} + ## @param scalingMonolithic.service.extraPorts Extra ports to expose in the scalingMonolithic service + ## + extraPorts: [] + ## Headless service properties + ## + headless: + ## @param scalingMonolithic.service.headless.annotations Annotations for the headless service. + ## + annotations: {} + ## Network Policies + ## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/ + ## + networkPolicy: + ## @param scalingMonolithic.networkPolicy.enabled Specifies whether a NetworkPolicy should be created + ## + enabled: true + ## @param scalingMonolithic.networkPolicy.allowExternal Don't require server label for connections + ## The Policy model to apply. When set to false, only pods with the correct + ## server label will have network access to the ports server is listening + ## on. When true, server will accept connections from any source + ## (with the correct destination port). + ## + allowExternal: true + ## @param scalingMonolithic.networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations. + ## + allowExternalEgress: true + ## @param scalingMonolithic.networkPolicy.addExternalClientAccess Allow access from pods with client label set to "true". Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. + ## + addExternalClientAccess: true + ## @param scalingMonolithic.networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy + ## e.g: + ## extraIngress: + ## - ports: + ## - port: 1234 + ## from: + ## - podSelector: + ## - matchLabels: + ## - role: frontend + ## - podSelector: + ## - matchExpressions: + ## - key: role + ## operator: In + ## values: + ## - frontend + extraIngress: [] + ## @param scalingMonolithic.networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy + ## e.g: + ## extraEgress: + ## - ports: + ## - port: 1234 + ## to: + ## - podSelector: + ## - matchLabels: + ## - role: frontend + ## - podSelector: + ## - matchExpressions: + ## - key: role + ## operator: In + ## values: + ## - frontend + ## + extraEgress: [] + ## @param scalingMonolithic.networkPolicy.ingressPodMatchLabels [object] Labels to match to allow traffic from other pods. Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. + ## e.g: + ## ingressPodMatchLabels: + ## my-client: "true" + # + ingressPodMatchLabels: {} + ## @param scalingMonolithic.networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces. Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. + ## @param scalingMonolithic.networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces. Ignored if `scalingMonolithic.networkPolicy.allowExternal` is true. + ## + ingressNSMatchLabels: {} + ingressNSPodMatchLabels: {} + ## @section Vulture Deployment Parameters ## vulture: