fix(common): Release 2.0.2 (#196)

This commit is contained in:
Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs 2023-10-05 12:25:05 +02:00 committed by GitHub
parent d86b0de790
commit f729651dbe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 260 additions and 41 deletions

View file

@ -75,9 +75,10 @@ nav:
- NFS share: common-library/storage/types/nfs-share.md
- persistentVolumeClaim: common-library/storage/types/persistentVolumeClaim.md
- Secret: common-library/storage/types/secret.md
- How To...:
- common-library/howto/index.md
- Helm templates: common-library/howto/helm-templates.md
- Multiple subPaths for 1 volume: common-library/howto/multiple-subpath.md
- App Template:
- app-template/index.md
- How To...:
- app-template/howto/index.md
- Helm templates: app-template/howto/helm-templates.md
- Multiple subPaths for 1 volume: app-template/howto/multiple-subpath.md
- Multiple services with 1 or more controllers: app-template/howto/multiple-services.md

View file

@ -6,13 +6,88 @@ templates:
tests:
- it: default should pass
asserts:
- documentIndex: &ControllerDoc 0
- documentIndex: &deploymentDoc 0
isKind:
of: Deployment
- documentIndex: *ControllerDoc
- documentIndex: *deploymentDoc
equal:
path: metadata.name
value: RELEASE-NAME
- documentIndex: *deploymentDoc
equal:
path: metadata.labels['app.kubernetes.io/component']
value: main
- it: additional controllers should pass
set:
controllers:
second:
containers:
main:
image:
repository: ghcr.io/mendhak/http-https-echo
tag: 30
asserts:
- hasDocuments:
count: 3
- documentIndex: &firstDeploymentDoc 0
isKind:
of: Deployment
- documentIndex: *firstDeploymentDoc
equal:
path: metadata.name
value: RELEASE-NAME
- documentIndex: *firstDeploymentDoc
equal:
path: metadata.labels['app.kubernetes.io/component']
value: main
- documentIndex: &secondDeploymentDoc 1
isKind:
of: Deployment
- documentIndex: *secondDeploymentDoc
equal:
path: metadata.name
value: RELEASE-NAME-second
- documentIndex: *secondDeploymentDoc
equal:
path: metadata.labels['app.kubernetes.io/component']
value: second
- it: additional controllers with nameOverride should pass
set:
controllers:
second:
nameOverride: testOverride
containers:
main:
image:
repository: ghcr.io/mendhak/http-https-echo
tag: 30
asserts:
- hasDocuments:
count: 3
- documentIndex: &firstDeploymentDoc 0
isKind:
of: Deployment
- documentIndex: *firstDeploymentDoc
equal:
path: metadata.name
value: RELEASE-NAME
- documentIndex: *firstDeploymentDoc
equal:
path: metadata.labels['app.kubernetes.io/component']
value: main
- documentIndex: &secondDeploymentDoc 1
isKind:
of: Deployment
- documentIndex: *secondDeploymentDoc
equal:
path: metadata.name
value: RELEASE-NAME-testOverride
- documentIndex: *secondDeploymentDoc
equal:
path: metadata.labels['app.kubernetes.io/component']
value: second
- it: daemonset should pass
set:

View file

@ -0,0 +1,70 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
suite: pod serviceAccount
templates:
- common.yaml
tests:
- it: default should pass
asserts:
- hasDocuments:
count: 2
- documentIndex: &deploymentDocument 0
isKind:
of: Deployment
- documentIndex: *deploymentDocument
equal:
path: spec.template.spec.serviceAccountName
value: default
- it: with create, without name should pass
set:
serviceAccount:
create: true
asserts:
- hasDocuments:
count: 4
- documentIndex: &serviceAccountDocument 0
isKind:
of: ServiceAccount
- documentIndex: &deploymentDocument 1
isKind:
of: Deployment
- documentIndex: *deploymentDocument
equal:
path: spec.template.spec.serviceAccountName
value: RELEASE-NAME
- it: with create, with name should pass
set:
serviceAccount:
create: true
name: mySA
asserts:
- hasDocuments:
count: 4
- documentIndex: &serviceAccountDocument 0
isKind:
of: ServiceAccount
- documentIndex: &deploymentDocument 1
isKind:
of: Deployment
- documentIndex: *deploymentDocument
equal:
path: spec.template.spec.serviceAccountName
value: mySA
- it: without create, with name should pass
set:
serviceAccount:
create: false
name: mySA
asserts:
- hasDocuments:
count: 2
- documentIndex: &deploymentDocument 0
isKind:
of: Deployment
- documentIndex: *deploymentDocument
equal:
path: spec.template.spec.serviceAccountName
value: mySA

View file

@ -3,7 +3,7 @@ apiVersion: v2
name: common
description: Function library for Helm charts
type: library
version: 2.0.1
version: 2.0.2
kubeVersion: ">=1.22.0-0"
keywords:
- common
@ -16,10 +16,7 @@ annotations:
artifacthub.io/changes: |-
- kind: fixed
description: |-
Mounting of volumeClaimTemplates was not implemented properly.
ServiceAccount could not be referenced without creating
- kind: fixed
description: |-
Using advancedMounts for initContainers resulted in an error.
- kind: fixed
description: |-
Validations for container images have been improved.
Controllers without a type did not default to Deployment

View file

@ -1,6 +1,6 @@
# common
![Version: 2.0.1](https://img.shields.io/badge/Version-2.0.1-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square)
![Version: 2.0.2](https://img.shields.io/badge/Version-2.0.2-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square)
Function library for Helm charts
@ -27,7 +27,7 @@ Include this chart as a dependency in your `Chart.yaml` e.g.
# Chart.yaml
dependencies:
- name: common
version: 2.0.1
version: 2.0.2
repository: https://bjw-s.github.io/helm-charts/
```

View file

@ -6,6 +6,11 @@ Convert controller values to an object
{{- $identifier := .id -}}
{{- $objectValues := .values -}}
{{- /* Default the controller type to Deployment */ -}}
{{- if eq (dig "type" "" $objectValues) "" -}}
{{- $_ := set $objectValues "type" "deployment" -}}
{{- end -}}
{{- /* Determine and inject the controller name */ -}}
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}

View file

@ -4,15 +4,8 @@ Returns the value for serviceAccountName
{{- define "bjw-s.common.lib.pod.field.serviceAccountName" -}}
{{- $rootContext := .ctx.rootContext -}}
{{- /* Default to "default" */ -}}
{{- $name := "default" -}}
{{- $serviceAccountValues := (mustDeepCopy $rootContext.Values.serviceAccount) -}}
{{- $serviceAccountObject := (include "bjw-s.common.lib.serviceAccount.valuesToObject" (dict "rootContext" $rootContext "id" "default" "values" $serviceAccountValues)) | fromYaml -}}
{{- $serviceAccountObject.name -}}
{{- /* See if an override is needed */ -}}
{{- if $rootContext.Values.serviceAccount.create -}}
{{- $serviceAccountValues := (mustDeepCopy $rootContext.Values.serviceAccount) -}}
{{- $serviceAccountObject := (include "bjw-s.common.lib.serviceAccount.valuesToObject" (dict "rootContext" $rootContext "id" "default" "values" $serviceAccountValues)) | fromYaml -}}
{{- $name = $serviceAccountObject.name -}}
{{- end -}}
{{- $name -}}
{{- end -}}

View file

@ -6,7 +6,7 @@ Validate Service values
{{- $serviceObject := .object -}}
{{- if empty (get $serviceObject "controller") -}}
{{- fail (printf "controller is required for Service. (service: %s)" $serviceObject.identifier) -}}
{{- fail (printf "controller field is required for Service. (service: %s)" $serviceObject.identifier) -}}
{{- end -}}
{{- /* Validate Service type */ -}}

View file

@ -1,5 +1,5 @@
{{/*
Convert Secret values to an object
Convert ServiceAccount values to an object
*/}}
{{- define "bjw-s.common.lib.serviceAccount.valuesToObject" -}}
{{- $rootContext := .rootContext -}}
@ -7,12 +7,15 @@ Convert Secret values to an object
{{- $objectValues := .values -}}
{{- /* Determine and inject the serviceAccount name */ -}}
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
{{- if $objectValues.name -}}
{{- $objectName = $objectValues.name -}}
{{- $serviceAccountName := "" -}}
{{- $defaultServiceAccountName := "default" -}}
{{- if $objectValues.create -}}
{{- $defaultServiceAccountName = (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
{{- end -}}
{{- $_ := set $objectValues "name" $objectName -}}
{{- $serviceAccountName = default $defaultServiceAccountName $objectValues.name -}}
{{- $_ := set $objectValues "name" $serviceAccountName -}}
{{- $_ := set $objectValues "identifier" $identifier -}}
{{- /* Return the serviceAccount object */ -}}

View file

@ -2,7 +2,7 @@
apiVersion: v2
description: A common powered chart template. This can be useful for small projects that don't have their own chart.
name: app-template
version: 2.0.1
version: 2.0.2
kubeVersion: ">=1.22.0-0"
maintainers:
- name: bjw-s
@ -10,12 +10,12 @@ maintainers:
dependencies:
- name: common
repository: https://bjw-s.github.io/helm-charts
version: 2.0.1
version: 2.0.2
annotations:
artifacthub.io/changes: |-
- kind: changed
description: |
Updated library version to 2.0.1.
Updated library version to 2.0.2.
links:
- name: Upgrade instructions from v1.x
url: https://github.com/bjw-s/helm-charts/tree/main/charts/other/app-template#from-1xx-to-20x

View file

@ -1,6 +1,6 @@
# app-template
![Version: 2.0.1](https://img.shields.io/badge/Version-2.0.1-informational?style=flat-square)
![Version: 2.0.2](https://img.shields.io/badge/Version-2.0.2-informational?style=flat-square)
A common powered chart template. This can be useful for small projects that don't have their own chart.
@ -12,7 +12,7 @@ Kubernetes: `>=1.22.0-0`
| Repository | Name | Version |
|------------|------|---------|
| https://bjw-s.github.io/helm-charts | common | 2.0.1 |
| https://bjw-s.github.io/helm-charts | common | 2.0.2 |
## Installing the Chart

View file

@ -0,0 +1,80 @@
# Multiple Services
## With a single controller
It is possible to have multiple Service objects that point to a single controller.
### Example
```yaml
controllers:
main:
containers:
main:
image:
repository: ghcr.io/mendhak/http-https-echo
tag: 30
pullPolicy: IfNotPresent
service:
main:
# The controller for this service is set to
# "main" by the default app-template values
# controller: main
ports:
http:
port: 8080
second:
controller: main # (1)!
ports:
http:
port: 8081
```
1. Point to the controller with the "main" identifier
## With multiple controllers
It is also possible have multiple Service objects that point to different controllers.
### Example
```yaml
controllers:
main:
containers:
main:
image:
repository: ghcr.io/mendhak/http-https-echo
tag: 30
pullPolicy: IfNotPresent
second:
containers:
main:
image:
repository: ghcr.io/mendhak/http-https-echo
tag: 30
pullPolicy: IfNotPresent
service:
main:
# The controller for this service is set to
# "main" by the default app-template values
# controller: main
ports:
http:
port: 8080
second:
controller: main # (1)!
ports:
http:
port: 8081
third:
controller: second # (2)!
ports:
http:
port: 8081
```
1. Point to the controller with the "main" identifier
2. Point to the controller with the "second" identifier

View file

@ -1,8 +1,3 @@
---
hide:
- navigation
---
# App Template
## Background