Skip to content

Commit 31aa021

Browse files
refactor promconverter
1 parent a2547f4 commit 31aa021

89 files changed

Lines changed: 1362 additions & 1319 deletions

File tree

Some content is hidden

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

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ CONTROLLER_TOOLS_VERSION ?= v0.20.1
399399
ENVTEST_VERSION ?= release-0.23
400400
GOLANGCI_LINT_VERSION ?= v2.10.1
401401
CODEGENERATOR_VERSION ?= v0.35.1
402-
KIND_VERSION ?= 89ff06bd25f016e095a4045ca0704ef1330a2dbc
402+
KIND_VERSION ?= v0.31.0
403403
OLM_VERSION ?= 0.40.0
404404
OPERATOR_SDK_VERSION ?= v1.42.0
405405
OPM_VERSION ?= v1.63.0

api/operator/v1beta1/vmextra_types.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,21 @@ const (
4545
ClusterComponentStorage ClusterComponent = "storage"
4646
)
4747

48+
type MetadataStrategy string
49+
50+
const (
51+
// MetadataStrategyPreferVM - prefers VM object meta values, ignores prometheus
52+
MetadataStrategyPreferVM MetadataStrategy = "prefer-victoriametrics"
53+
// MetadataStrategyPreferProm - prefers prometheus
54+
MetadataStrategyPreferProm MetadataStrategy = "prefer-prometheus"
55+
// MetadataStrategyMergeVMPriority merges both label sets
56+
// its not possible to remove values
57+
MetadataStrategyMergeVMPriority MetadataStrategy = "merge-victoriametrics-priority"
58+
// MetadataStrategyMergePromPriority merges both label sets
59+
// its not possible to remove values
60+
MetadataStrategyMergePromPriority MetadataStrategy = "merge-prometheus-priority"
61+
)
62+
4863
const (
4964
httpPathPrefixFlag = "http.pathPrefix"
5065
reloadAuthKeyFlag = "reloadAuthKey"
@@ -70,6 +85,19 @@ const (
7085
VMAuthLBServiceProxyTargetLabel = "operator.victoriametrics.com/vmauthlb-proxy-name"
7186
VMAuthLBServiceProxyJobNameLabel = "operator.victoriametrics.com/vmauthlb-proxy-job-name"
7287
KubeNodeEnvName = "KUBE_NODE_NAME"
88+
// IgnoreConversionLabel this annotation disables updating of corresponding VMObject
89+
// must be added to annotation of VMObject
90+
// annotations:
91+
// operator.victoriametrics.com/ignore-prometheus-updates: enabled
92+
IgnoreConversionLabel = "operator.victoriametrics.com/ignore-prometheus-updates"
93+
// IgnoreConversion - disables updates from prometheus api
94+
IgnoreConversion = "enabled"
95+
// MetadataStrategyLabel merge strategy by default prefer prometheus meta labels
96+
// but with annotation value added to VMObject:
97+
// annotations:
98+
// operator.victoriametrics.com/merge-api-strategy: prefer-victoriametrics
99+
// metadata from VMObject will be preferred during merge
100+
MetadataStrategyLabel = "operator.victoriametrics.com/merge-meta-strategy"
73101
)
74102

75103
const (

docs/api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2552,6 +2552,8 @@ Appears in: [VLAgentSpec](#vlagentspec), [VLClusterSpec](#vlclusterspec), [VLSin
25522552
| labels<a href="#managedobjectsmetadata-labels" id="managedobjectsmetadata-labels">#</a><br/>_object (keys:string, values:string)_ | _(Required)_<br/>Labels Map of string keys and values that can be used to organize and categorize<br />(scope and select) objects.<br />More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels |
25532553

25542554

2555+
2556+
25552557
#### NamespaceDiscovery
25562558

25572559

internal/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ type BaseOperatorConf struct {
523523

524524
EnabledPrometheusConverter struct {
525525
PodMonitor bool `default:"true" env:"PODMONITOR"`
526-
ServiceScrape bool `default:"true" env:"SERVICESCRAPE"`
526+
ServiceMonitor bool `default:"true" env:"SERVICESCRAPE"`
527527
PrometheusRule bool `default:"true" env:"PROMETHEUSRULE"`
528528
Probe bool `default:"true" env:"PROBE"`
529529
AlertmanagerConfig bool `default:"true" env:"ALERTMANAGERCONFIG"`

internal/controller/operator/controllers.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,16 @@ var (
6363
Name: "operator_controller_reconcile_errors_total",
6464
Help: "Counts number context.Canceled errors",
6565
})
66+
activeConverterWatchers = prometheus.NewGaugeVec(prometheus.GaugeOpts{
67+
Name: "operator_prometheus_converter_active_watchers",
68+
}, []string{"object_type_name"})
6669
)
6770

6871
// InitMetrics adds metrics to the Registry
6972
func init() {
70-
metrics.Registry.MustRegister(parseObjectErrorsTotal, getObjectsErrorsTotal, conflictErrorsTotal, contextCancelErrorsTotal)
73+
metrics.Registry.MustRegister(
74+
parseObjectErrorsTotal, getObjectsErrorsTotal, conflictErrorsTotal,
75+
contextCancelErrorsTotal, activeConverterWatchers)
7176
}
7277

7378
func getDefaultOptions() controller.Options {

internal/controller/operator/converter/apis.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ const (
2121

2222
var log = logf.Log.WithName("controller.PrometheusConverter")
2323

24-
// ConvertPromRule creates VMRule from PrometheusRule
25-
func ConvertPromRule(prom *promv1.PrometheusRule, conf *config.BaseOperatorConf) *vmv1beta1.VMRule {
24+
// PrometheusRule creates VMRule from PrometheusRule
25+
func PrometheusRule(prom *promv1.PrometheusRule, conf *config.BaseOperatorConf) *vmv1beta1.VMRule {
2626
ruleGroups := make([]vmv1beta1.RuleGroup, 0, len(prom.Spec.Groups))
2727
for _, promGroup := range prom.Spec.Groups {
2828
ruleItems := make([]vmv1beta1.Rule, 0, len(promGroup.Rules))
@@ -100,8 +100,8 @@ func MaybeAddArgoCDIgnoreAnnotations(mustAdd bool, dst map[string]string) map[st
100100
return dst
101101
}
102102

103-
// ConvertServiceMonitor create VMServiceScrape from ServiceMonitor
104-
func ConvertServiceMonitor(serviceMon *promv1.ServiceMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMServiceScrape {
103+
// ServiceMonitor create VMServiceScrape from ServiceMonitor
104+
func ServiceMonitor(serviceMon *promv1.ServiceMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMServiceScrape {
105105
cs := &vmv1beta1.VMServiceScrape{
106106
ObjectMeta: metav1.ObjectMeta{
107107
Name: serviceMon.Name,
@@ -383,8 +383,8 @@ func convertPodEndpoints(promPodEnpoints []promv1.PodMetricsEndpoint) []vmv1beta
383383
return endPoints
384384
}
385385

386-
// ConvertPodMonitor create VMPodScrape from PodMonitor
387-
func ConvertPodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMPodScrape {
386+
// PodMonitor create VMPodScrape from PodMonitor
387+
func PodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMPodScrape {
388388
cs := &vmv1beta1.VMPodScrape{
389389
ObjectMeta: metav1.ObjectMeta{
390390
Name: podMon.Name,
@@ -428,8 +428,8 @@ func ConvertPodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf)
428428
return cs
429429
}
430430

431-
// ConvertProbe creates VMProbe from prometheus probe
432-
func ConvertProbe(probe *promv1.Probe, conf *config.BaseOperatorConf) *vmv1beta1.VMProbe {
431+
// Probe creates VMProbe from prometheus probe
432+
func Probe(probe *promv1.Probe, conf *config.BaseOperatorConf) *vmv1beta1.VMProbe {
433433
var (
434434
k8sTargets []*vmv1beta1.VMProbeTargetKubernetes
435435
staticTargets *vmv1beta1.VMProbeTargetStatic

0 commit comments

Comments
 (0)