{{- if .Values.ingress.enabled }}
{{- if eq .Values.ingress.provider "traefik" }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: {{ include "entkube.fullname" . }}
  labels:
    {{- include "entkube.labels" . | nindent 4 }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`{{ .Values.ingress.host }}`)
      kind: Rule
      services:
        - name: {{ include "entkube.fullname" . }}-web
          port: {{ .Values.web.port }}
  {{- if .Values.ingress.tls.enabled }}
  tls:
    secretName: {{ .Values.ingress.tls.secretName }}
  {{- end }}
{{- else if eq .Values.ingress.provider "gatewayapi" }}
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: {{ include "entkube.fullname" . }}
  labels:
    {{- include "entkube.labels" . | nindent 4 }}
spec:
  parentRefs:
    - name: {{ include "entkube.fullname" . }}-gateway
  hostnames:
    - {{ .Values.ingress.host }}
  rules:
    - backendRefs:
        - name: {{ include "entkube.fullname" . }}-web
          port: {{ .Values.web.port }}
{{- else if eq .Values.ingress.provider "istio" }}
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: {{ include "entkube.fullname" . }}
  labels:
    {{- include "entkube.labels" . | nindent 4 }}
spec:
  hosts:
    - {{ .Values.ingress.host }}
  gateways:
    - {{ include "entkube.fullname" . }}-gateway
  http:
    - route:
        - destination:
            host: {{ include "entkube.fullname" . }}-web
            port:
              number: {{ .Values.web.port }}
{{- end }}
{{- end }}
