Skip to content

Commit b90c73c

Browse files
authored
Jsonnet: split the ruler-query-frontend service into a ClusterIP service and a headless service (#15001)
#### What this PR does In this PR I'm upstreaming a change already done in Grafana Cloud by @fionaliao: split the ruler-query-frontend service into a ClusterIP service (for HTTP load balancing) and a headless service (for gRPC client-side load balancing by rulers). #### Which issue(s) this PR fixes or relates to N/A #### Checklist - [ ] Tests updated. - [ ] Documentation added. - [x] `CHANGELOG.md` updated - the order of entries should be `[CHANGE]`, `[FEATURE]`, `[ENHANCEMENT]`, `[BUGFIX]`. If changelog entry is not needed, please add the `changelog-not-needed` label to the PR. - [ ] [`about-versioning.md`](https://github.com/grafana/mimir/blob/main/docs/sources/mimir/configure/about-versioning.md) updated with experimental features. Signed-off-by: Marco Pracucci <marco@pracucci.com>
1 parent 1058115 commit b90c73c

File tree

46 files changed

+1515
-54
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1515
-54
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@
342342
* [CHANGE] Querier: Set `ignoreNullValues` to false by default for KEDA `ScaledObject` to prevent autoscaling down when there is no data returned from scaling metrics. #14641
343343
* [CHANGE] Ingester: Change default ingestion concurrency configuration used by ingest storage architecture, to maximize throughput when consuming records from Kafka. #14668
344344
* [CHANGE] Memberlist: when the multi-zone memberlist bridge is enabled (`multi_zone_memberlist_bridge_enabled`), Mimir components now use memberlist-bridge pods as seed nodes by default, instead of the shared gossip ring service. This reduces inter-AZ data transfer. The new `memberlist_bridge_seed_nodes_enabled` configuration option can be used to disable this behavior. #14994
345+
* [CHANGE] Ruler remote evaluation: Split the ruler-query-frontend service into a ClusterIP service (for HTTP load balancing) and a headless service (for gRPC client-side load balancing by rulers). The ruler now connects to the headless service. #15001
345346
* [FEATURE] Add multi-zone support for read path components (memcached, querier, query-frontend, query-scheduler, ruler, and ruler remote evaluation stack). Add multi-AZ support for ingester and store-gateway multi-zone deployments. Add memberlist-bridge support for zone-aware memberlist routing. #13559 #13628 #13636 #13915 #14260 #14301
346347
* [FEATURE] Add deletion protection support for ingesters and store-gateways StatefulSet. It can be enabled by setting `ingester_deletion_protection_enabled` and `store_gateway_deletion_protection_enabled` in the `_config` block. #13819
347348
* [FEATURE] Shuffle sharding: Add the following configuration options to enable the experimental per-zone store-gateway shard size: #13908 #13941

operations/mimir-tests/test-autoscaling-custom-target-utilization-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,24 @@ metadata:
522522
name: ruler-query-frontend
523523
name: ruler-query-frontend
524524
namespace: default
525+
spec:
526+
ports:
527+
- name: ruler-query-frontend-http-metrics
528+
port: 8080
529+
targetPort: 8080
530+
- name: ruler-query-frontend-grpc
531+
port: 9095
532+
targetPort: 9095
533+
selector:
534+
name: ruler-query-frontend
535+
---
536+
apiVersion: v1
537+
kind: Service
538+
metadata:
539+
labels:
540+
name: ruler-query-frontend
541+
name: ruler-query-frontend-headless
542+
namespace: default
525543
spec:
526544
clusterIP: None
527545
ports:
@@ -971,7 +989,7 @@ spec:
971989
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
972990
- -ruler.max-rule-groups-per-tenant=85
973991
- -ruler.max-rules-per-rule-group=20
974-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
992+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
975993
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
976994
- -ruler.ring.store=memberlist
977995
- -ruler.rule-path=/rules

operations/mimir-tests/test-autoscaling-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,24 @@ metadata:
522522
name: ruler-query-frontend
523523
name: ruler-query-frontend
524524
namespace: default
525+
spec:
526+
ports:
527+
- name: ruler-query-frontend-http-metrics
528+
port: 8080
529+
targetPort: 8080
530+
- name: ruler-query-frontend-grpc
531+
port: 9095
532+
targetPort: 9095
533+
selector:
534+
name: ruler-query-frontend
535+
---
536+
apiVersion: v1
537+
kind: Service
538+
metadata:
539+
labels:
540+
name: ruler-query-frontend
541+
name: ruler-query-frontend-headless
542+
namespace: default
525543
spec:
526544
clusterIP: None
527545
ports:
@@ -971,7 +989,7 @@ spec:
971989
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
972990
- -ruler.max-rule-groups-per-tenant=85
973991
- -ruler.max-rules-per-rule-group=20
974-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
992+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
975993
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
976994
- -ruler.ring.store=memberlist
977995
- -ruler.rule-path=/rules

operations/mimir-tests/test-ingest-storage-auto-client-rack-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,24 @@ metadata:
771771
name: ruler-query-frontend
772772
name: ruler-query-frontend
773773
namespace: default
774+
spec:
775+
ports:
776+
- name: ruler-query-frontend-http-metrics
777+
port: 8080
778+
targetPort: 8080
779+
- name: ruler-query-frontend-grpc
780+
port: 9095
781+
targetPort: 9095
782+
selector:
783+
name: ruler-query-frontend
784+
---
785+
apiVersion: v1
786+
kind: Service
787+
metadata:
788+
labels:
789+
name: ruler-query-frontend
790+
name: ruler-query-frontend-headless
791+
namespace: default
774792
spec:
775793
clusterIP: None
776794
ports:
@@ -1370,7 +1388,7 @@ spec:
13701388
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
13711389
- -ruler.max-rule-groups-per-tenant=85
13721390
- -ruler.max-rules-per-rule-group=20
1373-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
1391+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
13741392
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
13751393
- -ruler.ring.store=memberlist
13761394
- -ruler.rule-path=/rules

operations/mimir-tests/test-ingest-storage-autoscaling-custom-stabilization-window-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,24 @@ metadata:
830830
name: ruler-query-frontend
831831
name: ruler-query-frontend
832832
namespace: default
833+
spec:
834+
ports:
835+
- name: ruler-query-frontend-http-metrics
836+
port: 8080
837+
targetPort: 8080
838+
- name: ruler-query-frontend-grpc
839+
port: 9095
840+
targetPort: 9095
841+
selector:
842+
name: ruler-query-frontend
843+
---
844+
apiVersion: v1
845+
kind: Service
846+
metadata:
847+
labels:
848+
name: ruler-query-frontend
849+
name: ruler-query-frontend-headless
850+
namespace: default
833851
spec:
834852
clusterIP: None
835853
ports:
@@ -1438,7 +1456,7 @@ spec:
14381456
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
14391457
- -ruler.max-rule-groups-per-tenant=85
14401458
- -ruler.max-rules-per-rule-group=20
1441-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
1459+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
14421460
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
14431461
- -ruler.ring.store=memberlist
14441462
- -ruler.rule-path=/rules

operations/mimir-tests/test-ingest-storage-autoscaling-multiple-triggers-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,24 @@ metadata:
761761
name: ruler-query-frontend
762762
name: ruler-query-frontend
763763
namespace: default
764+
spec:
765+
ports:
766+
- name: ruler-query-frontend-http-metrics
767+
port: 8080
768+
targetPort: 8080
769+
- name: ruler-query-frontend-grpc
770+
port: 9095
771+
targetPort: 9095
772+
selector:
773+
name: ruler-query-frontend
774+
---
775+
apiVersion: v1
776+
kind: Service
777+
metadata:
778+
labels:
779+
name: ruler-query-frontend
780+
name: ruler-query-frontend-headless
781+
namespace: default
764782
spec:
765783
clusterIP: None
766784
ports:
@@ -1369,7 +1387,7 @@ spec:
13691387
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
13701388
- -ruler.max-rule-groups-per-tenant=85
13711389
- -ruler.max-rules-per-rule-group=20
1372-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
1390+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
13731391
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
13741392
- -ruler.ring.store=memberlist
13751393
- -ruler.rule-path=/rules

operations/mimir-tests/test-ingest-storage-autoscaling-one-trigger-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,24 @@ metadata:
761761
name: ruler-query-frontend
762762
name: ruler-query-frontend
763763
namespace: default
764+
spec:
765+
ports:
766+
- name: ruler-query-frontend-http-metrics
767+
port: 8080
768+
targetPort: 8080
769+
- name: ruler-query-frontend-grpc
770+
port: 9095
771+
targetPort: 9095
772+
selector:
773+
name: ruler-query-frontend
774+
---
775+
apiVersion: v1
776+
kind: Service
777+
metadata:
778+
labels:
779+
name: ruler-query-frontend
780+
name: ruler-query-frontend-headless
781+
namespace: default
764782
spec:
765783
clusterIP: None
766784
ports:
@@ -1369,7 +1387,7 @@ spec:
13691387
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
13701388
- -ruler.max-rule-groups-per-tenant=85
13711389
- -ruler.max-rules-per-rule-group=20
1372-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
1390+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
13731391
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
13741392
- -ruler.ring.store=memberlist
13751393
- -ruler.rule-path=/rules

operations/mimir-tests/test-ingest-storage-migration-step-0-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,24 @@ metadata:
771771
name: ruler-query-frontend
772772
name: ruler-query-frontend
773773
namespace: default
774+
spec:
775+
ports:
776+
- name: ruler-query-frontend-http-metrics
777+
port: 8080
778+
targetPort: 8080
779+
- name: ruler-query-frontend-grpc
780+
port: 9095
781+
targetPort: 9095
782+
selector:
783+
name: ruler-query-frontend
784+
---
785+
apiVersion: v1
786+
kind: Service
787+
metadata:
788+
labels:
789+
name: ruler-query-frontend
790+
name: ruler-query-frontend-headless
791+
namespace: default
774792
spec:
775793
clusterIP: None
776794
ports:
@@ -1347,7 +1365,7 @@ spec:
13471365
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
13481366
- -ruler.max-rule-groups-per-tenant=85
13491367
- -ruler.max-rules-per-rule-group=20
1350-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
1368+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
13511369
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
13521370
- -ruler.ring.store=memberlist
13531371
- -ruler.rule-path=/rules

operations/mimir-tests/test-ingest-storage-migration-step-1-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -840,6 +840,24 @@ metadata:
840840
name: ruler-query-frontend
841841
name: ruler-query-frontend
842842
namespace: default
843+
spec:
844+
ports:
845+
- name: ruler-query-frontend-http-metrics
846+
port: 8080
847+
targetPort: 8080
848+
- name: ruler-query-frontend-grpc
849+
port: 9095
850+
targetPort: 9095
851+
selector:
852+
name: ruler-query-frontend
853+
---
854+
apiVersion: v1
855+
kind: Service
856+
metadata:
857+
labels:
858+
name: ruler-query-frontend
859+
name: ruler-query-frontend-headless
860+
namespace: default
843861
spec:
844862
clusterIP: None
845863
ports:
@@ -1419,7 +1437,7 @@ spec:
14191437
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
14201438
- -ruler.max-rule-groups-per-tenant=85
14211439
- -ruler.max-rules-per-rule-group=20
1422-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
1440+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
14231441
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
14241442
- -ruler.ring.store=memberlist
14251443
- -ruler.rule-path=/rules

operations/mimir-tests/test-ingest-storage-migration-step-10-generated.yaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,24 @@ metadata:
807807
name: ruler-query-frontend
808808
name: ruler-query-frontend
809809
namespace: default
810+
spec:
811+
ports:
812+
- name: ruler-query-frontend-http-metrics
813+
port: 8080
814+
targetPort: 8080
815+
- name: ruler-query-frontend-grpc
816+
port: 9095
817+
targetPort: 9095
818+
selector:
819+
name: ruler-query-frontend
820+
---
821+
apiVersion: v1
822+
kind: Service
823+
metadata:
824+
labels:
825+
name: ruler-query-frontend
826+
name: ruler-query-frontend-headless
827+
namespace: default
810828
spec:
811829
clusterIP: None
812830
ports:
@@ -1415,7 +1433,7 @@ spec:
14151433
- -ruler.alertmanager-url=http://alertmanager.default.svc.cluster.local./alertmanager
14161434
- -ruler.max-rule-groups-per-tenant=85
14171435
- -ruler.max-rules-per-rule-group=20
1418-
- -ruler.query-frontend.address=dns:///ruler-query-frontend.default.svc.cluster.local.:9095
1436+
- -ruler.query-frontend.address=dns:///ruler-query-frontend-headless.default.svc.cluster.local.:9095
14191437
- -ruler.query-frontend.grpc-client-config.grpc-max-recv-msg-size=104857600
14201438
- -ruler.ring.store=memberlist
14211439
- -ruler.rule-path=/rules

0 commit comments

Comments
 (0)