{{- if and (ne .Values.loadBalancer.type "disable") (ne .Values.loadBalancer.type "gclb") -}} {{- $fullName := include "livekit-server.fullname" . -}} {{- $svcPort := .Values.loadBalancer.servicePort -}} kind: Ingress metadata: name: {{ $fullName }} labels: {{- include "livekit-server.labels" . | nindent 4 }} annotations: # custom annotations {{- with .Values.loadBalancer.annotations }} {{- toYaml . | nindent 4 }} {{- end }} # AWS ALB {{- if eq .Values.loadBalancer.type "alb" }} kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing {{- if .Values.loadBalancer.tls }} alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' {{- end }} {{- end }} # GKE with managed certs {{- if eq .Values.loadBalancer.type "gke-managed-cert" }} kubernetes.io/ingress.global-static-ip-name: {{ .Values.loadBalancer.staticIpName }} networking.gke.io/managed-certificates: {{ or .Values.loadBalancer.certificateName "managed-cert" }} kubernetes.io/ingress.class: "gce" {{- end }} # DO with cert manager {{- if eq .Values.loadBalancer.type "do" }} cert-manager.io/cluster-issuer: {{ .Values.loadBalancer.clusterIssuer }} {{- end }} {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion }} apiVersion: networking.k8s.io/v1 {{- else }} apiVersion: extensions/v1beta1 {{- end }} spec: {{- if eq .Values.loadBalancer.type "do" }} ingressClassName: nginx {{- end }} rules: # In order to work with cert manager on DO, we cannot set us as a default backend {{- range .Values.loadBalancer.tls }} {{- range .hosts }} - host: {{ . | quote }} http: paths: - pathType: Prefix path: / backend: service: name: {{ $fullName }} port: number: {{ $svcPort }} {{- end }} {{- end }} {{- if ne .Values.loadBalancer.type "gke-vpc-native" }} {{- with .Values.loadBalancer }} {{- if .tls }} tls: {{- range .tls }} {{- if .hosts }} - hosts: {{- range .hosts }} - {{ . | quote }} {{- end }} {{- if .secretName }} secretName: {{ .secretName | quote }} {{- end }} {{- end }} {{- end }} {{- end }} {{- end }} {{- end }} {{- end }}