{{- if .Values.ingress.host }}

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-main
  namespace: {{ .Release.Namespace }}
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-origin: "*"
    {{- if .Values.ingress.tls }}
    cert-manager.io/cluster-issuer: "cert-main"
    {{- end }}
    nginx.ingress.kubernetes.io/upstream-vhost: "{{ .Values.ingress.host }}"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-Proto {{ .Values.ingress.scheme | default "https" }};

spec:
  {{- if .Values.ingress.tls }}
  tls:
    - hosts:
      - {{ .Values.ingress.host }}
      secretName: cert-main
  {{- end }}

  rules:
  - host: {{ .Values.ingress.host }}
    http:
      paths:
{{- if .Values.minio_local }}
      - path: /data/(.*)
        pathType: Prefix
        backend:
          service:
            name: local-minio
            port:
              number: 9000
{{- end }}

      - path: /(api/.*)
        pathType: Prefix
        backend:
          service:
            name: browsertrix-cloud-backend
            port:
              number: 8000

      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: browsertrix-cloud-frontend
            port:
              number: 80

{{ if .Values.signer.host }}
  - host: {{ .Values.signer.host }}
    http:
      paths:
      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: auth-signer
            port:
              number: 80

{{ end }}

{{ if .Values.ingress.tls }}
---

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: cert-main
  namespace: cert-manager
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: {{ .Values.ingress.cert_email }}
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: cert-main
    # Enable the HTTP-01 challenge provider
    solvers:
    - http01:
        ingress:
          class: nginx

{{ end }}
{{ end }}
