diff --git a/production/helm/loki/CHANGELOG.md b/production/helm/loki/CHANGELOG.md index eeab991040f4..6052b517068a 100644 --- a/production/helm/loki/CHANGELOG.md +++ b/production/helm/loki/CHANGELOG.md @@ -16,6 +16,9 @@ Entries should include a reference to the pull request that introduced the chang ## 6.13.0 - [CHANGE] Correctly wrap ClusterRoleBinding around `rbac/namespaced` conditional. +- [FIX] Do not create bloom planner, bloom builder, bloom gateway Deployment/Statefulset if their replica count is 0. +- [FIX] Configure (ephemeral) storage for bloom builder working directory +- [ENHANCEMENT] Automatically configure bloom planner address for bloom builders and bloom gateway addresses for bloom gateway clients. ## 6.12.0 diff --git a/production/helm/loki/templates/_helpers.tpl b/production/helm/loki/templates/_helpers.tpl index 4ec80d2b4db2..9a4ab135db92 100644 --- a/production/helm/loki/templates/_helpers.tpl +++ b/production/helm/loki/templates/_helpers.tpl @@ -1047,6 +1047,34 @@ enableServiceLinks: false {{- printf "%s" $idxGatewayAddress }} {{- end }} +{{/* Determine bloom-planner address */}} +{{- define "loki.bloomPlannerAddress" -}} +{{- $bloomPlannerAddress := ""}} +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- $isScalable := eq (include "loki.deployment.isScalable" .) "true" -}} +{{- if $isDistributed -}} +{{- $bloomPlannerAddress = printf "%s-headless.%s.svc.%s:%s" (include "loki.bloomPlannerFullname" .) .Release.Namespace .Values.global.clusterDomain (.Values.loki.server.grpc_listen_port | toString) -}} +{{- end -}} +{{- if $isScalable -}} +{{- $bloomPlannerAddress = printf "%s-headless.%s.svc.%s:%s" (include "loki.backendFullname" .) .Release.Namespace .Values.global.clusterDomain (.Values.loki.server.grpc_listen_port | toString) -}} +{{- end -}} +{{- printf "%s" $bloomPlannerAddress}} +{{- end }} + +{{/* Determine bloom-gateway address */}} +{{- define "loki.bloomGatewayAddresses" -}} +{{- $bloomGatewayAddresses := ""}} +{{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} +{{- $isScalable := eq (include "loki.deployment.isScalable" .) "true" -}} +{{- if $isDistributed -}} +{{- $bloomGatewayAddresses = printf "dnssrvnoa+_grpc._tcp.%s-headless.%s.svc.%s" (include "loki.bloomGatewayFullname" .) .Release.Namespace .Values.global.clusterDomain -}} +{{- end -}} +{{- if $isScalable -}} +{{- $bloomGatewayAddresses = printf "dnssrvnoa+_grpc._tcp.%s-headless.%s.svc.%s" (include "loki.backendFullname" .) .Release.Namespace .Values.global.clusterDomain -}} +{{- end -}} +{{- printf "%s" $bloomGatewayAddresses}} +{{- end }} + {{- define "loki.config.checksum" -}} checksum/config: {{ include (print .Template.BasePath "/config.yaml") . | sha256sum }} {{- 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 index 5735de5da23d..c04b3ae5ae25 100644 --- a/production/helm/loki/templates/bloom-builder/deployment-bloom-builder.yaml +++ b/production/helm/loki/templates/bloom-builder/deployment-bloom-builder.yaml @@ -1,5 +1,5 @@ {{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} -{{- if $isDistributed -}} +{{- if (and $isDistributed (gt (int .Values.bloomPlanner.replicas) 0)) -}} apiVersion: apps/v1 kind: Deployment metadata: @@ -101,6 +101,10 @@ spec: - name: license mountPath: /etc/loki/license {{- end }} + - name: temp + mountPath: /tmp + - name: data + mountPath: /var/loki {{- with .Values.bloomBuilder.extraVolumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} @@ -136,6 +140,10 @@ spec: secretName: enterprise-logs-license {{- end }} {{- end }} + - name: temp + emptyDir: {} + - name: data + emptyDir: {} {{- with .Values.bloomBuilder.extraVolumes }} {{- toYaml . | nindent 8 }} {{- 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 index e089d4d2de40..e863a2c27866 100644 --- a/production/helm/loki/templates/bloom-builder/service-bloom-builder-headless.yaml +++ b/production/helm/loki/templates/bloom-builder/service-bloom-builder-headless.yaml @@ -1,5 +1,5 @@ {{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} -{{- if $isDistributed -}} +{{- if (and $isDistributed (or (gt (int .Values.bloomBuilder.replicas) 0)) .Values.bloomBuilder.autoscaling.enabled) -}} apiVersion: v1 kind: Service metadata: diff --git a/production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml b/production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml index aab082d72293..6351bbdae566 100644 --- a/production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml +++ b/production/helm/loki/templates/bloom-builder/service-bloom-builder.yaml @@ -1,5 +1,5 @@ {{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} -{{- if $isDistributed -}} +{{- if (and $isDistributed (gt (int .Values.bloomBuilder.replicas) 0)) -}} apiVersion: v1 kind: Service metadata: diff --git a/production/helm/loki/templates/bloom-gateway/statefulset-bloom-gateway.yaml b/production/helm/loki/templates/bloom-gateway/statefulset-bloom-gateway.yaml index e2ceefbeafb5..7e97b8e93ece 100644 --- a/production/helm/loki/templates/bloom-gateway/statefulset-bloom-gateway.yaml +++ b/production/helm/loki/templates/bloom-gateway/statefulset-bloom-gateway.yaml @@ -1,6 +1,5 @@ {{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} -{{- if $isDistributed }} -{{- if (gt (int .Values.bloomGateway.replicas) 0) -}} +{{- if (and $isDistributed (gt (int .Values.bloomGateway.replicas) 0)) -}} apiVersion: apps/v1 kind: StatefulSet metadata: @@ -180,4 +179,3 @@ spec: {{- end }} {{- end }} {{- end -}} -{{- end -}} \ No newline at end of file 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 index fd02c64acd50..1ad970746226 100644 --- a/production/helm/loki/templates/bloom-planner/service-bloom-planner-headless.yaml +++ b/production/helm/loki/templates/bloom-planner/service-bloom-planner-headless.yaml @@ -1,6 +1,5 @@ {{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} -{{- if $isDistributed -}} -{{- if (gt (int .Values.bloomPlanner.replicas) 0) -}} +{{- if (and $isDistributed (gt (int .Values.bloomPlanner.replicas) 0)) -}} apiVersion: v1 kind: Service metadata: @@ -33,4 +32,3 @@ spec: selector: {{- include "loki.bloomPlannerSelectorLabels" . | nindent 4 }} {{- end -}} -{{- end -}} diff --git a/production/helm/loki/templates/bloom-planner/statefulset-bloom-planner.yaml b/production/helm/loki/templates/bloom-planner/statefulset-bloom-planner.yaml index 8d9a9f23998a..8406542dabaa 100644 --- a/production/helm/loki/templates/bloom-planner/statefulset-bloom-planner.yaml +++ b/production/helm/loki/templates/bloom-planner/statefulset-bloom-planner.yaml @@ -1,6 +1,5 @@ {{- $isDistributed := eq (include "loki.deployment.isDistributed" .) "true" -}} -{{- if $isDistributed }} -{{- if (gt (int .Values.bloomPlanner.replicas) 0) -}} +{{- if (and $isDistributed (gt (int .Values.bloomPlanner.replicas) 0)) -}} apiVersion: apps/v1 kind: StatefulSet metadata: @@ -180,4 +179,3 @@ spec: {{- end }} {{- end }} {{- end -}} -{{- end -}} diff --git a/production/helm/loki/values.yaml b/production/helm/loki/values.yaml index ed65339cb33a..0f0e4e2afd18 100644 --- a/production/helm/loki/values.yaml +++ b/production/helm/loki/values.yaml @@ -279,6 +279,16 @@ loki: tracing: enabled: {{ .Values.loki.tracing.enabled }} + + {{- with .Values.loki.bloom_build }} + bloom_build: + {{- tpl (. | toYaml) $ | nindent 4 }} + {{- end }} + + {{- with .Values.loki.bloom_gateway }} + bloom_gateway: + {{- tpl (. | toYaml) $ | nindent 4 }} + {{- end }} # Should authentication be enabled auth_enabled: true # -- memberlist configuration (overrides embedded default) @@ -410,6 +420,8 @@ loki: tsdb_shipper: index_gateway_client: server_address: '{{ include "loki.indexGatewayAddress" . }}' + bloom_shipper: + working_directory: /var/loki/data/bloomshipper hedging: at: "250ms" max_per_second: 20 @@ -442,8 +454,12 @@ loki: enabled: false bloom_build: enabled: false + builder: + planner_address: '{{ include "loki.bloomPlannerAddress" . }}' bloom_gateway: enabled: false + client: + addresses: '{{ include "loki.bloomGatewayAddresses" . }}' ###################################################################################################################### # # Enterprise Loki Configs @@ -2447,20 +2463,13 @@ bloomGateway: persistence: # -- Enable creating PVCs for the bloom-gateway enabled: false - # -- Size of persistent disk - 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 # -- Annotations for bloom-gateway PVCs annotations: {} # -- List of the bloom-gateway PVCs # @notationType -- list claims: - name: data + # -- Size of persistent disk size: 10Gi # -- Storage class to be used. # If defined, storageClassName: . @@ -2468,8 +2477,6 @@ 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 - # - name: wal - # size: 150Gi # -- Enable StatefulSetAutoDeletePVC feature enableStatefulSetAutoDeletePVC: false whenDeleted: Retain @@ -2553,19 +2560,20 @@ bloomPlanner: persistence: # -- Enable creating PVCs for the bloom-planner enabled: false - # -- Size of persistent disk - 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 # -- Annotations for bloom-planner PVCs annotations: {} # -- List of the bloom-planner PVCs # @notationType -- list - claims: [] + claims: + - name: data + # -- Size of persistent disk + 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 # -- Enable StatefulSetAutoDeletePVC feature enableStatefulSetAutoDeletePVC: false whenDeleted: Retain