From 08e61ca4db086b573ef636a156bfc624132515be Mon Sep 17 00:00:00 2001 From: Christian Haudum Date: Tue, 3 Sep 2024 17:40:00 +0200 Subject: [PATCH] feat(helm): Replace bloom compactor with bloom planner and builder (#14003) This is PR is part of the process of removing the bloom compactor and replace it with bloom planner and bloom builder. Part of https://github.com/grafana/loki/issues/13957 Signed-off-by: Christian Haudum --- Makefile | 4 +- docs/sources/setup/install/helm/reference.md | 628 ++++++++++++++---- production/helm/loki/CHANGELOG.md | 4 + production/helm/loki/Chart.yaml | 2 +- production/helm/loki/README.md | 2 +- production/helm/loki/distributed-values.yaml | 7 +- .../bloom-builder/_helpers-bloom-builder.tpl | 32 + .../deployment-bloom-builder.yaml | 142 ++++ .../loki/templates/bloom-builder/hpa.yaml | 55 ++ .../poddisruptionbudget-bloom-builder.yaml | 21 + .../service-bloom-builder-headless.yaml | 43 ++ .../bloom-builder/service-bloom-builder.yaml | 41 ++ .../_helpers-bloom-compactor.tpl | 58 -- .../bloom-planner/_helpers-bloom-planner.tpl | 58 ++ .../service-bloom-planner-headless.yaml | 36 + .../statefulset-bloom-planner.yaml} | 72 +- production/helm/loki/values.yaml | 218 ++++-- 17 files changed, 1118 insertions(+), 305 deletions(-) create mode 100644 production/helm/loki/templates/bloom-builder/_helpers-bloom-builder.tpl create mode 100644 production/helm/loki/templates/bloom-builder/deployment-bloom-builder.yaml create mode 100644 production/helm/loki/templates/bloom-builder/hpa.yaml create mode 100644 production/helm/loki/templates/bloom-builder/poddisruptionbudget-bloom-builder.yaml create mode 100644 production/helm/loki/templates/bloom-builder/service-bloom-builder-headless.yaml create mode 100644 production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml delete mode 100644 production/helm/loki/templates/bloom-compactor/_helpers-bloom-compactor.tpl create mode 100644 production/helm/loki/templates/bloom-planner/_helpers-bloom-planner.tpl create mode 100644 production/helm/loki/templates/bloom-planner/service-bloom-planner-headless.yaml rename production/helm/loki/templates/{bloom-compactor/statefulset-bloom-compactor.yaml => bloom-planner/statefulset-bloom-planner.yaml} (67%) diff --git a/Makefile b/Makefile index 0c551dd0c7ba..cd1eb0217486 100644 --- a/Makefile +++ b/Makefile @@ -193,8 +193,8 @@ production/helm/loki/src/helm-test/helm-test: helm-lint: ## run helm linter $(MAKE) -BC production/helm/loki lint -helm-docs: - helm-docs -c production/helm/loki -g production/helm/loki +helm-docs: ## generate reference documentation + $(MAKE) -BC docs sources/setup/install/helm/reference.md ################# # Loki-QueryTee # diff --git a/docs/sources/setup/install/helm/reference.md b/docs/sources/setup/install/helm/reference.md index b616845c7d13..f9028da64384 100644 --- a/docs/sources/setup/install/helm/reference.md +++ b/docs/sources/setup/install/helm/reference.md @@ -698,9 +698,9 @@ null - bloomCompactor + bloomBuilder object - Configuration for the bloom compactor + Configuration for the bloom-builder
 {
   "affinity": {
@@ -709,7 +709,369 @@ null
         {
           "labelSelector": {
             "matchLabels": {
-              "app.kubernetes.io/component": "bloom-compactor"
+              "app.kubernetes.io/component": "bloom-builder"
+            }
+          },
+          "topologyKey": "kubernetes.io/hostname"
+        }
+      ]
+    }
+  },
+  "appProtocol": {
+    "grpc": ""
+  },
+  "autoscaling": {
+    "behavior": {
+      "enabled": false,
+      "scaleDown": {},
+      "scaleUp": {}
+    },
+    "customMetrics": [],
+    "enabled": false,
+    "maxReplicas": 3,
+    "minReplicas": 1,
+    "targetCPUUtilizationPercentage": 60,
+    "targetMemoryUtilizationPercentage": null
+  },
+  "command": null,
+  "extraArgs": [],
+  "extraContainers": [],
+  "extraEnv": [],
+  "extraEnvFrom": [],
+  "extraVolumeMounts": [],
+  "extraVolumes": [],
+  "hostAliases": [],
+  "image": {
+    "registry": null,
+    "repository": null,
+    "tag": null
+  },
+  "maxUnavailable": null,
+  "nodeSelector": {},
+  "podAnnotations": {},
+  "podLabels": {},
+  "priorityClassName": null,
+  "replicas": 0,
+  "resources": {},
+  "serviceLabels": {},
+  "terminationGracePeriodSeconds": 30,
+  "tolerations": []
+}
+
+ + + + bloomBuilder.affinity + object + Affinity for bloom-builder pods. +
+Hard node anti-affinity
+
+ + + + bloomBuilder.appProtocol + object + Adds the appProtocol field to the queryFrontend service. This allows bloomBuilder to work with istio protocol selection. +
+{
+  "grpc": ""
+}
+
+ + + + bloomBuilder.appProtocol.grpc + string + Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" +
+""
+
+ + + + bloomBuilder.autoscaling.behavior.enabled + bool + Enable autoscaling behaviours +
+false
+
+ + + + bloomBuilder.autoscaling.behavior.scaleDown + object + define scale down policies, must conform to HPAScalingRules +
+{}
+
+ + + + bloomBuilder.autoscaling.behavior.scaleUp + object + define scale up policies, must conform to HPAScalingRules +
+{}
+
+ + + + bloomBuilder.autoscaling.customMetrics + list + Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics) +
+[]
+
+ + + + bloomBuilder.autoscaling.enabled + bool + Enable autoscaling for the bloom-builder +
+false
+
+ + + + bloomBuilder.autoscaling.maxReplicas + int + Maximum autoscaling replicas for the bloom-builder +
+3
+
+ + + + bloomBuilder.autoscaling.minReplicas + int + Minimum autoscaling replicas for the bloom-builder +
+1
+
+ + + + bloomBuilder.autoscaling.targetCPUUtilizationPercentage + int + Target CPU utilisation percentage for the bloom-builder +
+60
+
+ + + + bloomBuilder.autoscaling.targetMemoryUtilizationPercentage + string + Target memory utilisation percentage for the bloom-builder +
+null
+
+ + + + bloomBuilder.command + string + Command to execute instead of defined in Docker image +
+null
+
+ + + + bloomBuilder.extraArgs + list + Additional CLI args for the bloom-builder +
+[]
+
+ + + + bloomBuilder.extraContainers + list + Containers to add to the bloom-builder pods +
+[]
+
+ + + + bloomBuilder.extraEnv + list + Environment variables to add to the bloom-builder pods +
+[]
+
+ + + + bloomBuilder.extraEnvFrom + list + Environment variables from secrets or configmaps to add to the bloom-builder pods +
+[]
+
+ + + + bloomBuilder.extraVolumeMounts + list + Volume mounts to add to the bloom-builder pods +
+[]
+
+ + + + bloomBuilder.extraVolumes + list + Volumes to add to the bloom-builder pods +
+[]
+
+ + + + bloomBuilder.hostAliases + list + hostAliases to add +
+[]
+
+ + + + bloomBuilder.image.registry + string + The Docker registry for the bloom-builder image. Overrides `loki.image.registry` +
+null
+
+ + + + bloomBuilder.image.repository + string + Docker image repository for the bloom-builder image. Overrides `loki.image.repository` +
+null
+
+ + + + bloomBuilder.image.tag + string + Docker image tag for the bloom-builder image. Overrides `loki.image.tag` +
+null
+
+ + + + bloomBuilder.maxUnavailable + string + Pod Disruption Budget maxUnavailable +
+null
+
+ + + + bloomBuilder.nodeSelector + object + Node selector for bloom-builder pods +
+{}
+
+ + + + bloomBuilder.podAnnotations + object + Annotations for bloom-builder pods +
+{}
+
+ + + + bloomBuilder.podLabels + object + Labels for bloom-builder pods +
+{}
+
+ + + + bloomBuilder.priorityClassName + string + The name of the PriorityClass for bloom-builder pods +
+null
+
+ + + + bloomBuilder.replicas + int + Number of replicas for the bloom-builder +
+0
+
+ + + + bloomBuilder.resources + object + Resource requests and limits for the bloom-builder +
+{}
+
+ + + + bloomBuilder.serviceLabels + object + Labels for bloom-builder service +
+{}
+
+ + + + bloomBuilder.terminationGracePeriodSeconds + int + Grace period to allow the bloom-builder to shutdown before it is killed +
+30
+
+ + + + bloomBuilder.tolerations + list + Tolerations for bloom-builder pods +
+[]
+
+ + + + bloomGateway + object + Configuration for the bloom-gateway +
+{
+  "affinity": {
+    "podAntiAffinity": {
+      "requiredDuringSchedulingIgnoredDuringExecution": [
+        {
+          "labelSelector": {
+            "matchLabels": {
+              "app.kubernetes.io/component": "bloom-gateway"
             }
           },
           "topologyKey": "kubernetes.io/hostname"
@@ -773,16 +1135,16 @@ null
 
 		
 		
-			bloomCompactor.affinity
+			bloomGateway.affinity
 			object
-			Affinity for bloom compactor pods.
+			Affinity for bloom-gateway pods.
 			
 Hard node anti-affinity
 
- bloomCompactor.appProtocol + bloomGateway.appProtocol object Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
@@ -793,7 +1155,7 @@ Hard node anti-affinity
 
 		
 		
-			bloomCompactor.command
+			bloomGateway.command
 			string
 			Command to execute instead of defined in Docker image
 			
@@ -802,61 +1164,61 @@ null
 
 		
 		
-			bloomCompactor.extraArgs
+			bloomGateway.extraArgs
 			list
-			Additional CLI args for the bloom compactor
+			Additional CLI args for the bloom-gateway
 			
 []
 
- bloomCompactor.extraContainers + bloomGateway.extraContainers list - Containers to add to the bloom compactor pods + Containers to add to the bloom-gateway pods
 []
 
- bloomCompactor.extraEnv + bloomGateway.extraEnv list - Environment variables to add to the bloom compactor pods + Environment variables to add to the bloom-gateway pods
 []
 
- bloomCompactor.extraEnvFrom + bloomGateway.extraEnvFrom list - Environment variables from secrets or configmaps to add to the bloom compactor pods + Environment variables from secrets or configmaps to add to the bloom-gateway pods
 []
 
- bloomCompactor.extraVolumeMounts + bloomGateway.extraVolumeMounts list - Volume mounts to add to the bloom compactor pods + Volume mounts to add to the bloom-gateway pods
 []
 
- bloomCompactor.extraVolumes + bloomGateway.extraVolumes list - Volumes to add to the bloom compactor pods + Volumes to add to the bloom-gateway pods
 []
 
- bloomCompactor.hostAliases + bloomGateway.hostAliases list hostAliases to add
@@ -865,43 +1227,43 @@ null
 
 		
 		
-			bloomCompactor.image.registry
+			bloomGateway.image.registry
 			string
-			The Docker registry for the bloom compactor image. Overrides `loki.image.registry`
+			The Docker registry for the bloom-gateway image. Overrides `loki.image.registry`
 			
 null
 
- bloomCompactor.image.repository + bloomGateway.image.repository string - Docker image repository for the bloom compactor image. Overrides `loki.image.repository` + Docker image repository for the bloom-gateway image. Overrides `loki.image.repository`
 null
 
- bloomCompactor.image.tag + bloomGateway.image.tag string - Docker image tag for the bloom compactor image. Overrides `loki.image.tag` + Docker image tag for the bloom-gateway image. Overrides `loki.image.tag`
 null
 
- bloomCompactor.initContainers + bloomGateway.initContainers list - Init containers to add to the bloom compactor pods + Init containers to add to the bloom-gateway pods
 []
 
- bloomCompactor.livenessProbe + bloomGateway.livenessProbe object liveness probe settings for ingester pods. If empty use `loki.livenessProbe`
@@ -910,34 +1272,34 @@ null
 
 		
 		
-			bloomCompactor.nodeSelector
+			bloomGateway.nodeSelector
 			object
-			Node selector for bloom compactor pods
+			Node selector for bloom-gateway pods
 			
 {}
 
- bloomCompactor.persistence.annotations + bloomGateway.persistence.annotations object - Annotations for bloom compactor PVCs + Annotations for bloom-gateway PVCs
 {}
 
- bloomCompactor.persistence.claims + bloomGateway.persistence.claims list - List of the bloom compactor PVCs + List of the bloom-gateway PVCs
 
 
- bloomCompactor.persistence.enableStatefulSetAutoDeletePVC + bloomGateway.persistence.enableStatefulSetAutoDeletePVC bool Enable StatefulSetAutoDeletePVC feature
@@ -946,16 +1308,16 @@ false
 
 		
 		
-			bloomCompactor.persistence.enabled
+			bloomGateway.persistence.enabled
 			bool
-			Enable creating PVCs for the bloom compactor
+			Enable creating PVCs for the bloom-gateway
 			
 false
 
- bloomCompactor.persistence.size + bloomGateway.persistence.size string Size of persistent disk
@@ -964,7 +1326,7 @@ false
 
 		
 		
-			bloomCompactor.persistence.storageClass
+			bloomGateway.persistence.storageClass
 			string
 			Storage class to be used. If defined, storageClassName: . If set to "-", storageClassName: "", which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
 			
@@ -973,34 +1335,34 @@ null
 
 		
 		
-			bloomCompactor.podAnnotations
+			bloomGateway.podAnnotations
 			object
-			Annotations for bloom compactor pods
+			Annotations for bloom-gateway pods
 			
 {}
 
- bloomCompactor.podLabels + bloomGateway.podLabels object - Labels for bloom compactor pods + Labels for bloom-gateway pods
 {}
 
- bloomCompactor.priorityClassName + bloomGateway.priorityClassName string - The name of the PriorityClass for bloom compactor pods + The name of the PriorityClass for bloom-gateway pods
 null
 
- bloomCompactor.readinessProbe + bloomGateway.readinessProbe object readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`
@@ -1009,34 +1371,34 @@ null
 
 		
 		
-			bloomCompactor.replicas
+			bloomGateway.replicas
 			int
-			Number of replicas for the bloom compactor
+			Number of replicas for the bloom-gateway
 			
 0
 
- bloomCompactor.resources + bloomGateway.resources object - Resource requests and limits for the bloom compactor + Resource requests and limits for the bloom-gateway
 {}
 
- bloomCompactor.serviceAccount.annotations + bloomGateway.serviceAccount.annotations object - Annotations for the bloom compactor service account + Annotations for the bloom-gateway service account
 {}
 
- bloomCompactor.serviceAccount.automountServiceAccountToken + bloomGateway.serviceAccount.automountServiceAccountToken bool Set this toggle to false to opt out of automounting API credentials for the service account
@@ -1045,54 +1407,54 @@ true
 
 		
 		
-			bloomCompactor.serviceAccount.imagePullSecrets
+			bloomGateway.serviceAccount.imagePullSecrets
 			list
-			Image pull secrets for the bloom compactor service account
+			Image pull secrets for the bloom-gateway service account
 			
 []
 
- bloomCompactor.serviceAccount.name + bloomGateway.serviceAccount.name string - The name of the ServiceAccount to use for the bloom compactor. If not set and create is true, a name is generated by appending "-bloom-compactor" to the common ServiceAccount. + The name of the ServiceAccount to use for the bloom-gateway. If not set and create is true, a name is generated by appending "-bloom-gateway" to the common ServiceAccount.
 null
 
- bloomCompactor.serviceLabels + bloomGateway.serviceLabels object - Labels for bloom compactor service + Labels for bloom-gateway service
 {}
 
- bloomCompactor.terminationGracePeriodSeconds + bloomGateway.terminationGracePeriodSeconds int - Grace period to allow the bloom compactor to shutdown before it is killed + Grace period to allow the bloom-gateway to shutdown before it is killed
 30
 
- bloomCompactor.tolerations + bloomGateway.tolerations list - Tolerations for bloom compactor pods + Tolerations for bloom-gateway pods
 []
 
- bloomGateway + bloomPlanner object - Configuration for the bloom gateway + Configuration for the bloom-planner
 {
   "affinity": {
@@ -1101,7 +1463,7 @@ null
         {
           "labelSelector": {
             "matchLabels": {
-              "app.kubernetes.io/component": "bloom-gateway"
+              "app.kubernetes.io/component": "bloom-planner"
             }
           },
           "topologyKey": "kubernetes.io/hostname"
@@ -1130,13 +1492,7 @@ null
   "nodeSelector": {},
   "persistence": {
     "annotations": {},
-    "claims": [
-      {
-        "name": "data",
-        "size": "10Gi",
-        "storageClass": null
-      }
-    ],
+    "claims": [],
     "enableStatefulSetAutoDeletePVC": false,
     "enabled": false,
     "size": "10Gi",
@@ -1165,16 +1521,16 @@ null
 
 		
 		
-			bloomGateway.affinity
+			bloomPlanner.affinity
 			object
-			Affinity for bloom gateway pods.
+			Affinity for bloom-planner pods.
 			
 Hard node anti-affinity
 
- bloomGateway.appProtocol + bloomPlanner.appProtocol object Set the optional grpc service protocol. Ex: "grpc", "http2" or "https"
@@ -1185,7 +1541,7 @@ Hard node anti-affinity
 
 		
 		
-			bloomGateway.command
+			bloomPlanner.command
 			string
 			Command to execute instead of defined in Docker image
 			
@@ -1194,61 +1550,61 @@ null
 
 		
 		
-			bloomGateway.extraArgs
+			bloomPlanner.extraArgs
 			list
-			Additional CLI args for the bloom gateway
+			Additional CLI args for the bloom-planner
 			
 []
 
- bloomGateway.extraContainers + bloomPlanner.extraContainers list - Containers to add to the bloom gateway pods + Containers to add to the bloom-planner pods
 []
 
- bloomGateway.extraEnv + bloomPlanner.extraEnv list - Environment variables to add to the bloom gateway pods + Environment variables to add to the bloom-planner pods
 []
 
- bloomGateway.extraEnvFrom + bloomPlanner.extraEnvFrom list - Environment variables from secrets or configmaps to add to the bloom gateway pods + Environment variables from secrets or configmaps to add to the bloom-planner pods
 []
 
- bloomGateway.extraVolumeMounts + bloomPlanner.extraVolumeMounts list - Volume mounts to add to the bloom gateway pods + Volume mounts to add to the bloom-planner pods
 []
 
- bloomGateway.extraVolumes + bloomPlanner.extraVolumes list - Volumes to add to the bloom gateway pods + Volumes to add to the bloom-planner pods
 []
 
- bloomGateway.hostAliases + bloomPlanner.hostAliases list hostAliases to add
@@ -1257,43 +1613,43 @@ null
 
 		
 		
-			bloomGateway.image.registry
+			bloomPlanner.image.registry
 			string
-			The Docker registry for the bloom gateway image. Overrides `loki.image.registry`
+			The Docker registry for the bloom-planner image. Overrides `loki.image.registry`
 			
 null
 
- bloomGateway.image.repository + bloomPlanner.image.repository string - Docker image repository for the bloom gateway image. Overrides `loki.image.repository` + Docker image repository for the bloom-planner image. Overrides `loki.image.repository`
 null
 
- bloomGateway.image.tag + bloomPlanner.image.tag string - Docker image tag for the bloom gateway image. Overrides `loki.image.tag` + Docker image tag for the bloom-planner image. Overrides `loki.image.tag`
 null
 
- bloomGateway.initContainers + bloomPlanner.initContainers list - Init containers to add to the bloom gateway pods + Init containers to add to the bloom-planner pods
 []
 
- bloomGateway.livenessProbe + bloomPlanner.livenessProbe object liveness probe settings for ingester pods. If empty use `loki.livenessProbe`
@@ -1302,34 +1658,34 @@ null
 
 		
 		
-			bloomGateway.nodeSelector
+			bloomPlanner.nodeSelector
 			object
-			Node selector for bloom gateway pods
+			Node selector for bloom-planner pods
 			
 {}
 
- bloomGateway.persistence.annotations + bloomPlanner.persistence.annotations object - Annotations for bloom gateway PVCs + Annotations for bloom-planner PVCs
 {}
 
- bloomGateway.persistence.claims + bloomPlanner.persistence.claims list - List of the bloom gateway PVCs + List of the bloom-planner PVCs
-
+[]
 
- bloomGateway.persistence.enableStatefulSetAutoDeletePVC + bloomPlanner.persistence.enableStatefulSetAutoDeletePVC bool Enable StatefulSetAutoDeletePVC feature
@@ -1338,16 +1694,16 @@ false
 
 		
 		
-			bloomGateway.persistence.enabled
+			bloomPlanner.persistence.enabled
 			bool
-			Enable creating PVCs for the bloom gateway
+			Enable creating PVCs for the bloom-planner
 			
 false
 
- bloomGateway.persistence.size + bloomPlanner.persistence.size string Size of persistent disk
@@ -1356,7 +1712,7 @@ false
 
 		
 		
-			bloomGateway.persistence.storageClass
+			bloomPlanner.persistence.storageClass
 			string
 			Storage class to be used. If defined, storageClassName: . If set to "-", storageClassName: "", which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack).
 			
@@ -1365,34 +1721,34 @@ null
 
 		
 		
-			bloomGateway.podAnnotations
+			bloomPlanner.podAnnotations
 			object
-			Annotations for bloom gateway pods
+			Annotations for bloom-planner pods
 			
 {}
 
- bloomGateway.podLabels + bloomPlanner.podLabels object - Labels for bloom gateway pods + Labels for bloom-planner pods
 {}
 
- bloomGateway.priorityClassName + bloomPlanner.priorityClassName string - The name of the PriorityClass for bloom gateway pods + The name of the PriorityClass for bloom-planner pods
 null
 
- bloomGateway.readinessProbe + bloomPlanner.readinessProbe object readiness probe settings for ingester pods. If empty, use `loki.readinessProbe`
@@ -1401,34 +1757,34 @@ null
 
 		
 		
-			bloomGateway.replicas
+			bloomPlanner.replicas
 			int
-			Number of replicas for the bloom gateway
+			Number of replicas for the bloom-planner
 			
 0
 
- bloomGateway.resources + bloomPlanner.resources object - Resource requests and limits for the bloom gateway + Resource requests and limits for the bloom-planner
 {}
 
- bloomGateway.serviceAccount.annotations + bloomPlanner.serviceAccount.annotations object - Annotations for the bloom gateway service account + Annotations for the bloom-planner service account
 {}
 
- bloomGateway.serviceAccount.automountServiceAccountToken + bloomPlanner.serviceAccount.automountServiceAccountToken bool Set this toggle to false to opt out of automounting API credentials for the service account
@@ -1437,45 +1793,45 @@ true
 
 		
 		
-			bloomGateway.serviceAccount.imagePullSecrets
+			bloomPlanner.serviceAccount.imagePullSecrets
 			list
-			Image pull secrets for the bloom gateway service account
+			Image pull secrets for the bloom-planner service account
 			
 []
 
- bloomGateway.serviceAccount.name + bloomPlanner.serviceAccount.name string - The name of the ServiceAccount to use for the bloom gateway. If not set and create is true, a name is generated by appending "-bloom-gateway" to the common ServiceAccount. + The name of the ServiceAccount to use for the bloom-planner. If not set and create is true, a name is generated by appending "-bloom-planner" to the common ServiceAccount.
 null
 
- bloomGateway.serviceLabels + bloomPlanner.serviceLabels object - Labels for bloom gateway service + Labels for bloom-planner service
 {}
 
- bloomGateway.terminationGracePeriodSeconds + bloomPlanner.terminationGracePeriodSeconds int - Grace period to allow the bloom gateway to shutdown before it is killed + Grace period to allow the bloom-planner to shutdown before it is killed
 30
 
- bloomGateway.tolerations + bloomPlanner.tolerations list - Tolerations for bloom gateway pods + Tolerations for bloom-planner pods
 []
 
diff --git a/production/helm/loki/CHANGELOG.md b/production/helm/loki/CHANGELOG.md index 4efe3289a67e..1b68e6a5b1ca 100644 --- a/production/helm/loki/CHANGELOG.md +++ b/production/helm/loki/CHANGELOG.md @@ -13,6 +13,10 @@ Entries should include a reference to the pull request that introduced the chang [//]: # ( : do not remove this line. This locator is used by the CI pipeline to automatically create a changelog entry for each new Loki release. Add other chart versions and respective changelog entries bellow this line.) +## 6.12.0 + +- [ENHANCEMENT] Replace Bloom Compactor component with Bloom Planner and Bloom Builder. These are the new components to build bloom blocks. + ## 6.11.0 - [FEATURE] Add support for configuring persistence for memcached. diff --git a/production/helm/loki/Chart.yaml b/production/helm/loki/Chart.yaml index c6fcd38c5c54..dcef3406eaac 100644 --- a/production/helm/loki/Chart.yaml +++ b/production/helm/loki/Chart.yaml @@ -3,7 +3,7 @@ name: loki description: Helm chart for Grafana Loki and Grafana Enterprise Logs supporting both simple, scalable and distributed modes. type: application appVersion: 3.1.1 -version: 6.11.0 +version: 6.12.0 home: https://grafana.github.io/helm-charts sources: - https://github.com/grafana/loki diff --git a/production/helm/loki/README.md b/production/helm/loki/README.md index c29dbfe95c4f..766cb151c496 100644 --- a/production/helm/loki/README.md +++ b/production/helm/loki/README.md @@ -1,6 +1,6 @@ # loki -![Version: 6.11.0](https://img.shields.io/badge/Version-6.11.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.1.1](https://img.shields.io/badge/AppVersion-3.1.1-informational?style=flat-square) +![Version: 6.12.0](https://img.shields.io/badge/Version-6.12.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.1.1](https://img.shields.io/badge/AppVersion-3.1.1-informational?style=flat-square) Helm chart for Grafana Loki and Grafana Enterprise Logs supporting both simple, scalable and distributed modes. diff --git a/production/helm/loki/distributed-values.yaml b/production/helm/loki/distributed-values.yaml index 0016b724ce57..78a1f111cd24 100644 --- a/production/helm/loki/distributed-values.yaml +++ b/production/helm/loki/distributed-values.yaml @@ -47,7 +47,10 @@ indexGateway: replicas: 2 maxUnavailable: 1 -bloomCompactor: +# optional experimental components +bloomPlanner: + replicas: 0 +bloomBuilder: replicas: 0 bloomGateway: replicas: 0 @@ -66,5 +69,3 @@ write: singleBinary: replicas: 0 - - diff --git a/production/helm/loki/templates/bloom-builder/_helpers-bloom-builder.tpl b/production/helm/loki/templates/bloom-builder/_helpers-bloom-builder.tpl new file mode 100644 index 000000000000..46359dffdf00 --- /dev/null +++ b/production/helm/loki/templates/bloom-builder/_helpers-bloom-builder.tpl @@ -0,0 +1,32 @@ +{{/* +bloom-builder fullname +*/}} +{{- define "loki.bloomBuilderFullname" -}} +{{ include "loki.fullname" . }}-bloom-builder +{{- end }} + +{{/* +bloom-builder common labels +*/}} +{{- define "loki.bloomBuilderLabels" -}} +{{ include "loki.labels" . }} +app.kubernetes.io/component: bloom-builder +{{- end }} + +{{/* +bloom-builder selector labels +*/}} +{{- define "loki.bloomBuilderSelectorLabels" -}} +{{ include "loki.selectorLabels" . }} +app.kubernetes.io/component: bloom-builder +{{- end }} + +{{/* +bloom-builder priority class name +*/}} +{{- define "loki.bloomBuilderPriorityClassName" -}} +{{- $pcn := coalesce .Values.global.priorityClassName .Values.bloomBuilder.priorityClassName -}} +{{- if $pcn }} +priorityClassName: {{ $pcn }} +{{- end }} +{{- end }} diff --git a/production/helm/loki/templates/bloom-builder/deployment-bloom-builder.yaml b/production/helm/loki/templates/bloom-builder/deployment-bloom-builder.yaml new file mode 100644 index 000000000000..5735de5da23d --- /dev/null +++ b/production/helm/loki/templates/bloom-builder/deployment-bloom-builder.yaml @@ -0,0 +1,142 @@ +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- if $isDistributed -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "loki.bloomBuilderFullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "loki.bloomBuilderLabels" . | nindent 4 }} + {{- with .Values.loki.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: +{{- if not .Values.bloomBuilder.autoscaling.enabled }} + replicas: {{ .Values.bloomBuilder.replicas }} +{{- end }} + strategy: + rollingUpdate: + maxSurge: 0 + maxUnavailable: 1 + revisionHistoryLimit: {{ .Values.loki.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "loki.bloomBuilderSelectorLabels" . | nindent 6 }} + template: + metadata: + annotations: + {{- include "loki.config.checksum" . | nindent 8 }} + {{- with .Values.loki.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.bloomBuilder.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "loki.bloomBuilderSelectorLabels" . | nindent 8 }} + app.kubernetes.io/part-of: memberlist + {{- with .Values.loki.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.bloomBuilder.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ include "loki.serviceAccountName" . }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.bloomBuilder.hostAliases }} + hostAliases: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- include "loki.bloomBuilderPriorityClassName" . | nindent 6 }} + securityContext: + {{- toYaml .Values.loki.podSecurityContext | nindent 8 }} + terminationGracePeriodSeconds: {{ .Values.bloomBuilder.terminationGracePeriodSeconds }} + containers: + - name: bloom-builder + image: {{ include "loki.image" . }} + imagePullPolicy: {{ .Values.loki.image.pullPolicy }} + {{- if or .Values.loki.command .Values.bloomBuilder.command }} + command: + - {{ coalesce .Values.bloomBuilder.command .Values.loki.command | quote }} + {{- end }} + args: + - -config.file=/etc/loki/config/config.yaml + - -target=bloom-builder + {{- with .Values.bloomBuilder.extraArgs }} + {{- toYaml . | nindent 12 }} + {{- end }} + ports: + - name: http-metrics + containerPort: 3100 + protocol: TCP + - name: grpc + containerPort: 9095 + protocol: TCP + - name: http-memberlist + containerPort: 7946 + protocol: TCP + {{- with .Values.bloomBuilder.extraEnv }} + env: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.bloomBuilder.extraEnvFrom }} + envFrom: + {{- toYaml . | nindent 12 }} + {{- end }} + securityContext: + {{- toYaml .Values.loki.containerSecurityContext | nindent 12 }} + readinessProbe: + {{- toYaml .Values.loki.readinessProbe | nindent 12 }} + volumeMounts: + - name: config + mountPath: /etc/loki/config + - name: runtime-config + mountPath: /etc/loki/runtime-config + {{- if .Values.enterprise.enabled }} + - name: license + mountPath: /etc/loki/license + {{- end }} + {{- with .Values.bloomBuilder.extraVolumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.bloomBuilder.resources | nindent 12 }} + {{- if .Values.bloomBuilder.extraContainers }} + {{- toYaml .Values.bloomBuilder.extraContainers | nindent 8}} + {{- end }} + {{- with .Values.bloomBuilder.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.bloomBuilder.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.bloomBuilder.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: config + {{- include "loki.configVolume" . | nindent 10 }} + - name: runtime-config + configMap: + name: {{ template "loki.name" . }}-runtime + {{- if .Values.enterprise.enabled }} + - name: license + secret: + {{- if .Values.enterprise.useExternalLicense }} + secretName: {{ .Values.enterprise.externalLicenseName }} + {{- else }} + secretName: enterprise-logs-license + {{- end }} + {{- end }} + {{- with .Values.bloomBuilder.extraVolumes }} + {{- toYaml . | nindent 8 }} + {{- end }} +{{- end -}} diff --git a/production/helm/loki/templates/bloom-builder/hpa.yaml b/production/helm/loki/templates/bloom-builder/hpa.yaml new file mode 100644 index 000000000000..2b04647d2aa6 --- /dev/null +++ b/production/helm/loki/templates/bloom-builder/hpa.yaml @@ -0,0 +1,55 @@ +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- if and $isDistributed .Values.bloomBuilder.autoscaling.enabled }} +{{- $apiVersion := include "loki.hpa.apiVersion" . -}} +apiVersion: {{ $apiVersion }} +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "loki.bloomBuilderFullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "loki.bloomBuilderLabels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "loki.bloomBuilderFullname" . }} + minReplicas: {{ .Values.bloomBuilder.autoscaling.minReplicas }} + maxReplicas: {{ .Values.bloomBuilder.autoscaling.maxReplicas }} + metrics: + {{- with .Values.bloomBuilder.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + {{- if (eq $apiVersion "autoscaling/v2") }} + target: + type: Utilization + averageUtilization: {{ . }} + {{- else }} + targetAverageUtilization: {{ . }} + {{- end }} + {{- end }} + {{- with .Values.bloomBuilder.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + {{- if (eq $apiVersion "autoscaling/v2") }} + target: + type: Utilization + averageUtilization: {{ . }} + {{- else }} + targetAverageUtilization: {{ . }} + {{- end }} + {{- end }} + {{- with .Values.bloomBuilder.autoscaling.customMetrics }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if .Values.bloomBuilder.autoscaling.behavior.enabled }} + behavior: + {{- with .Values.bloomBuilder.autoscaling.behavior.scaleDown }} + scaleDown: {{ toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.bloomBuilder.autoscaling.behavior.scaleUp }} + scaleUp: {{ toYaml . | nindent 6 }} + {{- end }} + {{- end }} +{{- end }} diff --git a/production/helm/loki/templates/bloom-builder/poddisruptionbudget-bloom-builder.yaml b/production/helm/loki/templates/bloom-builder/poddisruptionbudget-bloom-builder.yaml new file mode 100644 index 000000000000..e66d762c0e64 --- /dev/null +++ b/production/helm/loki/templates/bloom-builder/poddisruptionbudget-bloom-builder.yaml @@ -0,0 +1,21 @@ +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- if and $isDistributed (gt (int .Values.bloomBuilder.replicas) 1) }} +{{- if kindIs "invalid" .Values.bloomBuilder.maxUnavailable }} +{{- fail "`.Values.bloomBuilder.maxUnavailable` must be set when `.Values.bloomBuilder.replicas` is greater than 1." }} +{{- else }} +apiVersion: {{ include "loki.pdb.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "loki.bloomBuilderFullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "loki.bloomBuilderLabels" . | nindent 4 }} +spec: + selector: + matchLabels: + {{- include "loki.bloomBuilderSelectorLabels" . | nindent 6 }} + {{- with .Values.bloomBuilder.maxUnavailable }} + maxUnavailable: {{ . }} + {{- end }} +{{- end }} +{{- end }} diff --git a/production/helm/loki/templates/bloom-builder/service-bloom-builder-headless.yaml b/production/helm/loki/templates/bloom-builder/service-bloom-builder-headless.yaml new file mode 100644 index 000000000000..e089d4d2de40 --- /dev/null +++ b/production/helm/loki/templates/bloom-builder/service-bloom-builder-headless.yaml @@ -0,0 +1,43 @@ +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- if $isDistributed -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "loki.bloomBuilderFullname" . }}-headless + namespace: {{ .Release.Namespace }} + labels: + {{- include "loki.bloomBuilderLabels" . | nindent 4 }} + {{- with .Values.bloomBuilder.serviceLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + prometheus.io/service-monitor: "false" + {{- with .Values.loki.serviceAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + clusterIP: None + type: ClusterIP + publishNotReadyAddresses: true + ports: + - name: http-metrics + port: 3100 + targetPort: http-metrics + protocol: TCP + - name: grpc + port: 9095 + targetPort: grpc + protocol: TCP + {{- if .Values.bloomBuilder.appProtocol.grpc }} + appProtocol: {{ .Values.bloomBuilder.appProtocol.grpc }} + {{- end }} + - name: grpclb + port: 9096 + targetPort: grpc + protocol: TCP + {{- if .Values.bloomBuilder.appProtocol.grpc }} + appProtocol: {{ .Values.bloomBuilder.appProtocol.grpc }} + {{- end }} + selector: + {{- include "loki.bloomBuilderSelectorLabels" . | nindent 4 }} +{{- end -}} diff --git a/production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml b/production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml new file mode 100644 index 000000000000..aab082d72293 --- /dev/null +++ b/production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml @@ -0,0 +1,41 @@ +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- if $isDistributed -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "loki.bloomBuilderFullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "loki.bloomBuilderLabels" . | nindent 4 }} + {{- with .Values.bloomBuilder.serviceLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.loki.serviceAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: ClusterIP + publishNotReadyAddresses: true + ports: + - name: http-metrics + port: 3100 + targetPort: http-metrics + protocol: TCP + - name: grpc + port: 9095 + targetPort: grpc + protocol: TCP + {{- if .Values.bloomBuilder.appProtocol.grpc }} + appProtocol: {{ .Values.bloomBuilder.appProtocol.grpc }} + {{- end }} + - name: grpclb + port: 9096 + targetPort: grpc + protocol: TCP + {{- if .Values.bloomBuilder.appProtocol.grpc }} + appProtocol: {{ .Values.bloomBuilder.appProtocol.grpc }} + {{- end }} + selector: + {{- include "loki.bloomBuilderSelectorLabels" . | nindent 4 }} +{{- end -}} diff --git a/production/helm/loki/templates/bloom-compactor/_helpers-bloom-compactor.tpl b/production/helm/loki/templates/bloom-compactor/_helpers-bloom-compactor.tpl deleted file mode 100644 index 193a8f883b12..000000000000 --- a/production/helm/loki/templates/bloom-compactor/_helpers-bloom-compactor.tpl +++ /dev/null @@ -1,58 +0,0 @@ -{{/* -bloom compactor fullname -*/}} -{{- define "loki.bloomCompactorFullname" -}} -{{ include "loki.fullname" . }}-bloom-compactor -{{- end }} - -{{/* -bloom compactor common labels -*/}} -{{- define "loki.bloomCompactorLabels" -}} -{{ include "loki.labels" . }} -app.kubernetes.io/component: bloom-compactor -{{- end }} - -{{/* -bloom compactor selector labels -*/}} -{{- define "loki.bloomCompactorSelectorLabels" -}} -{{ include "loki.selectorLabels" . }} -app.kubernetes.io/component: bloom-compactor -{{- end }} - -{{/* -bloom compactor readinessProbe -*/}} -{{- define "loki.bloomCompactor.readinessProbe" -}} -{{- with .Values.bloomCompactor.readinessProbe }} -readinessProbe: - {{- toYaml . | nindent 2 }} -{{- else }} -{{- with .Values.loki.readinessProbe }} -readinessProbe: - {{- toYaml . | nindent 2 }} -{{- end }} -{{- end }} -{{- end -}} - -{{/* -bloom compactor priority class name -*/}} -{{- define "loki.bloomCompactorPriorityClassName" }} -{{- $pcn := coalesce .Values.global.priorityClassName .Values.bloomCompactor.priorityClassName -}} -{{- if $pcn }} -priorityClassName: {{ $pcn }} -{{- end }} -{{- end }} - -{{/* -Create the name of the bloom compactor service account -*/}} -{{- define "loki.bloomCompactorServiceAccountName" -}} -{{- if .Values.bloomCompactor.serviceAccount.create -}} - {{ default (print (include "loki.serviceAccountName" .) "-bloom-compactor") .Values.bloomCompactor.serviceAccount.name }} -{{- else -}} - {{ default (include "loki.serviceAccountName" .) .Values.bloomCompactor.serviceAccount.name }} -{{- end -}} -{{- end -}} diff --git a/production/helm/loki/templates/bloom-planner/_helpers-bloom-planner.tpl b/production/helm/loki/templates/bloom-planner/_helpers-bloom-planner.tpl new file mode 100644 index 000000000000..a4a8c6e4f9d2 --- /dev/null +++ b/production/helm/loki/templates/bloom-planner/_helpers-bloom-planner.tpl @@ -0,0 +1,58 @@ +{{/* +bloom planner fullname +*/}} +{{- define "loki.bloomPlannerFullname" -}} +{{ include "loki.fullname" . }}-bloom-planner +{{- end }} + +{{/* +bloom planner common labels +*/}} +{{- define "loki.bloomPlannerLabels" -}} +{{ include "loki.labels" . }} +app.kubernetes.io/component: bloom-planner +{{- end }} + +{{/* +bloom planner selector labels +*/}} +{{- define "loki.bloomPlannerSelectorLabels" -}} +{{ include "loki.selectorLabels" . }} +app.kubernetes.io/component: bloom-planner +{{- end }} + +{{/* +bloom planner readinessProbe +*/}} +{{- define "loki.bloomPlanner.readinessProbe" -}} +{{- with .Values.bloomPlanner.readinessProbe }} +readinessProbe: + {{- toYaml . | nindent 2 }} +{{- else }} +{{- with .Values.loki.readinessProbe }} +readinessProbe: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- end }} +{{- end -}} + +{{/* +bloom planner priority class name +*/}} +{{- define "loki.bloomPlannerPriorityClassName" }} +{{- $pcn := coalesce .Values.global.priorityClassName .Values.bloomPlanner.priorityClassName -}} +{{- if $pcn }} +priorityClassName: {{ $pcn }} +{{- end }} +{{- end }} + +{{/* +Create the name of the bloom planner service account +*/}} +{{- define "loki.bloomPlannerServiceAccountName" -}} +{{- if .Values.bloomPlanner.serviceAccount.create -}} + {{ default (print (include "loki.serviceAccountName" .) "-bloom-planner") .Values.bloomPlanner.serviceAccount.name }} +{{- else -}} + {{ default (include "loki.serviceAccountName" .) .Values.bloomPlanner.serviceAccount.name }} +{{- end -}} +{{- end -}} diff --git a/production/helm/loki/templates/bloom-planner/service-bloom-planner-headless.yaml b/production/helm/loki/templates/bloom-planner/service-bloom-planner-headless.yaml new file mode 100644 index 000000000000..fd02c64acd50 --- /dev/null +++ b/production/helm/loki/templates/bloom-planner/service-bloom-planner-headless.yaml @@ -0,0 +1,36 @@ +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- if $isDistributed -}} +{{- if (gt (int .Values.bloomPlanner.replicas) 0) -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "loki.bloomPlannerFullname" . }}-headless + namespace: {{ .Release.Namespace }} + labels: + {{- include "loki.bloomPlannerSelectorLabels" . | nindent 4 }} + {{- with .Values.bloomPlanner.serviceLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.loki.serviceAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: ClusterIP + clusterIP: None + ports: + - name: http-metrics + port: 3100 + targetPort: http-metrics + protocol: TCP + - name: grpc + port: 9095 + targetPort: grpc + protocol: TCP + {{- if .Values.bloomPlanner.appProtocol.grpc }} + appProtocol: {{ .Values.bloomPlanner.appProtocol.grpc }} + {{- end }} + selector: + {{- include "loki.bloomPlannerSelectorLabels" . | nindent 4 }} +{{- end -}} +{{- end -}} diff --git a/production/helm/loki/templates/bloom-compactor/statefulset-bloom-compactor.yaml b/production/helm/loki/templates/bloom-planner/statefulset-bloom-planner.yaml similarity index 67% rename from production/helm/loki/templates/bloom-compactor/statefulset-bloom-compactor.yaml rename to production/helm/loki/templates/bloom-planner/statefulset-bloom-planner.yaml index 424fa4bb65d7..8d9a9f23998a 100644 --- a/production/helm/loki/templates/bloom-compactor/statefulset-bloom-compactor.yaml +++ b/production/helm/loki/templates/bloom-planner/statefulset-bloom-planner.yaml @@ -1,33 +1,33 @@ {{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} {{- if $isDistributed }} -{{- if (gt (int .Values.bloomCompactor.replicas) 0) -}} +{{- if (gt (int .Values.bloomPlanner.replicas) 0) -}} apiVersion: apps/v1 kind: StatefulSet metadata: - name: {{ include "loki.bloomCompactorFullname" . }} + name: {{ include "loki.bloomPlannerFullname" . }} namespace: {{ .Release.Namespace }} labels: - {{- include "loki.bloomCompactorLabels" . | nindent 4 }} + {{- include "loki.bloomPlannerLabels" . | nindent 4 }} {{- with .Values.loki.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: - replicas: {{ .Values.bloomCompactor.replicas }} + replicas: {{ .Values.bloomPlanner.replicas }} podManagementPolicy: Parallel updateStrategy: rollingUpdate: partition: 0 - serviceName: {{ include "loki.bloomCompactorFullname" . }}-headless + serviceName: {{ include "loki.bloomPlannerFullname" . }}-headless revisionHistoryLimit: {{ .Values.loki.revisionHistoryLimit }} - {{- if and (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) (.Values.bloomCompactor.persistence.enableStatefulSetAutoDeletePVC) }} + {{- if and (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) (.Values.bloomPlanner.persistence.enableStatefulSetAutoDeletePVC) }} persistentVolumeClaimRetentionPolicy: - whenDeleted: {{ .Values.bloomCompactor.persistence.whenDeleted }} - whenScaled: {{ .Values.bloomCompactor.persistence.whenScaled }} + whenDeleted: {{ .Values.bloomPlanner.persistence.whenDeleted }} + whenScaled: {{ .Values.bloomPlanner.persistence.whenScaled }} {{- end }} selector: matchLabels: - {{- include "loki.bloomCompactorSelectorLabels" . | nindent 6 }} + {{- include "loki.bloomPlannerSelectorLabels" . | nindent 6 }} template: metadata: annotations: @@ -35,16 +35,16 @@ spec: {{- with .Values.loki.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.bloomCompactor.podAnnotations }} + {{- with .Values.bloomPlanner.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} labels: - {{- include "loki.bloomCompactorSelectorLabels" . | nindent 8 }} + {{- include "loki.bloomPlannerSelectorLabels" . | nindent 8 }} app.kubernetes.io/part-of: memberlist {{- with .Values.loki.podLabels }} {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.bloomCompactor.podLabels }} + {{- with .Values.bloomPlanner.podLabels }} {{- toYaml . | nindent 8 }} {{- end }} spec: @@ -53,30 +53,30 @@ spec: imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.bloomCompactor.hostAliases }} + {{- with .Values.bloomPlanner.hostAliases }} hostAliases: {{- toYaml . | nindent 8 }} {{- end }} - {{- include "loki.bloomCompactorPriorityClassName" . | nindent 6 }} + {{- include "loki.bloomPlannerPriorityClassName" . | nindent 6 }} securityContext: {{- toYaml .Values.loki.podSecurityContext | nindent 8 }} - terminationGracePeriodSeconds: {{ .Values.bloomCompactor.terminationGracePeriodSeconds }} - {{- with .Values.bloomCompactor.initContainers }} + terminationGracePeriodSeconds: {{ .Values.bloomPlanner.terminationGracePeriodSeconds }} + {{- with .Values.bloomPlanner.initContainers }} initContainers: {{- toYaml . | nindent 8 }} {{- end }} containers: - - name: bloom-compactor + - name: bloom-planner image: {{ include "loki.image" . }} imagePullPolicy: {{ .Values.loki.image.pullPolicy }} - {{- if or .Values.loki.command .Values.bloomCompactor.command }} + {{- if or .Values.loki.command .Values.bloomPlanner.command }} command: - - {{ coalesce .Values.bloomCompactor.command .Values.loki.command | quote }} + - {{ coalesce .Values.bloomPlanner.command .Values.loki.command | quote }} {{- end }} args: - -config.file=/etc/loki/config/config.yaml - - -target=bloom-compactor - {{- with .Values.bloomCompactor.extraArgs }} + - -target=bloom-planner + {{- with .Values.bloomPlanner.extraArgs }} {{- toYaml . | nindent 12 }} {{- end }} ports: @@ -89,17 +89,17 @@ spec: - name: http-memberlist containerPort: 7946 protocol: TCP - {{- with .Values.bloomCompactor.extraEnv }} + {{- with .Values.bloomPlanner.extraEnv }} env: {{- toYaml . | nindent 12 }} {{- end }} - {{- with .Values.bloomCompactor.extraEnvFrom }} + {{- with .Values.bloomPlanner.extraEnvFrom }} envFrom: {{- toYaml . | nindent 12 }} {{- end }} securityContext: {{- toYaml .Values.loki.containerSecurityContext | nindent 12 }} - {{- include "loki.bloomCompactor.readinessProbe" . | nindent 10 }} + {{- include "loki.bloomPlanner.readinessProbe" . | nindent 10 }} volumeMounts: - name: temp mountPath: /tmp @@ -113,25 +113,25 @@ spec: - name: license mountPath: /etc/loki/license {{- end }} - {{- with .Values.bloomCompactor.extraVolumeMounts }} + {{- with .Values.bloomPlanner.extraVolumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} - {{- with .Values.bloomCompactor.resources }} + {{- with .Values.bloomPlanner.resources }} resources: {{- toYaml . | nindent 12 }} {{- end }} - {{- if .Values.bloomCompactor.extraContainers }} - {{- toYaml .Values.bloomCompactor.extraContainers | nindent 8}} + {{- if .Values.bloomPlanner.extraContainers }} + {{- toYaml .Values.bloomPlanner.extraContainers | nindent 8}} {{- end }} - {{- with .Values.bloomCompactor.affinity }} + {{- with .Values.bloomPlanner.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.bloomCompactor.nodeSelector }} + {{- with .Values.bloomPlanner.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.bloomCompactor.tolerations }} + {{- with .Values.bloomPlanner.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} @@ -152,16 +152,16 @@ spec: secretName: enterprise-logs-license {{- end }} {{- end }} - {{- if not .Values.bloomCompactor.persistence.enabled }} + {{- if not .Values.bloomPlanner.persistence.enabled }} - name: data emptyDir: {} {{- end }} - {{- with .Values.bloomCompactor.extraVolumes }} + {{- with .Values.bloomPlanner.extraVolumes }} {{- toYaml . | nindent 8 }} {{- end }} - {{- if .Values.bloomCompactor.persistence.enabled }} + {{- if .Values.bloomPlanner.persistence.enabled }} volumeClaimTemplates: - {{- range .Values.bloomCompactor.persistence.claims }} + {{- range .Values.bloomPlanner.persistence.claims }} - metadata: name: {{ .name }} {{- with .annotations }} @@ -180,4 +180,4 @@ spec: {{- end }} {{- end }} {{- end -}} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/production/helm/loki/values.yaml b/production/helm/loki/values.yaml index dd6df92348ca..ed65339cb33a 100644 --- a/production/helm/loki/values.yaml +++ b/production/helm/loki/values.yaml @@ -440,6 +440,10 @@ loki: # -- Enable tracing tracing: enabled: false + bloom_build: + enabled: false + bloom_gateway: + enabled: false ###################################################################################################################### # # Enterprise Loki Configs @@ -2376,9 +2380,9 @@ compactor: annotations: {} # -- Set this toggle to false to opt out of automounting API credentials for the service account automountServiceAccountToken: true -# -- Configuration for the bloom gateway +# -- Configuration for the bloom-gateway bloomGateway: - # -- Number of replicas for the bloom gateway + # -- Number of replicas for the bloom-gateway replicas: 0 # -- hostAliases to add hostAliases: [] @@ -2386,21 +2390,21 @@ bloomGateway: # hostnames: # - domain.tld image: - # -- The Docker registry for the bloom gateway image. Overrides `loki.image.registry` + # -- The Docker registry for the bloom-gateway image. Overrides `loki.image.registry` registry: null - # -- Docker image repository for the bloom gateway image. Overrides `loki.image.repository` + # -- Docker image repository for the bloom-gateway image. Overrides `loki.image.repository` repository: null - # -- Docker image tag for the bloom gateway image. Overrides `loki.image.tag` + # -- Docker image tag for the bloom-gateway image. Overrides `loki.image.tag` tag: null # -- Command to execute instead of defined in Docker image command: null - # -- The name of the PriorityClass for bloom gateway pods + # -- The name of the PriorityClass for bloom-gateway pods priorityClassName: null - # -- Labels for bloom gateway pods + # -- Labels for bloom-gateway pods podLabels: {} - # -- Annotations for bloom gateway pods + # -- Annotations for bloom-gateway pods podAnnotations: {} - # -- Affinity for bloom gateway pods. + # -- Affinity for bloom-gateway pods. # @default -- Hard node anti-affinity affinity: podAntiAffinity: @@ -2409,39 +2413,39 @@ bloomGateway: matchLabels: app.kubernetes.io/component: bloom-gateway topologyKey: kubernetes.io/hostname - # -- Labels for bloom gateway service + # -- Labels for bloom-gateway service serviceLabels: {} - # -- Additional CLI args for the bloom gateway + # -- Additional CLI args for the bloom-gateway extraArgs: [] - # -- Environment variables to add to the bloom gateway pods + # -- Environment variables to add to the bloom-gateway pods extraEnv: [] - # -- Environment variables from secrets or configmaps to add to the bloom gateway pods + # -- Environment variables from secrets or configmaps to add to the bloom-gateway pods extraEnvFrom: [] - # -- Volume mounts to add to the bloom gateway pods + # -- Volume mounts to add to the bloom-gateway pods extraVolumeMounts: [] - # -- Volumes to add to the bloom gateway pods + # -- Volumes to add to the bloom-gateway pods extraVolumes: [] # -- readiness probe settings for ingester pods. If empty, use `loki.readinessProbe` readinessProbe: {} # -- liveness probe settings for ingester pods. If empty use `loki.livenessProbe` livenessProbe: {} - # -- Resource requests and limits for the bloom gateway + # -- Resource requests and limits for the bloom-gateway resources: {} - # -- Containers to add to the bloom gateway pods + # -- Containers to add to the bloom-gateway pods extraContainers: [] - # -- Init containers to add to the bloom gateway pods + # -- Init containers to add to the bloom-gateway pods initContainers: [] - # -- Grace period to allow the bloom gateway to shutdown before it is killed + # -- Grace period to allow the bloom-gateway to shutdown before it is killed terminationGracePeriodSeconds: 30 - # -- Node selector for bloom gateway pods + # -- Node selector for bloom-gateway pods nodeSelector: {} - # -- Tolerations for bloom gateway pods + # -- Tolerations for bloom-gateway pods tolerations: [] # -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" appProtocol: grpc: "" persistence: - # -- Enable creating PVCs for the bloom gateway + # -- Enable creating PVCs for the bloom-gateway enabled: false # -- Size of persistent disk size: 10Gi @@ -2451,9 +2455,9 @@ bloomGateway: # If empty or set to null, no storageClassName spec is # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack). storageClass: null - # -- Annotations for bloom gateway PVCs + # -- Annotations for bloom-gateway PVCs annotations: {} - # -- List of the bloom gateway PVCs + # -- List of the bloom-gateway PVCs # @notationType -- list claims: - name: data @@ -2472,19 +2476,19 @@ bloomGateway: whenScaled: Retain serviceAccount: create: false - # -- The name of the ServiceAccount to use for the bloom gateway. + # -- The name of the ServiceAccount to use for the bloom-gateway. # If not set and create is true, a name is generated by appending # "-bloom-gateway" to the common ServiceAccount. name: null - # -- Image pull secrets for the bloom gateway service account + # -- Image pull secrets for the bloom-gateway service account imagePullSecrets: [] - # -- Annotations for the bloom gateway service account + # -- Annotations for the bloom-gateway service account annotations: {} # -- Set this toggle to false to opt out of automounting API credentials for the service account automountServiceAccountToken: true -# -- Configuration for the bloom compactor -bloomCompactor: - # -- Number of replicas for the bloom compactor +# -- Configuration for the bloom-planner +bloomPlanner: + # -- Number of replicas for the bloom-planner replicas: 0 # -- hostAliases to add hostAliases: [] @@ -2492,62 +2496,62 @@ bloomCompactor: # hostnames: # - domain.tld image: - # -- The Docker registry for the bloom compactor image. Overrides `loki.image.registry` + # -- The Docker registry for the bloom-planner image. Overrides `loki.image.registry` registry: null - # -- Docker image repository for the bloom compactor image. Overrides `loki.image.repository` + # -- Docker image repository for the bloom-planner image. Overrides `loki.image.repository` repository: null - # -- Docker image tag for the bloom compactor image. Overrides `loki.image.tag` + # -- Docker image tag for the bloom-planner image. Overrides `loki.image.tag` tag: null # -- Command to execute instead of defined in Docker image command: null - # -- The name of the PriorityClass for bloom compactor pods + # -- The name of the PriorityClass for bloom-planner pods priorityClassName: null - # -- Labels for bloom compactor pods + # -- Labels for bloom-planner pods podLabels: {} - # -- Annotations for bloom compactor pods + # -- Annotations for bloom-planner pods podAnnotations: {} - # -- Affinity for bloom compactor pods. + # -- Affinity for bloom-planner pods. # @default -- Hard node anti-affinity affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: - app.kubernetes.io/component: bloom-compactor + app.kubernetes.io/component: bloom-planner topologyKey: kubernetes.io/hostname - # -- Labels for bloom compactor service + # -- Labels for bloom-planner service serviceLabels: {} - # -- Additional CLI args for the bloom compactor + # -- Additional CLI args for the bloom-planner extraArgs: [] - # -- Environment variables to add to the bloom compactor pods + # -- Environment variables to add to the bloom-planner pods extraEnv: [] - # -- Environment variables from secrets or configmaps to add to the bloom compactor pods + # -- Environment variables from secrets or configmaps to add to the bloom-planner pods extraEnvFrom: [] - # -- Volume mounts to add to the bloom compactor pods + # -- Volume mounts to add to the bloom-planner pods extraVolumeMounts: [] - # -- Volumes to add to the bloom compactor pods + # -- Volumes to add to the bloom-planner pods extraVolumes: [] # -- readiness probe settings for ingester pods. If empty, use `loki.readinessProbe` readinessProbe: {} # -- liveness probe settings for ingester pods. If empty use `loki.livenessProbe` livenessProbe: {} - # -- Resource requests and limits for the bloom compactor + # -- Resource requests and limits for the bloom-planner resources: {} - # -- Containers to add to the bloom compactor pods + # -- Containers to add to the bloom-planner pods extraContainers: [] - # -- Init containers to add to the bloom compactor pods + # -- Init containers to add to the bloom-planner pods initContainers: [] - # -- Grace period to allow the bloom compactor to shutdown before it is killed + # -- Grace period to allow the bloom-planner to shutdown before it is killed terminationGracePeriodSeconds: 30 - # -- Node selector for bloom compactor pods + # -- Node selector for bloom-planner pods nodeSelector: {} - # -- Tolerations for bloom compactor pods + # -- Tolerations for bloom-planner pods tolerations: [] # -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" appProtocol: grpc: "" persistence: - # -- Enable creating PVCs for the bloom compactor + # -- Enable creating PVCs for the bloom-planner enabled: false # -- Size of persistent disk size: 10Gi @@ -2557,37 +2561,115 @@ bloomCompactor: # If empty or set to null, no storageClassName spec is # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack). storageClass: null - # -- Annotations for bloom compactor PVCs + # -- Annotations for bloom-planner PVCs annotations: {} - # -- List of the bloom compactor PVCs + # -- List of the bloom-planner PVCs # @notationType -- list - claims: - - name: data - size: 10Gi - # -- Storage class to be used. - # If defined, storageClassName: . - # If set to "-", storageClassName: "", which disables dynamic provisioning. - # If empty or set to null, no storageClassName spec is - # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack). - storageClass: null - # - name: wal - # size: 150Gi + claims: [] # -- Enable StatefulSetAutoDeletePVC feature enableStatefulSetAutoDeletePVC: false whenDeleted: Retain whenScaled: Retain serviceAccount: create: false - # -- The name of the ServiceAccount to use for the bloom compactor. + # -- The name of the ServiceAccount to use for the bloom-planner. # If not set and create is true, a name is generated by appending - # "-bloom-compactor" to the common ServiceAccount. + # "-bloom-planner" to the common ServiceAccount. name: null - # -- Image pull secrets for the bloom compactor service account + # -- Image pull secrets for the bloom-planner service account imagePullSecrets: [] - # -- Annotations for the bloom compactor service account + # -- Annotations for the bloom-planner service account annotations: {} # -- Set this toggle to false to opt out of automounting API credentials for the service account automountServiceAccountToken: true +# -- Configuration for the bloom-builder +bloomBuilder: + # -- Number of replicas for the bloom-builder + replicas: 0 + # -- hostAliases to add + hostAliases: [] + # - ip: 1.2.3.4 + # hostnames: + # - domain.tld + autoscaling: + # -- Enable autoscaling for the bloom-builder + enabled: false + # -- Minimum autoscaling replicas for the bloom-builder + minReplicas: 1 + # -- Maximum autoscaling replicas for the bloom-builder + maxReplicas: 3 + # -- Target CPU utilisation percentage for the bloom-builder + targetCPUUtilizationPercentage: 60 + # -- Target memory utilisation percentage for the bloom-builder + targetMemoryUtilizationPercentage: null + # -- Allows one to define custom metrics using the HPA/v2 schema (for example, Pods, Object or External metrics) + customMetrics: [] + # - type: Pods + # pods: + # metric: + # name: loki_query_rate + # target: + # type: AverageValue + # averageValue: 100 + behavior: + # -- Enable autoscaling behaviours + enabled: false + # -- define scale down policies, must conform to HPAScalingRules + scaleDown: {} + # -- define scale up policies, must conform to HPAScalingRules + scaleUp: {} + image: + # -- The Docker registry for the bloom-builder image. Overrides `loki.image.registry` + registry: null + # -- Docker image repository for the bloom-builder image. Overrides `loki.image.repository` + repository: null + # -- Docker image tag for the bloom-builder image. Overrides `loki.image.tag` + tag: null + # -- Command to execute instead of defined in Docker image + command: null + # -- The name of the PriorityClass for bloom-builder pods + priorityClassName: null + # -- Labels for bloom-builder pods + podLabels: {} + # -- Annotations for bloom-builder pods + podAnnotations: {} + # -- Labels for bloom-builder service + serviceLabels: {} + # -- Additional CLI args for the bloom-builder + extraArgs: [] + # -- Environment variables to add to the bloom-builder pods + extraEnv: [] + # -- Environment variables from secrets or configmaps to add to the bloom-builder pods + extraEnvFrom: [] + # -- Volume mounts to add to the bloom-builder pods + extraVolumeMounts: [] + # -- Volumes to add to the bloom-builder pods + extraVolumes: [] + # -- Resource requests and limits for the bloom-builder + resources: {} + # -- Containers to add to the bloom-builder pods + extraContainers: [] + # -- Grace period to allow the bloom-builder to shutdown before it is killed + terminationGracePeriodSeconds: 30 + # -- Affinity for bloom-builder pods. + # @default -- Hard node anti-affinity + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: + app.kubernetes.io/component: bloom-builder + topologyKey: kubernetes.io/hostname + # -- Pod Disruption Budget maxUnavailable + maxUnavailable: null + # -- Node selector for bloom-builder pods + nodeSelector: {} + # -- Tolerations for bloom-builder pods + tolerations: [] + # -- Adds the appProtocol field to the queryFrontend service. This allows bloomBuilder to work with istio protocol selection. + appProtocol: + # -- Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" + grpc: "" # -- Configuration for the pattern ingester patternIngester: # -- Number of replicas for the pattern ingester