| {{/* |
| This template serves as a blueprint for all Route objects that are created |
| within the common library. |
| */}} |
| {{- define "bjw-s.common.class.route" -}} |
| {{- $values := .Values.route -}} |
| {{- if hasKey . "ObjectValues" -}} |
| {{- with .ObjectValues.route -}} |
| {{- $values = . -}} |
| {{- end -}} |
| {{ end -}} |
| |
| {{- $fullName := include "bjw-s.common.lib.chart.names.fullname" . -}} |
| {{- if and (hasKey $values "nameOverride") $values.nameOverride -}} |
| {{- $fullName = printf "%v-%v" $fullName $values.nameOverride -}} |
| {{ end -}} |
| {{- $routeKind := $values.kind | default "HTTPRoute" -}} |
| {{- $primaryService := get .Values.service (include "bjw-s.common.lib.service.primary" .) -}} |
| {{- $defaultServiceName := $fullName -}} |
| {{- if and (hasKey $primaryService "nameOverride") $primaryService.nameOverride -}} |
| {{- $defaultServiceName = printf "%v-%v" $defaultServiceName $primaryService.nameOverride -}} |
| {{- end -}} |
| {{- $defaultServicePort := get $primaryService.ports (include "bjw-s.common.lib.service.primaryPort" (dict "values" $primaryService)) -}} |
| --- |
| apiVersion: gateway.networking.k8s.io/v1alpha2 |
| {{- if and (ne $routeKind "GRPCRoute") (ne $routeKind "HTTPRoute") (ne $routeKind "TCPRoute") (ne $routeKind "TLSRoute") (ne $routeKind "UDPRoute") }} |
| {{- fail (printf "Not a valid route kind (%s)" $routeKind) }} |
| {{- end }} |
| kind: {{ $routeKind }} |
| metadata: |
| name: {{ $fullName }} |
| {{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }} |
| labels: {{- toYaml . | nindent 4 }} |
| {{- end }} |
| {{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }} |
| annotations: {{- toYaml . | nindent 4 }} |
| {{- end }} |
| spec: |
| parentRefs: |
| {{- range $values.parentRefs }} |
| - group: {{ default "gateway.networking.k8s.io" .group }} |
| kind: {{ default "Gateway" .kind }} |
| name: {{ required (printf "parentRef name is required for %v %v" $routeKind $fullName) .name }} |
| namespace: {{ required (printf "parentRef namespace is required for %v %v" $routeKind $fullName) .namespace }} |
| {{- if .sectionName }} |
| sectionName: {{ .sectionName | quote }} |
| {{- end }} |
| {{- end }} |
| {{- if and (ne $routeKind "TCPRoute") (ne $routeKind "UDPRoute") $values.hostnames }} |
| hostnames: |
| {{- with $values.hostnames }} |
| {{- toYaml . | nindent 4 }} |
| {{- end }} |
| {{- end }} |
| rules: |
| {{- range $values.rules }} |
| - backendRefs: |
| {{- range .backendRefs }} |
| - group: {{ default "" .group | quote}} |
| kind: {{ default "Service" .kind }} |
| name: {{ default $defaultServiceName .name }} |
| namespace: {{ default $.Release.Namespace .namespace }} |
| port: {{ default $defaultServicePort.port .port }} |
| weight: {{ default 1 .weight }} |
| {{- end }} |
| {{- if (eq $routeKind "HTTPRoute") }} |
| {{- with .matches }} |
| matches: |
| {{- toYaml . | nindent 6 }} |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| {{- end }} |