{{- $ctx := dict "helm" . }} {{- $scrapeLabels := include "vm.labels" $ctx }} {{- $prefix := include "vm.fullname" $ctx }} {{- $ns := include "vm.namespace" $ctx }} {{- range $name, $config := .Values }} {{- if and (kindIs "map" $config) $config.enabled (hasKey $config "vmScrape") }} {{- $svc := kebabcase $name }} {{- $fullname := printf "%s-%s" $prefix $svc }} {{- $fullnameLabel := $fullname | trunc 63 | trimSuffix "-" }} {{- $ports := ($config.service).ports | default dict }} {{- if ($config.service).port }} {{- $_ := set $ports "" $config.service }} {{- end }} {{- with $config.endpoints }} --- apiVersion: v1 kind: Endpoints metadata: name: {{ $fullname }} namespace: {{ $config.service.namespace | default "kube-system" }} {{- $extraLabels := dict "app" $fullnameLabel "k8s-app" $svc }} {{- $_ := set $ctx "extraLabels" $extraLabels }} labels: {{ include "vm.labels" $ctx | nindent 4 }} subsets: - addresses: {{- range . }} - ip: {{ . }} {{- end }} {{- if $ports }} ports: {{- range $portName, $portConfig := $ports }} {{- $parts := list "http-metrics" }} {{- if $portName }} {{- $parts = append $parts $portName }} {{- end }} - name: {{ $parts | join "-" }} port: {{ $portConfig.port }} protocol: TCP {{- end }} {{- end }} {{- end }} {{- $selector := default dict }} {{- if and ($config.service).enabled (empty (index $.Subcharts $name)) }} {{- $extraLabels := dict "app" $fullnameLabel "jobLabel" $svc }} {{- $_ := set $ctx "extraLabels" $extraLabels }} {{- $selector = dict "matchLabels" (fromYaml (include "vm.selectorLabels" $ctx)) }} --- apiVersion: v1 kind: Service metadata: name: {{ $fullname }} namespace: {{ $config.service.namespace | default "kube-system" }} labels: {{ include "vm.labels" $ctx | nindent 4 }} spec: clusterIP: None {{- if $ports }} ports: {{- range $portName, $portConfig := $ports }} {{- $parts := list "http-metrics" }} {{- if $portName }} {{- $parts = append $parts $portName }} {{- end }} - name: {{ $parts | join "-" }} port: {{ $portConfig.port }} protocol: TCP targetPort: {{ $portConfig.targetPort }} {{- end }} {{- end }} {{- if empty $config.endpoints }} {{- with ($config.service).selector }} selector: {{ toYaml . | nindent 4 }} {{- end }} {{- end }} type: ClusterIP {{- end }} {{- if $config.vmScrape }} {{- if index $.Subcharts $name }} {{- $_ := set $ctx "extraLabels" (default dict) }} {{- $selector = dict "matchLabels" (fromYaml (include "vm.selectorLabels" $ctx)) }} {{- end }} {{- $spec := dict "selector" $selector }} {{- $scrapes := $config.vmScrapes | default (dict $svc $config.vmScrape) }} {{- $defaultScrape := $config.vmScrape | default dict }} {{- range $scrapeName, $scrapeConfig := $scrapes }} {{- $sc := mergeOverwrite (deepCopy $defaultScrape) (deepCopy $scrapeConfig) }} {{- if or (not (hasKey $sc "enabled")) $sc.enabled }} {{- $fullname = printf "%s-%s" $prefix $scrapeName }} --- apiVersion: operator.victoriametrics.com/v1beta1 kind: {{ ternary "VMServiceScrape" $sc.kind (empty $sc.kind) }} metadata: name: {{ $fullname }} namespace: {{ $ns }} labels: {{ $scrapeLabels | nindent 4 }} {{- $emptyParamsToDrop := list "endpoints" }} {{- $scrapeSpec := mergeOverwrite (deepCopy $spec) (deepCopy $sc.spec) }} {{- range $paramToDrop := $emptyParamsToDrop }} {{- if and (hasKey $scrapeSpec $paramToDrop) (empty (index $scrapeSpec $paramToDrop)) }} {{- $_ := unset $scrapeSpec $paramToDrop }} {{- end }} {{- end }} spec: {{ (tpl (toYaml $scrapeSpec) $) | nindent 2 }} {{- end }} {{- end }} {{- end }} {{- end }} {{- end }}