charts/devlake/templates/ingresses.yaml (126 lines of code) (raw):

# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # {{- if .Values.ingress.enabled -}} {{- $fullName := include "devlake.fullname" . -}} {{- $uiServiceName := printf "%s-%s" $fullName "ui" -}} {{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} {{- end }} {{- end }} --- {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion: networking.k8s.io/v1 {{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion: networking.k8s.io/v1beta1 {{- else -}} apiVersion: extensions/v1beta1 {{- end }} kind: Ingress metadata: name: {{ $fullName }} labels: {{- include "devlake.labels" . | nindent 4 }} {{- with .Values.ingress.extraLabels }} {{- toYaml . | nindent 4 }} {{- end }} annotations: {{- with .Values.ingress.annotations }} {{- toYaml . | nindent 4 }} {{- end }} spec: {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} ingressClassName: {{ .Values.ingress.className }} {{- end }} {{- if .Values.ingress.enableHttps }} tls: - hosts: - {{ .Values.ingress.hostname }} secretName: {{ .Values.ingress.tlsSecretName }} {{- end }} rules: - host: {{ .Values.ingress.hostname | quote }} http: paths: {{- if .Values.grafana.enabled }} - path: /{{ include "devlake.grafanaEndpointPrefix" . }} {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }} pathType: Prefix {{- end }} backend: {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} service: name: {{ .Values.grafana.ingressServiceName | default ( include "grafana.fullname" (dict "Values" .Values.grafana "Chart" (dict "Name" "grafana") "Release" .Release ) ) }} port: number: {{ .Values.grafana.ingressServicePort | default .Values.grafana.service.port }} {{- else }} serviceName: {{ .Values.grafana.ingressServiceName | default ( include "grafana.fullname" (dict "Values" .Values.grafana "Chart" (dict "Name" "grafana") "Release" .Release ) ) }} servicePort: {{ .Values.grafana.ingressServicePort | default .Values.grafana.service.port }} {{- end }} {{- end }} - path: /{{ include "devlake.uiEndpointPrefix" . }} {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }} pathType: Prefix {{- end }} backend: {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} service: name: {{ $uiServiceName }} port: number: 4000 {{- else }} serviceName: {{ $uiServiceName }} servicePort: 4000 {{- end }} {{- if .Values.ingress.extraPaths }} {{- toYaml .Values.ingress.extraPaths | nindent 10 }} {{- end }} {{- if and .Values.ingress.useDefaultNginx (not .Values.grafana.enabled) }} --- {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion: networking.k8s.io/v1 {{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion: networking.k8s.io/v1beta1 {{- else -}} apiVersion: extensions/v1beta1 {{- end }} kind: Ingress metadata: name: {{ $fullName }}-ext-grafana labels: {{- include "devlake.labels" . | nindent 4 }} annotations: nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/permanent-redirect: {{ .Values.grafana.external.url }} {{- with .Values.ingress.annotations }} {{- toYaml . | nindent 4 }} {{- end }} spec: {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} ingressClassName: {{ .Values.ingress.className }} {{- end }} {{- if .Values.ingress.enableHttps }} tls: - hosts: - {{ .Values.ingress.hostname }} secretName: {{ .Values.ingress.tlsSecretName }} {{- end }} rules: - host: {{ .Values.ingress.hostname | quote }} http: paths: - path: /{{ include "devlake.grafanaEndpointPrefix" . }}(/|$)(.*) {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }} pathType: ImplementationSpecific {{- end }} backend: # dummy to config-ui, actual 302 forearding for external grafana {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} service: name: {{ $uiServiceName }} port: number: 4000 {{- else }} serviceName: {{ $uiServiceName }} servicePort: 4000 {{- end }} {{- end }} {{- end }}