charts/devlake/templates/ingresses.yaml (129 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" . -}} {{- 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 }} annotations: {{- if .Values.ingress.useDefaultNginx }} nginx.ingress.kubernetes.io/rewrite-target: /$2 {{- end}} {{- 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 }} {{- if .Values.ingress.useDefaultNginx }} - path: /{{ include "devlake.grafanaEndpointPrefix" . }}(/|$)(.*) {{- else }} - path: /{{ include "devlake.grafanaEndpointPrefix" . }} {{- end }} {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }} pathType: Prefix {{- end }} backend: {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} service: name: {{ include "devlake.fullname" . }}-grafana port: number: 3000 {{- else }} serviceName: {{ include "devlake.fullname" . }}-grafana servicePort: 3000 {{- end }} {{- end }} {{- if .Values.ingress.useDefaultNginx }} - path: /{{ include "devlake.uiEndpointPrefix" . }}(/?|$)(.*) {{- else }} - path: /{{ include "devlake.uiEndpointPrefix" . }} {{- end}} {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }} pathType: Prefix {{- end }} backend: {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} service: name: {{ include "devlake.fullname" . }}-ui port: number: 4000 {{- else }} serviceName: {{ include "devlake.fullname" . }}-ui servicePort: 4000 {{- 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/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: Prefix {{- end }} backend: # dummy to config-ui, actual 302 forearding for external grafana {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} service: name: {{ include "devlake.fullname" . }}-ui port: number: 4000 {{- else }} serviceName: {{ include "devlake.fullname" . }}-ui servicePort: 4000 {{- end }} {{- end }} {{- end }}