Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .cruft.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"template": "https://github.com/projectsyn/commodore-component-template.git",
"commit": "0beeff331c57a671ca982cd2e9bb84d429031d32",
"commit": "c61b93c6740fb1aaad80e82716a8400d2df31e80",
"checkout": "main",
"context": {
"cookiecutter": {
"name": "prometheus",
"slug": "prometheus",
"parameter_key": "prometheus",
"test_cases": "defaults multi rewrite-registries thanos cluster-monitoring additional_rules resourcequota grafana-ingress additional_nodeexporter_args additional_kubestatemetrics_args grafana-storage additional-netpols kubernetes_1.26 kubernetes_1.27 kubernetes_1.28 kubernetes_1.29 kubernetes_1.30 kubernetes_1.31 kubernetes_1.32 kubernetes_1.33 kubernetes_1.34 kubernetes_1.35 kubernetes_1.36 team-routing",
"test_cases": "defaults multi rewrite-registries thanos cluster-monitoring additional_rules resourcequota grafana-ingress additional_nodeexporter_args additional_kubestatemetrics_args grafana-storage additional-netpols kubernetes_1.26 kubernetes_1.27 kubernetes_1.28 kubernetes_1.29 kubernetes_1.30 kubernetes_1.31 kubernetes_1.32 kubernetes_1.33 kubernetes_1.34 kubernetes_1.35 kubernetes_1.36 team-routing remote-write",
"add_lib": "y",
"add_pp": "n",
"add_golden": "y",
Expand All @@ -25,7 +25,7 @@
"github_name": "component-prometheus",
"github_url": "https://github.com/projectsyn/component-prometheus",
"_template": "https://github.com/projectsyn/commodore-component-template.git",
"_commit": "0beeff331c57a671ca982cd2e9bb84d429031d32"
"_commit": "c61b93c6740fb1aaad80e82716a8400d2df31e80"
}
},
"directory": null
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ jobs:
- kubernetes_1.35
- kubernetes_1.36
- team-routing
- remote-write
defaults:
run:
working-directory: ${{ env.COMPONENT_NAME }}
Expand Down Expand Up @@ -94,6 +95,7 @@ jobs:
- kubernetes_1.35
- kubernetes_1.36
- team-routing
- remote-write
defaults:
run:
working-directory: ${{ env.COMPONENT_NAME }}
Expand Down
2 changes: 1 addition & 1 deletion Makefile.vars.mk
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,4 @@ KUBENT_IMAGE ?= ghcr.io/doitintl/kube-no-trouble:latest
KUBENT_DOCKER ?= $(DOCKER_CMD) $(DOCKER_ARGS) $(root_volume) --entrypoint=/app/kubent $(KUBENT_IMAGE)

instance ?= defaults
test_instances = tests/defaults.yml tests/multi.yml tests/rewrite-registries.yml tests/thanos.yml tests/cluster-monitoring.yml tests/additional_rules.yml tests/resourcequota.yml tests/grafana-ingress.yml tests/additional_nodeexporter_args.yml tests/additional_kubestatemetrics_args.yml tests/grafana-storage.yml tests/additional-netpols.yml tests/kubernetes_1.26.yml tests/kubernetes_1.27.yml tests/kubernetes_1.28.yml tests/kubernetes_1.29.yml tests/kubernetes_1.30.yml tests/kubernetes_1.31.yml tests/kubernetes_1.32.yml tests/kubernetes_1.33.yml tests/kubernetes_1.34.yml tests/kubernetes_1.35.yml tests/kubernetes_1.36.yml tests/team-routing.yml
test_instances = tests/defaults.yml tests/multi.yml tests/rewrite-registries.yml tests/thanos.yml tests/cluster-monitoring.yml tests/additional_rules.yml tests/resourcequota.yml tests/grafana-ingress.yml tests/additional_nodeexporter_args.yml tests/additional_kubestatemetrics_args.yml tests/grafana-storage.yml tests/additional-netpols.yml tests/kubernetes_1.26.yml tests/kubernetes_1.27.yml tests/kubernetes_1.28.yml tests/kubernetes_1.29.yml tests/kubernetes_1.30.yml tests/kubernetes_1.31.yml tests/kubernetes_1.32.yml tests/kubernetes_1.33.yml tests/kubernetes_1.34.yml tests/kubernetes_1.35.yml tests/kubernetes_1.36.yml tests/team-routing.yml tests/remote-write.yml
42 changes: 41 additions & 1 deletion component/common.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,35 @@ local patchKubeControlPlaneSelectors(instanceName) = {
},
};

local transformRelabelConfigs(remoteWriteConfig) = if std.objectHas(remoteWriteConfig, 'writeRelabelConfigs')
then remoteWriteConfig {
writeRelabelConfigs: std.map(
function(wrlc) wrlc {
timeseries:: [],
[if std.objectHas(wrlc, 'timeseries') then 'regex']: std.format('(%s)', std.join('|', com.renderArray(wrlc.timeseries))),
},
remoteWriteConfig.writeRelabelConfigs,
),

}
else remoteWriteConfig;

local remoteWriteConfig(confWithBase) = if std.objectHas(confWithBase, 'prometheus') && std.objectHas(confWithBase.prometheus, 'remoteWrite') then {
local rwd = confWithBase.prometheus.remoteWrite,
prometheus+: {
prometheus+: {
spec+: {
remoteWrite+: std.filterMap(
function(name) rwd[name] != null,
function(name) transformRelabelConfigs(rwd[name] { name: name }),
std.objectFields(rwd)
),
},
},
},
}
else {};

local stackForInstance = function(instanceName)
local confWithBase = com.makeMergeable(params.base) + com.makeMergeable(params.instances[instanceName]);
local cm = std.foldl(function(prev, k) prev {
Expand All @@ -326,7 +355,18 @@ local stackForInstance = function(instanceName)
[if std.objectHas(confWithBase.prometheus.config, 'thanos') then 'thanos']: confWithBase.prometheus.config.thanos,
},
} + patchGrafanaDataSource(instanceName) + patchKubeControlPlaneSelectors(instanceName) + com.makeMergeable(cm),
} + grafanaStorage(instanceName, confWithBase) + grafanaIngress(instanceName, confWithBase) + addNodeExporterContainerArgs(instanceName, confWithBase) + addKubeStateMetricsContainerArgs(instanceName, confWithBase) + patchPrometheusNetworkPolicy(instanceName) + patchNetworkPolicy('prometheus', confWithBase) + patchNetworkPolicy('grafana', confWithBase) + patchNetworkPolicy('alertmanager', confWithBase) + com.makeMergeable(overrides) + removeNamespace;
Comment thread
simu marked this conversation as resolved.
}
+ grafanaStorage(instanceName, confWithBase)
+ grafanaIngress(instanceName, confWithBase)
+ addNodeExporterContainerArgs(instanceName, confWithBase)
+ addKubeStateMetricsContainerArgs(instanceName, confWithBase)
+ patchPrometheusNetworkPolicy(instanceName)
+ patchNetworkPolicy('prometheus', confWithBase)
+ patchNetworkPolicy('grafana', confWithBase)
+ patchNetworkPolicy('alertmanager', confWithBase)
+ com.makeMergeable(overrides)
+ remoteWriteConfig(confWithBase)
+ removeNamespace;

local render_component(configuredStack, component, prefix, instance) =
local kp = configuredStack[component];
Expand Down
27 changes: 27 additions & 0 deletions docs/modules/ROOT/pages/references/parameters.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,33 @@ prometheus:
Can be used to supply additional ingress rules to the NetworkPolicies for Prometheus, Grafana or Alertmanager.
Configured rules will be appended to the existing NetworkPolicy and must adhere to the https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/#NetworkPolicySpec[Kubernetes NetworkPolicy spec].

== `instances.*.prometheus.remoteWrite`

[horizontal]
type:: dict
default:: {}
example::
[source,yaml]
----
prometheus:
remoteWrite:
myRemoteWriteTarget:
url: http://mymetrics.com/api/v1/push
headers:
"X-Scope-OrgID": best-org-ever
writeRelabelConfigs:
- action: keep
sourceLabels: ['__name__']
timeseries:
- metric_number_one
- metric_number_two
- metric_number_three
----

Can be used to supply additional remoteWrite targets to Prometheus.
All timeseries listed under `writeRelabelConfigs.timeseries` are automatically joined into a regular expression that will match either of the provided timeseries.
The resulting expression is used as the `regex` parameter in the final remote write configuration.

[[common]]
== `base.common`, `instances.common`

Expand Down
6 changes: 6 additions & 0 deletions tests/golden/remote-write/prometheus/apps/prometheus.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
spec:
ignoreDifferences:
- group: ''
jsonPointers:
- /imagePullSecrets
kind: ServiceAccount
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1
kind: Namespace
metadata:
annotations: {}
labels:
SYNMonitoring: main
name: syn-prometheus-operator
name: syn-prometheus-operator
Loading
Loading