feat(common): Release 2.0.1 (#193)

This commit is contained in:
Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs 2023-10-03 09:24:41 +02:00 committed by GitHub
parent bf5b623fa6
commit 66389dec8b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 240 additions and 148 deletions

View file

@ -1,56 +0,0 @@
{{/*
Default NOTES.txt content.
*/}}
{{- define "bjw-s.common.lib.chart.notes" -}}
{{- $primaryIngress := get .Values.ingress (include "bjw-s.common.lib.ingress.primary" .) -}}
{{- $primaryService := get .Values.service (include "bjw-s.common.lib.service.primary" .) -}}
{{- $primaryPort := "" -}}
{{- if $primaryService -}}
{{- $primaryPort = get $primaryService.ports (include "bjw-s.common.lib.service.primaryPort" (dict "serviceName" (include "bjw-s.common.lib.service.primary" .) "values" $primaryService)) -}}
{{- end -}}
{{- $prefix := "http" -}}
{{- if $primaryPort }}
{{- if hasKey $primaryPort "protocol" }}
{{- if eq $primaryPort.protocol "HTTPS" }}
{{- $prefix = "https" }}
{{- end }}
{{- end }}
{{- end }}
{{- if $primaryIngress }}
1. Access the application by visiting one of these URL's:
{{ range $primaryIngress.hosts }}
{{- $prefix = "http" -}}
{{ if $primaryIngress.tls -}}
{{- $prefix = "https" -}}
{{ end -}}
{{- $host := .host -}}
{{ if .hostTpl -}}
{{- $host = tpl .hostTpl $ -}}
{{ end }}
{{- $path := (first .paths).path | default "/" -}}
{{ if (first .paths).pathTpl -}}
{{- $path = tpl (first .paths).pathTpl $ -}}
{{ end }}
- {{ $prefix }}://{{- $host }}{{- $path }}
{{- end }}
{{- else if and $primaryService $primaryPort }}
1. Get the application URL by running these commands:
{{- if contains "NodePort" $primaryService.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "bjw-s.common.lib.chart.names.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo {{ $prefix }}://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" $primaryService.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get svc -w {{ include "bjw-s.common.lib.chart.names.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "bjw-s.common.lib.chart.names.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo {{ $prefix }}://$SERVICE_IP:{{ $primaryPort.port | toString | atoi }}
{{- else if contains "ClusterIP" $primaryService.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "bjw-s.common.lib.chart.names.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit {{ $prefix }}://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:{{ $primaryPort.port | toString | atoi }}
{{- end }}
{{- end }}
{{- end -}}

View file

@ -3,9 +3,18 @@ Validate container values
*/}}
{{- define "bjw-s.common.lib.container.validate" -}}
{{- $rootContext := .rootContext -}}
{{- $containerValues := .object -}}
{{- $controllerObject := .controllerObject -}}
{{- $containerObject := .containerObject -}}
{{- if eq (dig "image" "repository" "" $containerValues) "" -}}
{{- fail (printf "No image repository specified for container. (controller: %s, container: %s)" $containerValues.controller $containerValues.identifier) }}
{{- if not (kindIs "map" $containerObject.image) -}}
{{- fail (printf "Image required to be a dictionary with repository and tag fields. (controller %s, container %s)" $controllerObject.identifier $containerObject.identifier) }}
{{- end -}}
{{- if eq (dig "image" "repository" "" $containerObject) "" -}}
{{- fail (printf "No image repository specified for container. (controller %s, container %s)" $controllerObject.identifier $containerObject.identifier) }}
{{- end -}}
{{- if eq (dig "image" "tag" "" $containerObject) "" -}}
{{- fail (printf "No image tag specified for container. (controller %s, container %s)" $controllerObject.identifier $containerObject.identifier) }}
{{- end -}}
{{- end -}}

View file

@ -8,6 +8,14 @@ Convert container values to an object
{{- $_ := set $objectValues "identifier" $identifier -}}
{{- /* Convert float64 image tags to string */ -}}
{{- if kindIs "map" $objectValues.image -}}
{{- $imageTag := dig "image" "tag" "" $objectValues -}}
{{- if kindIs "float64" $imageTag -}}
{{- $_ := set $objectValues.image "tag" ($imageTag | toString) -}}
{{- end -}}
{{- end -}}
{{- /* Return the container object */ -}}
{{- $objectValues | toYaml -}}
{{- end -}}

View file

@ -9,10 +9,6 @@ Image used by the container.
{{- $imageRepo := $containerObject.image.repository -}}
{{- $imageTag := default $rootContext.Chart.AppVersion $containerObject.image.tag -}}
{{- if kindIs "float64" $imageTag -}}
{{- $imageTag = $imageTag | toString -}}
{{- end -}}
{{- if and $imageRepo $imageTag -}}
{{- printf "%s:%s" $imageRepo $imageTag -}}
{{- end -}}

View file

@ -11,6 +11,7 @@ volumeMounts used by the container.
{{- $persistenceItemsToProcess := dict -}}
{{- $enabledVolumeMounts := list -}}
{{- /* Collect regular persistence items */ -}}
{{- range $identifier, $persistenceValues := $rootContext.Values.persistence -}}
{{- /* Enable persistence item by default, but allow override */ -}}
{{- $persistenceEnabled := true -}}
@ -19,60 +20,86 @@ volumeMounts used by the container.
{{- end -}}
{{- if $persistenceEnabled -}}
{{- /* Set some default values */ -}}
{{- $_ := set $persistenceItemsToProcess $identifier $persistenceValues -}}
{{- end -}}
{{- end -}}
{{- /* Set the default mountPath to /<name_of_the_peristence_item> */ -}}
{{- $mountPath := (printf "/%v" $identifier) -}}
{{- if eq "hostPath" (default "pvc" $persistenceValues.type) -}}
{{- $mountPath = $persistenceValues.hostPath -}}
{{- /* Collect volumeClaimTemplates */ -}}
{{- if not (eq (dig "statefulset" "volumeClaimTemplates" nil $controllerObject) nil) -}}
{{- range $persistenceValues := $controllerObject.statefulset.volumeClaimTemplates -}}
{{- /* Enable persistence item by default, but allow override */ -}}
{{- $persistenceEnabled := true -}}
{{- if hasKey $persistenceValues "enabled" -}}
{{- $persistenceEnabled = $persistenceValues.enabled -}}
{{- end -}}
{{- /* Process configured mounts */ -}}
{{- if or .globalMounts .advancedMounts -}}
{{- $mounts := list -}}
{{- if hasKey . "globalMounts" -}}
{{- $mounts = .globalMounts -}}
{{- if $persistenceEnabled -}}
{{- $mountValues := dict -}}
{{- if not (eq (dig "globalMounts" nil $persistenceValues) nil) -}}
{{- $_ := set $mountValues "globalMounts" $persistenceValues.globalMounts -}}
{{- end -}}
{{- if hasKey . "advancedMounts" -}}
{{- $advancedMounts := dig $controllerObject.identifier $containerObject.identifier list .advancedMounts -}}
{{- range $advancedMounts -}}
{{- $mounts = append $mounts . -}}
{{- end -}}
{{- if not (eq (dig "advancedMounts" nil $persistenceValues) nil) -}}
{{- $_ := set $mountValues "advancedMounts" (dict $controllerObject.identifier $persistenceValues.advancedMounts) -}}
{{- end -}}
{{- $_ := set $persistenceItemsToProcess $persistenceValues.name $mountValues -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- range $mounts -}}
{{- $volumeMount := dict -}}
{{- $_ := set $volumeMount "name" $identifier -}}
{{- range $identifier, $persistenceValues := $persistenceItemsToProcess -}}
{{- /* Set some default values */ -}}
{{- /* Use the specified mountPath if provided */ -}}
{{- with .path -}}
{{- $mountPath = . -}}
{{- end -}}
{{- $_ := set $volumeMount "mountPath" $mountPath -}}
{{- /* Set the default mountPath to /<name_of_the_peristence_item> */ -}}
{{- $mountPath := (printf "/%v" $identifier) -}}
{{- if eq "hostPath" (default "pvc" $persistenceValues.type) -}}
{{- $mountPath = $persistenceValues.hostPath -}}
{{- end -}}
{{- /* Use the specified subPath if provided */ -}}
{{- with .subPath -}}
{{- $subPath := . -}}
{{- $_ := set $volumeMount "subPath" $subPath -}}
{{- end -}}
{{- /* Process configured mounts */ -}}
{{- if or .globalMounts .advancedMounts -}}
{{- $mounts := list -}}
{{- if hasKey . "globalMounts" -}}
{{- $mounts = .globalMounts -}}
{{- end -}}
{{- /* Use the specified readOnly setting if provided */ -}}
{{- with .readOnly -}}
{{- $readOnly := . -}}
{{- $_ := set $volumeMount "readOnly" $readOnly -}}
{{- end -}}
{{- $enabledVolumeMounts = append $enabledVolumeMounts $volumeMount -}}
{{- if hasKey . "advancedMounts" -}}
{{- $advancedMounts := dig $controllerObject.identifier $containerObject.identifier list .advancedMounts -}}
{{- range $advancedMounts -}}
{{- $mounts = append $mounts . -}}
{{- end -}}
{{- end -}}
{{- /* Mount to default path if no mounts are configured */ -}}
{{- else -}}
{{- range $mounts -}}
{{- $volumeMount := dict -}}
{{- $_ := set $volumeMount "name" $identifier -}}
{{- /* Use the specified mountPath if provided */ -}}
{{- with .path -}}
{{- $mountPath = . -}}
{{- end -}}
{{- $_ := set $volumeMount "mountPath" $mountPath -}}
{{- /* Use the specified subPath if provided */ -}}
{{- with .subPath -}}
{{- $subPath := . -}}
{{- $_ := set $volumeMount "subPath" $subPath -}}
{{- end -}}
{{- /* Use the specified readOnly setting if provided */ -}}
{{- with .readOnly -}}
{{- $readOnly := . -}}
{{- $_ := set $volumeMount "readOnly" $readOnly -}}
{{- end -}}
{{- $enabledVolumeMounts = append $enabledVolumeMounts $volumeMount -}}
{{- end -}}
{{- /* Mount to default path if no mounts are configured */ -}}
{{- else -}}
{{- $volumeMount := dict -}}
{{- $_ := set $volumeMount "name" $identifier -}}
{{- $_ := set $volumeMount "mountPath" $mountPath -}}
{{- $enabledVolumeMounts = append $enabledVolumeMounts $volumeMount -}}
{{- end -}}
{{- end -}}

View file

@ -16,7 +16,7 @@ Returns the value for containers
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
{{- /* Perform validations on the Container before rendering */ -}}
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "object" $containerObject) -}}
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "controllerObject" $controllerObject "containerObject" $containerObject) -}}
{{- /* Generate the Container spec */ -}}
{{- $renderedContainer := include "bjw-s.common.lib.container.spec" (dict "rootContext" $rootContext "controllerObject" $controllerObject "containerObject" $containerObject) | fromYaml -}}

View file

@ -22,10 +22,10 @@ Returns the value for initContainers
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
{{- /* Perform validations on the Container before rendering */ -}}
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "object" $containerObject) -}}
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "controllerObject" $controllerObject "containerObject" $containerObject) -}}
{{- /* Generate the Container spec */ -}}
{{- $renderedContainer := include "bjw-s.common.lib.container.spec" (dict "rootContext" $rootContext "containerObject" $containerObject) | fromYaml -}}
{{- $renderedContainer := include "bjw-s.common.lib.container.spec" (dict "rootContext" $rootContext "controllerObject" $controllerObject "containerObject" $containerObject) | fromYaml -}}
{{- $containerOrder := (dig "order" 99 $containerValues) -}}
{{- $_ := set $orderedContainers (printf "%v-%s" $containerOrder $key) $renderedContainer -}}