153 lines
5.2 KiB
Smarty
153 lines
5.2 KiB
Smarty
{{/* Returns the primary Workload object */}}
|
|
{{- define "tc.v1.common.lib.util.chartcontext" -}}
|
|
{{/* Create defaults */}}
|
|
{{- $protocol := "https" -}}
|
|
{{- $host := "127.0.0.1" -}}
|
|
{{- $port := "443" -}}
|
|
{{- $url := "" -}}
|
|
{{- $podCIDR := "172.16.0.0/16" -}}
|
|
{{- $svcCIDR := "172.17.0.0/16" -}}
|
|
|
|
{{/* set temporary storage for ingress name and port */}}
|
|
{{- $targetIngress := "" -}}
|
|
{{- $selectedIngress := "" -}}
|
|
|
|
{{/* Get service, default to primary */}}
|
|
{{- $selectedService := fromYaml (include "tc.v1.common.lib.helpers.getSelectedServiceValues" (dict "rootCtx" $ )) -}}
|
|
|
|
{{/* read loadbalancer IPs for metallb */}}
|
|
{{- if eq $selectedService.type "LoadBalancer" -}}
|
|
{{- with $selectedService.loadBalancerIP -}}
|
|
{{- $host = toString . -}}
|
|
{{- end -}}
|
|
|
|
{{/* set temporary storage for port name and port */}}
|
|
{{- $targetPort := "" -}}
|
|
{{- $selectedPort := "" -}}
|
|
{{/* Fetch port values */}}
|
|
{{- $targetPort = include "tc.v1.common.lib.util.service.ports.primary" (dict "svcName" $selectedService.shortName "svcValues" $selectedService) -}}
|
|
{{- $selectedPort = get $selectedService.ports $targetPort -}}
|
|
{{/* store port number */}}
|
|
{{- $port = $selectedPort.port -}}
|
|
{{- end -}}
|
|
|
|
{{/* Fetch ingress values */}}
|
|
{{- $targetIngress = include "tc.v1.common.lib.util.ingress.primary" $ -}}
|
|
{{- $selectedIngress = get $.Values.ingress $targetIngress -}}
|
|
|
|
{{/* store host from ingress number */}}
|
|
{{- if $selectedIngress -}}
|
|
{{- if $selectedIngress.enabled -}}
|
|
{{- with (index $selectedIngress.hosts 0) -}}
|
|
{{- $host = .host -}}
|
|
{{- end -}}
|
|
|
|
{{/* Get the port for the ingress entrypoint */}}
|
|
|
|
{{- $namespace := "tc-system" -}}
|
|
{{- if $.Values.operator.traefik -}}
|
|
{{- if $.Values.operator.traefik.namespace -}}
|
|
{{- $namespace = $.Values.operator.traefik.namespace -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if $selectedIngress.ingressClassName -}}
|
|
{{- if $.Values.global.ixChartContext -}}
|
|
{{- $namespace = (printf "ix-%s" $selectedIngress.ingressClassName) -}}
|
|
{{- else -}}
|
|
{{- $namespace = $selectedIngress.ingressClassName -}}
|
|
{{- end -}}
|
|
|
|
{{- end -}}
|
|
|
|
{{- $traefikportalhook := lookup "v1" "ConfigMap" $namespace "portalhook" | default dict -}}
|
|
{{/* If there is no portalhook */}}
|
|
{{- if not $traefikportalhook -}}
|
|
{{/* Get all configmaps */}}
|
|
{{- $hooks := lookup "v1" "ConfigMap" $namespace "" -}}
|
|
|
|
{{- $portalHooks := list -}}
|
|
{{- range $hook := ($hooks.items | default list) -}}
|
|
{{- $hookData := (get $hook "data") -}}
|
|
{{- $hookMetaData := (get $hook "metadata") -}}
|
|
{{- if and $hookData $hookMetaData -}}
|
|
{{/* Filter portalhook-* */}}
|
|
{{- if $hookMetaData.name -}}
|
|
{{- if hasPrefix "portalhook-" $hookMetaData.name -}}
|
|
{{- $portalHooks = mustAppend $portalHooks $hook -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{/* use the first available portalhook */}}
|
|
{{- if $portalHooks -}}
|
|
{{- $traefikportalhook = index $portalHooks 0 -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- $entrypoint := "websecure" -}}
|
|
{{- if $selectedIngress.entrypoint -}}
|
|
{{- $entrypoint = $selectedIngress.entrypoint -}}
|
|
{{- end -}}
|
|
{{- if $traefikportalhook -}}
|
|
{{- if (get $traefikportalhook.data $entrypoint) -}}
|
|
{{- $port = (get $traefikportalhook.data $entrypoint) -}}
|
|
{{- else if $traefikportalhook.data.websecure -}}
|
|
{{- $port = $traefikportalhook.data.websecure -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- $port = toString $port -}}
|
|
|
|
{{/* sanitise */}}
|
|
{{- if eq $port "443" -}}
|
|
{{- $protocol = "https" -}}
|
|
{{- end -}}
|
|
|
|
{{- if eq $port "80" -}}
|
|
{{- $protocol = "http" -}}
|
|
{{- end -}}
|
|
|
|
{{- if or (and (eq $protocol "https") (eq $port "443")) (and (eq $protocol "http") (eq $port "80")) -}}
|
|
{{- $port = "" -}}
|
|
{{- end -}}
|
|
|
|
{{/* Construct URL*/}}
|
|
{{- if $port -}}
|
|
{{- $url = printf "%s://%s:%s" $protocol $host $port -}}
|
|
{{- else -}}
|
|
{{- $url = printf "%s://%s" $protocol $host -}}
|
|
{{- end -}}
|
|
|
|
{{/* TrueNAS SCALE specific code */}}
|
|
{{- if $.Values.global.ixChartContext -}}
|
|
{{- if $.Values.global.ixChartContext.kubernetes_config -}}
|
|
{{- $podCIDR = $.Values.global.ixChartContext.kubernetes_config.cluster_cidr -}}
|
|
{{- $svcCIDR = $.Values.global.ixChartContext.kubernetes_config.service_cidr -}}
|
|
{{- end -}}
|
|
{{- else -}}
|
|
{{/* TODO: Find ways to implement CIDR detection */}}
|
|
{{- end -}}
|
|
|
|
{{- if $.Values.chartContext -}}
|
|
{{- if $.Values.chartContext.APPURL -}}
|
|
{{- $url = $.Values.chartContext.APPURL -}}
|
|
{{- end -}}
|
|
|
|
{{- if $.Values.chartContext.podCIDR -}}
|
|
{{- $podCIDR = $.Values.chartContext.podCIDR -}}
|
|
{{- end -}}
|
|
|
|
{{- if $.Values.chartContext.svcCIDR -}}
|
|
{{- $svcCIDR = $.Values.chartContext.svcCIDR -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- $_ := set $.Values.chartContext "APPURL" $url -}}
|
|
{{- $_ := set $.Values.chartContext "podCIDR" $podCIDR -}}
|
|
{{- $_ := set $.Values.chartContext "svcCIDR" $svcCIDR -}}
|
|
{{- end -}}
|