{{ range $name, $config := .Values.ingressRoute }}
{{ if $config.enabled }}
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: {{ $.Release.Name }}-{{ $name }}
  namespace: {{ template "traefik.namespace" $ }}
  annotations:
    {{- if and $.Values.ingressClass.enabled $.Values.providers.kubernetesCRD.enabled $.Values.providers.kubernetesCRD.ingressClass }}
    kubernetes.io/ingress.class: {{ $.Values.providers.kubernetesCRD.ingressClass }}
    {{- end }}
    {{- with $config.annotations }}
    {{- toYaml . | nindent 4 }}
    {{- end }}
  labels:
    {{- include "traefik.labels" $ | nindent 4 }}
    {{- with $config.labels }}
    {{- toYaml . | nindent 4 }}
    {{- end }}
spec:
  entryPoints:
  {{- range $config.entryPoints }}
  - {{ . }}
  {{- end }}
  routes:
  - match: {{ $config.matchRule }}
    kind: Rule
    {{- with $config.services }}
    services:
      {{- toYaml . | nindent 6 }}
    {{- end -}}
    {{- with $config.middlewares }}
    middlewares:
      {{- toYaml . | nindent 6 }}
    {{- end -}}

  {{- with $config.tls }}
  tls:
    {{- toYaml . | nindent 4 }}
  {{- end }}
{{- end -}}
{{ end }}