apiVersion: v1
kind: Service
metadata:
  name: {{ include "ops-server.fullname" . }}
  namespace: {{ .Release.Namespace }}
  labels:
    {{- include "ops-server.labels" . | nindent 4 }}
  {{- with .Values.service.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: ops-http
      protocol: TCP
      name: http
    - port: {{ .Values.service.metricsPort }}
      targetPort: ops-metrics
      protocol: TCP
      name: ops-metrics
    - port: {{ .Values.sourceController.config.metricsPort }}
      targetPort: source-metrics
      protocol: TCP
      name: source-metrics
    - port: {{ .Values.helmController.config.metricsPort }}
      targetPort: helm-metrics
      protocol: TCP
      name: helm-metrics
  selector:
    {{- include "ops-server.selectorLabels" . | nindent 4 }}

---
# Source Controller Service (needed for storage advertisement)
apiVersion: v1
kind: Service
metadata:
  name: source-controller
  namespace: {{ .Release.Namespace }}
  labels:
    app.kubernetes.io/component: source-controller
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: source-http
      protocol: TCP
      name: http
  selector:
    {{- include "ops-server.selectorLabels" . | nindent 4 }}
