apiVersion: v1 kind: Service metadata: name: {{ template "kube-state-metrics.fullname" . }} namespace: {{ template "kube-state-metrics.namespace" . }} labels: app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" app.kubernetes.io/instance: "{{ .Release.Name }}" app.kubernetes.io/managed-by: "{{ .Release.Service }}" {{- if .Values.customLabels }} {{ toYaml .Values.customLabels | indent 4 }} {{- end }} annotations: {{- if .Values.prometheusScrape }} prometheus.io/scrape: '{{ .Values.prometheusScrape }}' {{- end }} {{- if .Values.service.annotations }} {{- toYaml .Values.service.annotations | nindent 4 }} {{- end }} spec: type: "{{ .Values.service.type }}" ports: - name: "http" protocol: TCP port: {{ .Values.service.port }} {{- if .Values.service.nodePort }} nodePort: {{ .Values.service.nodePort }} {{- end }} targetPort: 8080 {{ if .Values.selfMonitor.enabled }} - name: "metrics" protocol: TCP port: {{ .Values.selfMonitor.telemetryPort | default 8081 }} targetPort: 8081 {{ end }} {{- if .Values.service.loadBalancerIP }} loadBalancerIP: "{{ .Values.service.loadBalancerIP }}" {{- end }} selector: app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} app.kubernetes.io/instance: {{ .Release.Name }}