---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.name }}-frontend
  namespace: {{ .Release.Namespace }}

spec:
  selector:
    matchLabels:
      app: {{ .Values.name }}
      role: frontend
  replicas: {{ .Values.nginx_num_replicas | default 1 }}
  template:
    metadata:
      labels:
        app: {{ .Values.name }}
        role: frontend

      annotations:
        # force helm to update the deployment each time
        {{- if not .Values.backend_only }}
        "helm.update": {{ randAlphaNum 5 | quote }}
        {{- end }}


    spec:
      {{- if .Values.main_node_type }}
      nodeSelector:
        nodeType: {{ .Values.main_node_type }}
      {{- end }}

      containers:
        - name: nginx
          image: {{ .Values.nginx_image }}
          imagePullPolicy: {{ .Values.nginx_pull_policy }}
          env:
            - name: BACKEND_HOST
              value: {{ .Values.name }}-backend

            - name: CRAWLER_FQDN_SUFFIX
              value: ".{{ .Values.crawler_namespace }}.svc.cluster.local"

            - name: CRAWLER_SVC_SUFFIX
              value: ".crawl-$crawl"

            - name: NO_MINIO_ROUTE
              value: "1"

          resources:
            limits:
              cpu: {{ .Values.nginx_limits_cpu }}
              memory: {{ .Values.nginx_limits_memory }}

            requests:
              cpu: {{ .Values.nginx_requests_cpu }}
              memory: {{ .Values.nginx_requests_memory }}

          readinessProbe:
            httpGet:
              path: /
              port: 80
             
---

apiVersion: v1
kind: Service

metadata:
  namespace: {{ .Release.Namespace }}
  name: {{ .Values.name }}-frontend
  labels:
    app: {{ .Values.name }}
    role: frontend

{{- if .Values.service }}
  {{- if .Values.service.annotations }}
  annotations:
  {{- range $key, $val := .Values.service.annotations }}
    {{ $key }}: {{ $val | quote }}
  {{- end }}
  {{- end }}
{{- end }}

spec:
  selector:
    app: {{ .Values.name }}
    role: frontend

{{- if .Values.service }}
  {{- if .Values.service.type }}
  type: {{ .Values.service.type | quote }}
  {{- end }}
{{- end }}

  ports:
    - protocol: TCP
      port: 80
      name: frontend

