mirror of
https://github.com/bjw-s-labs/helm-charts.git
synced 2025-07-03 16:37:04 +02:00
feat(common): Release 2.0.0-beta.2 (#176)
This commit is contained in:
parent
ed407c00df
commit
9928235b84
80 changed files with 1306 additions and 161 deletions
10
.github/workflows/charts-test.yaml
vendored
10
.github/workflows/charts-test.yaml
vendored
|
@ -30,7 +30,15 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
chart: ${{ fromJSON(inputs.chartsToTest) }}
|
chart: ${{ fromJSON(inputs.chartsToTest) }}
|
||||||
k8s_version:
|
k8s_version:
|
||||||
["v1.22.17", "v1.23.17", "v1.24.13", "v1.25.9", "v1.26.4", "v1.27.1"]
|
[
|
||||||
|
"v1.22.17",
|
||||||
|
"v1.23.17",
|
||||||
|
"v1.24.17",
|
||||||
|
"v1.25.13",
|
||||||
|
"v1.26.8",
|
||||||
|
"v1.27.5",
|
||||||
|
"v1.28.1",
|
||||||
|
]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
|
|
@ -2,6 +2,7 @@ controllers:
|
||||||
main:
|
main:
|
||||||
containers:
|
containers:
|
||||||
main:
|
main:
|
||||||
|
order: 1
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/mendhak/http-https-echo
|
repository: ghcr.io/mendhak/http-https-echo
|
||||||
tag: 30
|
tag: 30
|
||||||
|
@ -19,7 +20,7 @@ controllers:
|
||||||
startup:
|
startup:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
second-container:
|
a-container:
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/mendhak/http-https-echo
|
repository: ghcr.io/mendhak/http-https-echo
|
||||||
tag: 30
|
tag: 30
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: configmap metadata
|
suite: configmap metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -14,7 +16,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: ConfigMap
|
of: ConfigMap
|
||||||
- documentIndex: *ConfigmapDocument
|
- documentIndex: *ConfigmapDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *ConfigmapDocument
|
- documentIndex: *ConfigmapDocument
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: configMap names
|
suite: configMap names
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -48,13 +50,13 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: ConfigMap
|
of: ConfigMap
|
||||||
- documentIndex: *FirstConfigmapDocument
|
- documentIndex: *FirstConfigmapDocument
|
||||||
isNotNull:
|
isNotNullOrEmpty:
|
||||||
path: metadata.name
|
path: metadata.name
|
||||||
- documentIndex: &SecondConfigmapDocument 3
|
- documentIndex: &SecondConfigmapDocument 3
|
||||||
isKind:
|
isKind:
|
||||||
of: ConfigMap
|
of: ConfigMap
|
||||||
- documentIndex: *SecondConfigmapDocument
|
- documentIndex: *SecondConfigmapDocument
|
||||||
isNotNull:
|
isNotNullOrEmpty:
|
||||||
path: metadata.name
|
path: metadata.name
|
||||||
|
|
||||||
- it: default name should pass
|
- it: default name should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: configmap Pod metadata
|
suite: configmap Pod metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container args override
|
suite: container args override
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -8,7 +10,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].args
|
path: spec.template.spec.containers[0].args
|
||||||
|
|
||||||
- it: single string should pass
|
- it: single string should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container command override
|
suite: container command override
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -8,7 +10,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].command
|
path: spec.template.spec.containers[0].command
|
||||||
|
|
||||||
- it: single string should pass
|
- it: single string should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container env values
|
suite: container env values
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -8,7 +10,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: *DeploymentDoc
|
- documentIndex: *DeploymentDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].env
|
path: spec.template.spec.containers[0].env
|
||||||
|
|
||||||
- it: KeyValue string should pass
|
- it: KeyValue string should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container envFrom values
|
suite: container envFrom values
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -8,7 +10,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: *DeploymentDoc
|
- documentIndex: *DeploymentDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].envFrom
|
path: spec.template.spec.containers[0].envFrom
|
||||||
|
|
||||||
- it: explicit envFrom should pass
|
- it: explicit envFrom should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container image tag
|
suite: container image tag
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container name
|
suite: container name
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container ports
|
suite: container ports
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -8,7 +10,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].ports
|
path: spec.template.spec.containers[0].ports
|
||||||
|
|
||||||
- it: custom port should pass
|
- it: custom port should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container probes
|
suite: container probes
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -145,13 +147,13 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].livenessProbe
|
path: spec.template.spec.containers[0].livenessProbe
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].readinessProbe
|
path: spec.template.spec.containers[0].readinessProbe
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].startupProbe
|
path: spec.template.spec.containers[0].startupProbe
|
||||||
|
|
||||||
- it: AUTO type probe should pass
|
- it: AUTO type probe should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: container volumeMounts
|
suite: container volumeMounts
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -8,7 +10,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: *DeploymentDoc
|
- documentIndex: *DeploymentDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.template.spec.containers[0].volumeMounts
|
path: spec.template.spec.containers[0].volumeMounts
|
||||||
|
|
||||||
- it: default should pass
|
- it: default should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: cronjob configuration
|
suite: cronjob configuration
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -28,7 +30,7 @@ tests:
|
||||||
path: spec.failedJobsHistoryLimit
|
path: spec.failedJobsHistoryLimit
|
||||||
value: 1
|
value: 1
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.jobTemplate.spec.ttlSecondsAfterFinished
|
path: spec.jobTemplate.spec.ttlSecondsAfterFinished
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: controller metadata cronjob
|
suite: controller metadata cronjob
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: CronJob
|
of: CronJob
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: controller metadata daemonset
|
suite: controller metadata daemonset
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: DaemonSet
|
of: DaemonSet
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: controller metadata deployment
|
suite: controller metadata deployment
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: controller metadata statefulset
|
suite: controller metadata statefulset
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: StatefulSet
|
of: StatefulSet
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *ControllerDoc
|
- documentIndex: *ControllerDoc
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: controller types
|
suite: controller types
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: ingress metadata
|
suite: ingress metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Ingress
|
of: Ingress
|
||||||
- documentIndex: *IngressDocument
|
- documentIndex: *IngressDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *IngressDocument
|
- documentIndex: *IngressDocument
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: ingress presence
|
suite: ingress presence
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: ingress service reference
|
suite: ingress service reference
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: ingress tls
|
suite: ingress tls
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Ingress
|
of: Ingress
|
||||||
- documentIndex: *IngressDocument
|
- documentIndex: *IngressDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.tls
|
path: spec.tls
|
||||||
|
|
||||||
- it: tls enabled should pass
|
- it: tls enabled should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: ingress values
|
suite: ingress values
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: nameOverride tests
|
suite: nameOverride tests
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: networkPolicy metadata
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default metadata should pass
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
notExists:
|
||||||
|
path: metadata.annotations
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: metadata.labels
|
||||||
|
value:
|
||||||
|
app.kubernetes.io/instance: RELEASE-NAME
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: RELEASE-NAME
|
||||||
|
helm.sh/chart: common-test-1.0.0
|
||||||
|
|
||||||
|
- it: custom metadata should pass
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
test_annotation: test
|
||||||
|
labels:
|
||||||
|
test_label: test
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: metadata.annotations
|
||||||
|
value:
|
||||||
|
test_annotation: test
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: metadata.labels
|
||||||
|
value:
|
||||||
|
app.kubernetes.io/instance: RELEASE-NAME
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: RELEASE-NAME
|
||||||
|
helm.sh/chart: common-test-1.0.0
|
||||||
|
test_label: test
|
||||||
|
|
||||||
|
- it: custom metadata with global metadata should pass
|
||||||
|
set:
|
||||||
|
global:
|
||||||
|
labels:
|
||||||
|
global_label: test
|
||||||
|
annotations:
|
||||||
|
global_annotation: test
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
test_annotation: test
|
||||||
|
labels:
|
||||||
|
test_label: test
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: metadata.annotations
|
||||||
|
value:
|
||||||
|
global_annotation: test
|
||||||
|
test_annotation: test
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: metadata.labels
|
||||||
|
value:
|
||||||
|
app.kubernetes.io/instance: RELEASE-NAME
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: RELEASE-NAME
|
||||||
|
global_label: test
|
||||||
|
helm.sh/chart: common-test-1.0.0
|
||||||
|
test_label: test
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: networkPolicy names
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
asserts:
|
||||||
|
- hasDocuments:
|
||||||
|
count: 3
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: metadata.name
|
||||||
|
value: RELEASE-NAME
|
||||||
|
|
||||||
|
- it: custom name suffix should pass
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
nameOverride: block-ingress
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: metadata.name
|
||||||
|
value: RELEASE-NAME-block-ingress
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: NetworkPolicy validations
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: networkpolicy requires either controller reference or podSelector
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
controller: ""
|
||||||
|
asserts:
|
||||||
|
- failedTemplate:
|
||||||
|
errorMessage: "controller reference or podSelector is required for NetworkPolicy. (NetworkPolicy main)"
|
||||||
|
|
||||||
|
- it: policyTypes is required
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
policyTypes: []
|
||||||
|
asserts:
|
||||||
|
- failedTemplate:
|
||||||
|
errorMessage: "policyTypes is required for NetworkPolicy. (NetworkPolicy main)"
|
||||||
|
|
||||||
|
- it: policyTypes values check
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
policyTypes:
|
||||||
|
- test
|
||||||
|
asserts:
|
||||||
|
- failedTemplate:
|
||||||
|
errorMessage: "Not a valid policyType for NetworkPolicy. (NetworkPolicy main, value test)"
|
|
@ -0,0 +1,95 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: NetworkPolicy values
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: main networkpolicy is disabled by default
|
||||||
|
asserts:
|
||||||
|
- hasDocuments:
|
||||||
|
count: 2
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 1
|
||||||
|
isKind:
|
||||||
|
of: Service
|
||||||
|
|
||||||
|
- it: main networkpolicy can be enabled
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
asserts:
|
||||||
|
- hasDocuments:
|
||||||
|
count: 3
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 1
|
||||||
|
isKind:
|
||||||
|
of: Service
|
||||||
|
- documentIndex: 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
|
||||||
|
- it: networkpolicy targets the correct controller
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
controller: main
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: spec.podSelector
|
||||||
|
value:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/component: main
|
||||||
|
app.kubernetes.io/instance: RELEASE-NAME
|
||||||
|
app.kubernetes.io/name: RELEASE-NAME
|
||||||
|
|
||||||
|
- it: networkpolicy targets supports custom podSelector
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
controller: main
|
||||||
|
podSelector: {}
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: spec.podSelector
|
||||||
|
value: {}
|
||||||
|
|
||||||
|
- it: networkpolicy rules are passed through
|
||||||
|
set:
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
controller: main
|
||||||
|
rules:
|
||||||
|
ingress:
|
||||||
|
- {}
|
||||||
|
egress:
|
||||||
|
- {}
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &NetworkPolicyDocument 2
|
||||||
|
isKind:
|
||||||
|
of: NetworkPolicy
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: spec.ingress
|
||||||
|
value:
|
||||||
|
- {}
|
||||||
|
- documentIndex: *NetworkPolicyDocument
|
||||||
|
equal:
|
||||||
|
path: spec.egress
|
||||||
|
value:
|
||||||
|
- {}
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: persistence claimnames
|
suite: persistence claimnames
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: persistence emptydir
|
suite: persistence emptydir
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: persistence hostpath
|
suite: persistence hostpath
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: persistence types
|
suite: persistence types
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: persistence volumeclaimtemplates
|
suite: persistence volumeclaimtemplates
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod sidecar containers
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: with default order
|
||||||
|
set:
|
||||||
|
controllers.main.containers:
|
||||||
|
additional1:
|
||||||
|
image:
|
||||||
|
repository: test
|
||||||
|
tag: test
|
||||||
|
additional2:
|
||||||
|
image:
|
||||||
|
repository: test
|
||||||
|
tag: test
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &DeploymentDocument 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: &DeploymentDocument 0
|
||||||
|
lengthEqual:
|
||||||
|
path: spec.template.spec.containers
|
||||||
|
count: 3
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.containers[0].name
|
||||||
|
value: main
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.containers[1].name
|
||||||
|
value: additional1
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.containers[2].name
|
||||||
|
value: additional2
|
||||||
|
|
||||||
|
- it: with custom order
|
||||||
|
set:
|
||||||
|
controllers.main.containers:
|
||||||
|
main:
|
||||||
|
order: 2
|
||||||
|
additional1:
|
||||||
|
order: 3
|
||||||
|
image:
|
||||||
|
repository: test
|
||||||
|
tag: test
|
||||||
|
additional2:
|
||||||
|
order: 1
|
||||||
|
image:
|
||||||
|
repository: test
|
||||||
|
tag: test
|
||||||
|
additional3:
|
||||||
|
image:
|
||||||
|
repository: test
|
||||||
|
tag: test
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &DeploymentDocument 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: &DeploymentDocument 0
|
||||||
|
lengthEqual:
|
||||||
|
path: spec.template.spec.containers
|
||||||
|
count: 4
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.containers[0].name
|
||||||
|
value: additional2
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.containers[1].name
|
||||||
|
value: main
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.containers[2].name
|
||||||
|
value: additional1
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.containers[3].name
|
||||||
|
value: additional3
|
|
@ -0,0 +1,89 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod affinity
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.affinity
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: topology.kubernetes.io/zone
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- antarctica-east1
|
||||||
|
- antarctica-west1
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.affinity
|
||||||
|
value:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: topology.kubernetes.io/zone
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- antarctica-east1
|
||||||
|
- antarctica-west1
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: topology.kubernetes.io/zone
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- antarctica-east1
|
||||||
|
- antarctica-west1
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: topology.kubernetes.io/zone
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- asia-east1
|
||||||
|
- asia-west1
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.affinity
|
||||||
|
value:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: topology.kubernetes.io/zone
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- asia-east1
|
||||||
|
- asia-west1
|
|
@ -0,0 +1,59 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod dnsConfig
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.dnsConfig
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
dnsConfig:
|
||||||
|
options:
|
||||||
|
- name: ndots
|
||||||
|
value: "1"
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.dnsConfig
|
||||||
|
value:
|
||||||
|
options:
|
||||||
|
- name: ndots
|
||||||
|
value: "1"
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
dnsConfig:
|
||||||
|
options:
|
||||||
|
- name: ndots
|
||||||
|
value: "1"
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
dnsConfig:
|
||||||
|
options:
|
||||||
|
- name: ndots
|
||||||
|
value: "5"
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.dnsConfig
|
||||||
|
value:
|
||||||
|
options:
|
||||||
|
- name: ndots
|
||||||
|
value: "5"
|
|
@ -1,4 +1,6 @@
|
||||||
suite: pod network
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod dnsPolicy
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
tests:
|
tests:
|
||||||
|
@ -7,27 +9,6 @@ tests:
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
|
||||||
equal:
|
|
||||||
path: spec.template.spec.hostNetwork
|
|
||||||
value: false
|
|
||||||
- documentIndex: 0
|
|
||||||
equal:
|
|
||||||
path: spec.template.spec.dnsPolicy
|
|
||||||
value: ClusterFirst
|
|
||||||
|
|
||||||
- it: hostNetwork disabled should pass
|
|
||||||
set:
|
|
||||||
defaultPodOptions:
|
|
||||||
hostNetwork: false
|
|
||||||
asserts:
|
|
||||||
- documentIndex: 0
|
|
||||||
isKind:
|
|
||||||
of: Deployment
|
|
||||||
- documentIndex: 0
|
|
||||||
equal:
|
|
||||||
path: spec.template.spec.hostNetwork
|
|
||||||
value: false
|
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.dnsPolicy
|
path: spec.template.spec.dnsPolicy
|
||||||
|
@ -41,10 +22,6 @@ tests:
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
isKind:
|
isKind:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
|
||||||
equal:
|
|
||||||
path: spec.template.spec.hostNetwork
|
|
||||||
value: true
|
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.dnsPolicy
|
path: spec.template.spec.dnsPolicy
|
|
@ -0,0 +1,62 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod hostAliases
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.hostAliases
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
hostAliases:
|
||||||
|
- ip: "192.168.1.100"
|
||||||
|
hostnames:
|
||||||
|
- "example.com"
|
||||||
|
- "www.example.com"
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.hostAliases
|
||||||
|
value:
|
||||||
|
- ip: "192.168.1.100"
|
||||||
|
hostnames:
|
||||||
|
- "example.com"
|
||||||
|
- "www.example.com"
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
hostAliases:
|
||||||
|
- ip: "192.168.1.100"
|
||||||
|
hostnames:
|
||||||
|
- "example.com"
|
||||||
|
- "www.example.com"
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
hostAliases:
|
||||||
|
- ip: "127.0.0.1"
|
||||||
|
hostnames:
|
||||||
|
- "localhost"
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.hostAliases
|
||||||
|
value:
|
||||||
|
- ip: "127.0.0.1"
|
||||||
|
hostnames:
|
||||||
|
- "localhost"
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pod security
|
suite: pod security
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
|
@ -0,0 +1,41 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod hostNetwork
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.hostNetwork
|
||||||
|
value: false
|
||||||
|
|
||||||
|
- it: hostNetwork disabled should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
hostNetwork: false
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.hostNetwork
|
||||||
|
value: false
|
||||||
|
|
||||||
|
- it: hostNetwork enabled should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
hostNetwork: true
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.hostNetwork
|
||||||
|
value: true
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pod security
|
suite: pod security
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
|
@ -0,0 +1,49 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod imagePullSecrets
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.imagePullSecrets
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: my-pull-secret
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.imagePullSecrets
|
||||||
|
value:
|
||||||
|
- name: my-pull-secret
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: my-pull-secret
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: my-other-secret
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.imagePullSecrets
|
||||||
|
value:
|
||||||
|
- name: my-other-secret
|
|
@ -0,0 +1,49 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod nodeSelector
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.nodeSelector
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
nodeSelector:
|
||||||
|
disktype: ssd
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.nodeSelector
|
||||||
|
value:
|
||||||
|
disktype: ssd
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
nodeSelector:
|
||||||
|
disktype: ssd
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
nodeSelector:
|
||||||
|
disktype: hdd
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.nodeSelector
|
||||||
|
value:
|
||||||
|
disktype: hdd
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pod replicas
|
suite: pod replicas
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod securityContext
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.securityContext
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 1000
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.securityContext
|
||||||
|
value:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 1000
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 1000
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 568
|
||||||
|
runAsGroup: 568
|
||||||
|
fsGroup: 568
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.securityContext
|
||||||
|
value:
|
||||||
|
runAsUser: 568
|
||||||
|
runAsGroup: 568
|
||||||
|
fsGroup: 568
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod tolerations
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.tolerations
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
tolerations:
|
||||||
|
- key: "key1"
|
||||||
|
operator: "Equal"
|
||||||
|
value: "value1"
|
||||||
|
effect: "NoSchedule"
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.tolerations
|
||||||
|
value:
|
||||||
|
- key: "key1"
|
||||||
|
operator: "Equal"
|
||||||
|
value: "value1"
|
||||||
|
effect: "NoSchedule"
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
tolerations:
|
||||||
|
- key: "key1"
|
||||||
|
operator: "Equal"
|
||||||
|
value: "value1"
|
||||||
|
effect: "NoSchedule"
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
tolerations:
|
||||||
|
- key: "master"
|
||||||
|
operator: "Equal"
|
||||||
|
value: "value1"
|
||||||
|
effect: "NoSchedule"
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.tolerations
|
||||||
|
value:
|
||||||
|
- key: "master"
|
||||||
|
operator: "Equal"
|
||||||
|
value: "value1"
|
||||||
|
effect: "NoSchedule"
|
|
@ -0,0 +1,74 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
|
suite: pod topologySpreadConstraints
|
||||||
|
templates:
|
||||||
|
- common.yaml
|
||||||
|
tests:
|
||||||
|
- it: default should pass
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.topologySpreadConstraints
|
||||||
|
|
||||||
|
- it: defaultPodOption should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: foo
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.topologySpreadConstraints
|
||||||
|
value:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: foo
|
||||||
|
|
||||||
|
- it: defaultPodOption with pod override should pass
|
||||||
|
set:
|
||||||
|
defaultPodOptions:
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 1
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: foo
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
pod:
|
||||||
|
topologySpreadConstraints:
|
||||||
|
- maxSkew: 2
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: foo
|
||||||
|
asserts:
|
||||||
|
- documentIndex: 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: 0
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.topologySpreadConstraints
|
||||||
|
value:
|
||||||
|
- maxSkew: 2
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
whenUnsatisfiable: DoNotSchedule
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: foo
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pod initContainers
|
suite: pod initContainers
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -41,3 +43,46 @@ tests:
|
||||||
value:
|
value:
|
||||||
name: template
|
name: template
|
||||||
value: RELEASE-NAME-admin
|
value: RELEASE-NAME-admin
|
||||||
|
|
||||||
|
- it: disabled should pass
|
||||||
|
set:
|
||||||
|
controllers.main.initContainers:
|
||||||
|
init1:
|
||||||
|
enabled: false
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/mendhak/http-https-echo
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &DeploymentDocument 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
notExists:
|
||||||
|
path: spec.template.spec.initContainers
|
||||||
|
|
||||||
|
- it: custom order should pass
|
||||||
|
set:
|
||||||
|
controllers.main.initContainers:
|
||||||
|
init1:
|
||||||
|
order: 2
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/mendhak/http-https-echo
|
||||||
|
init2:
|
||||||
|
order: 1
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/mendhak/http-https-echo
|
||||||
|
asserts:
|
||||||
|
- documentIndex: &DeploymentDocument 0
|
||||||
|
isKind:
|
||||||
|
of: Deployment
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
lengthEqual:
|
||||||
|
path: spec.template.spec.initContainers
|
||||||
|
count: 2
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.initContainers[0].name
|
||||||
|
value: init2
|
||||||
|
- documentIndex: *DeploymentDocument
|
||||||
|
equal:
|
||||||
|
path: spec.template.spec.initContainers[1].name
|
||||||
|
value: init1
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pod sidecar containers
|
suite: pod sidecar containers
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -16,7 +18,7 @@ tests:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[0].name
|
path: spec.template.spec.containers[1].name
|
||||||
value: template-test
|
value: template-test
|
||||||
|
|
||||||
- it: with implicit name should pass
|
- it: with implicit name should pass
|
||||||
|
@ -32,7 +34,7 @@ tests:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[0].name
|
path: spec.template.spec.containers[1].name
|
||||||
value: additional1
|
value: additional1
|
||||||
|
|
||||||
- it: with templated name should pass
|
- it: with templated name should pass
|
||||||
|
@ -49,7 +51,7 @@ tests:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: 0
|
- documentIndex: 0
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[0].name
|
path: spec.template.spec.containers[1].name
|
||||||
value: RELEASE-NAME-container
|
value: RELEASE-NAME-container
|
||||||
|
|
||||||
- it: with custom env vars dict should pass
|
- it: with custom env vars dict should pass
|
||||||
|
@ -73,31 +75,31 @@ tests:
|
||||||
of: Deployment
|
of: Deployment
|
||||||
- documentIndex: *DeploymentDocument
|
- documentIndex: *DeploymentDocument
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[1].env[0]
|
path: spec.template.spec.containers[0].env[0]
|
||||||
value:
|
value:
|
||||||
name: main_env
|
name: main_env
|
||||||
value: "value"
|
value: "value"
|
||||||
- documentIndex: *DeploymentDocument
|
- documentIndex: *DeploymentDocument
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[0].env[0]
|
path: spec.template.spec.containers[1].env[0]
|
||||||
value:
|
value:
|
||||||
name: float
|
name: float
|
||||||
value: "1.5"
|
value: "1.5"
|
||||||
- documentIndex: *DeploymentDocument
|
- documentIndex: *DeploymentDocument
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[0].env[1]
|
path: spec.template.spec.containers[1].env[1]
|
||||||
value:
|
value:
|
||||||
name: int
|
name: int
|
||||||
value: "1"
|
value: "1"
|
||||||
- documentIndex: *DeploymentDocument
|
- documentIndex: *DeploymentDocument
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[0].env[2]
|
path: spec.template.spec.containers[1].env[2]
|
||||||
value:
|
value:
|
||||||
name: string
|
name: string
|
||||||
value: value_of_env
|
value: value_of_env
|
||||||
- documentIndex: *DeploymentDocument
|
- documentIndex: *DeploymentDocument
|
||||||
equal:
|
equal:
|
||||||
path: spec.template.spec.containers[0].env[3]
|
path: spec.template.spec.containers[1].env[3]
|
||||||
value:
|
value:
|
||||||
name: template
|
name: template
|
||||||
value: RELEASE-NAME-admin
|
value: RELEASE-NAME-admin
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pvc metadata
|
suite: pvc metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: PersistentVolumeClaim
|
of: PersistentVolumeClaim
|
||||||
- documentIndex: *PersistentVolumeClaimDocument
|
- documentIndex: *PersistentVolumeClaimDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *PersistentVolumeClaimDocument
|
- documentIndex: *PersistentVolumeClaimDocument
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pvc names
|
suite: pvc names
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: pvc storageclass
|
suite: pvc storageclass
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -10,7 +12,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: PersistentVolumeClaim
|
of: PersistentVolumeClaim
|
||||||
- documentIndex: *PersistentVolumeClaimDocument
|
- documentIndex: *PersistentVolumeClaimDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.storageClassName
|
path: spec.storageClassName
|
||||||
|
|
||||||
- it: custom should pass
|
- it: custom should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: route metadata
|
suite: route metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -14,7 +16,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: HTTPRoute
|
of: HTTPRoute
|
||||||
- documentIndex: *routeDocument
|
- documentIndex: *routeDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *routeDocument
|
- documentIndex: *routeDocument
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: route presence
|
suite: route presence
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: ingress service reference
|
suite: ingress service reference
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: route values
|
suite: route values
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -118,7 +120,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: GRPCRoute
|
of: GRPCRoute
|
||||||
- documentIndex: &HTTPRouteDocument 2
|
- documentIndex: &HTTPRouteDocument 2
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.rules[0].matches
|
path: spec.rules[0].matches
|
||||||
- documentIndex: &HTTPRouteDocument 3
|
- documentIndex: &HTTPRouteDocument 3
|
||||||
isKind:
|
isKind:
|
||||||
|
@ -134,19 +136,19 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: TCPRoute
|
of: TCPRoute
|
||||||
- documentIndex: &HTTPRouteDocument 4
|
- documentIndex: &HTTPRouteDocument 4
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.rules[0].matches
|
path: spec.rules[0].matches
|
||||||
- documentIndex: &HTTPRouteDocument 5
|
- documentIndex: &HTTPRouteDocument 5
|
||||||
isKind:
|
isKind:
|
||||||
of: TLSRoute
|
of: TLSRoute
|
||||||
- documentIndex: &HTTPRouteDocument 5
|
- documentIndex: &HTTPRouteDocument 5
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.rules[0].matches
|
path: spec.rules[0].matches
|
||||||
- documentIndex: &HTTPRouteDocument 6
|
- documentIndex: &HTTPRouteDocument 6
|
||||||
isKind:
|
isKind:
|
||||||
of: UDPRoute
|
of: UDPRoute
|
||||||
- documentIndex: &HTTPRouteDocument 6
|
- documentIndex: &HTTPRouteDocument 6
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.rules[0].matches
|
path: spec.rules[0].matches
|
||||||
|
|
||||||
- it: hostnames shouldn't be used for TCPRoutes and UDPRoutes
|
- it: hostnames shouldn't be used for TCPRoutes and UDPRoutes
|
||||||
|
@ -173,13 +175,13 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: TCPRoute
|
of: TCPRoute
|
||||||
- documentIndex: &HTTPRouteDocument 2
|
- documentIndex: &HTTPRouteDocument 2
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.hostnames
|
path: spec.hostnames
|
||||||
- documentIndex: &HTTPRouteDocument 3
|
- documentIndex: &HTTPRouteDocument 3
|
||||||
isKind:
|
isKind:
|
||||||
of: UDPRoute
|
of: UDPRoute
|
||||||
- documentIndex: &HTTPRouteDocument 3
|
- documentIndex: &HTTPRouteDocument 3
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.hostnames
|
path: spec.hostnames
|
||||||
|
|
||||||
- it: sectionName in parentRefs should be optional
|
- it: sectionName in parentRefs should be optional
|
||||||
|
@ -201,7 +203,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: HTTPRoute
|
of: HTTPRoute
|
||||||
- documentIndex: &HTTPRouteDocument 2
|
- documentIndex: &HTTPRouteDocument 2
|
||||||
isNull:
|
notExists:
|
||||||
path: spec.parentRefs[0].sectionName
|
path: spec.parentRefs[0].sectionName
|
||||||
- documentIndex: &HTTPRouteDocument 3
|
- documentIndex: &HTTPRouteDocument 3
|
||||||
isKind:
|
isKind:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: secret metadata
|
suite: secret metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -14,7 +16,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Secret
|
of: Secret
|
||||||
- documentIndex: *SecretDocument
|
- documentIndex: *SecretDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *SecretDocument
|
- documentIndex: *SecretDocument
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: secret names
|
suite: secret names
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -48,13 +50,13 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Secret
|
of: Secret
|
||||||
- documentIndex: *FirstSecretDocument
|
- documentIndex: *FirstSecretDocument
|
||||||
isNotNull:
|
isNotNullOrEmpty:
|
||||||
path: metadata.name
|
path: metadata.name
|
||||||
- documentIndex: &SecondSecretDocument 3
|
- documentIndex: &SecondSecretDocument 3
|
||||||
isKind:
|
isKind:
|
||||||
of: Secret
|
of: Secret
|
||||||
- documentIndex: *SecondSecretDocument
|
- documentIndex: *SecondSecretDocument
|
||||||
isNotNull:
|
isNotNullOrEmpty:
|
||||||
path: metadata.name
|
path: metadata.name
|
||||||
|
|
||||||
- it: default name should pass
|
- it: default name should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: secret Pod metadata
|
suite: secret Pod metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: service metadata
|
suite: service metadata
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -8,7 +10,7 @@ tests:
|
||||||
isKind:
|
isKind:
|
||||||
of: Service
|
of: Service
|
||||||
- documentIndex: *ServiceDocument
|
- documentIndex: *ServiceDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
- documentIndex: *ServiceDocument
|
- documentIndex: *ServiceDocument
|
||||||
equal:
|
equal:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: service names
|
suite: service names
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: service protocols
|
suite: service protocols
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
@ -50,7 +52,7 @@ tests:
|
||||||
path: spec.ports[0].protocol
|
path: spec.ports[0].protocol
|
||||||
value: TCP
|
value: TCP
|
||||||
- documentIndex: *ServiceDocument
|
- documentIndex: *ServiceDocument
|
||||||
isNull:
|
notExists:
|
||||||
path: metadata.annotations
|
path: metadata.annotations
|
||||||
|
|
||||||
- it: explicit HTTPS should pass
|
- it: explicit HTTPS should pass
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: service ports
|
suite: service ports
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: serviceAccount values
|
suite: serviceAccount values
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
---
|
||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
||||||
suite: serviceMonitor values
|
suite: serviceMonitor values
|
||||||
templates:
|
templates:
|
||||||
- common.yaml
|
- common.yaml
|
||||||
|
|
|
@ -3,7 +3,7 @@ apiVersion: v2
|
||||||
name: common
|
name: common
|
||||||
description: Function library for Helm charts
|
description: Function library for Helm charts
|
||||||
type: library
|
type: library
|
||||||
version: 2.0.0-beta.1
|
version: 2.0.0-beta.2
|
||||||
kubeVersion: ">=1.22.0-0"
|
kubeVersion: ">=1.22.0-0"
|
||||||
keywords:
|
keywords:
|
||||||
- common
|
- common
|
||||||
|
@ -17,3 +17,10 @@ annotations:
|
||||||
artifacthub.io/changes: |-
|
artifacthub.io/changes: |-
|
||||||
- kind: changed
|
- kind: changed
|
||||||
description: Many things :P
|
description: Many things :P
|
||||||
|
- kind: removed
|
||||||
|
description: |-
|
||||||
|
**BREAKING CHANGE** Removed support for add-ons. These can be configured through other means nowadays.
|
||||||
|
- kind: added
|
||||||
|
description: Added support for ordering (init)Containers within a controller.
|
||||||
|
- kind: added
|
||||||
|
description: Added support for creating Network Policies.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# common
|
# common
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|
||||||
Function library for Helm charts
|
Function library for Helm charts
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ Include this chart as a dependency in your `Chart.yaml` e.g.
|
||||||
# Chart.yaml
|
# Chart.yaml
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: common
|
- name: common
|
||||||
version: 2.0.0
|
version: 2.0.0-beta.2
|
||||||
repository: https://bjw-s.github.io/helm-charts/
|
repository: https://bjw-s.github.io/helm-charts/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ N/A
|
||||||
| controllers.main.containers.main.image.tag | string | `nil` | image tag |
|
| controllers.main.containers.main.image.tag | string | `nil` | image tag |
|
||||||
| controllers.main.containers.main.lifecycle | object | `{}` | Configure the lifecycle for the container |
|
| controllers.main.containers.main.lifecycle | object | `{}` | Configure the lifecycle for the container |
|
||||||
| controllers.main.containers.main.nameOverride | string | `nil` | Override the container name |
|
| controllers.main.containers.main.nameOverride | string | `nil` | Override the container name |
|
||||||
|
| controllers.main.containers.main.order | int | 99 | Override the default container order Containers get sorted alphanumerically by the `<order>-<identifier>` combination. |
|
||||||
| controllers.main.containers.main.probes | object | See below | [[ref]](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) |
|
| controllers.main.containers.main.probes | object | See below | [[ref]](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) |
|
||||||
| controllers.main.containers.main.probes.liveness | object | See below | Liveness probe configuration |
|
| controllers.main.containers.main.probes.liveness | object | See below | Liveness probe configuration |
|
||||||
| controllers.main.containers.main.probes.liveness.custom | bool | `false` | Set this to `true` if you wish to specify your own livenessProbe |
|
| controllers.main.containers.main.probes.liveness.custom | bool | `false` | Set this to `true` if you wish to specify your own livenessProbe |
|
||||||
|
@ -93,7 +94,7 @@ N/A
|
||||||
| controllers.main.cronjob.successfulJobsHistory | int | `1` | The number of succesful Jobs to keep |
|
| controllers.main.cronjob.successfulJobsHistory | int | `1` | The number of succesful Jobs to keep |
|
||||||
| controllers.main.cronjob.ttlSecondsAfterFinished | string | `nil` | If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. |
|
| controllers.main.cronjob.ttlSecondsAfterFinished | string | `nil` | If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. |
|
||||||
| controllers.main.enabled | bool | `true` | enable the controller. |
|
| controllers.main.enabled | bool | `true` | enable the controller. |
|
||||||
| controllers.main.initContainers | object | `{}` | Specify any initContainers here as dictionary items. Each initContainer should have its own key. The dictionary item key will determine the order. Helm templates can be used. |
|
| controllers.main.initContainers | object | `{}` | Specify any initContainers here as dictionary items. Each initContainer should have its own key initContainers get sorted alphanumerically by the `<order>-<identifier>` combination. |
|
||||||
| controllers.main.labels | object | `{}` | Set labels on the deployment/statefulset/daemonset/cronjob |
|
| controllers.main.labels | object | `{}` | Set labels on the deployment/statefulset/daemonset/cronjob |
|
||||||
| controllers.main.replicas | int | `1` | Number of desired pods. When using a HorizontalPodAutoscaler, set this to `null`. |
|
| controllers.main.replicas | int | `1` | Number of desired pods. When using a HorizontalPodAutoscaler, set this to `null`. |
|
||||||
| controllers.main.revisionHistoryLimit | int | `3` | ReplicaSet revision history limit |
|
| controllers.main.revisionHistoryLimit | int | `3` | ReplicaSet revision history limit |
|
||||||
|
|
49
charts/library/common/templates/classes/_networkpolicy.tpl
Normal file
49
charts/library/common/templates/classes/_networkpolicy.tpl
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{{/*
|
||||||
|
This template serves as a blueprint for all networkPolicy objects that are created
|
||||||
|
within the common library.
|
||||||
|
*/}}
|
||||||
|
{{- define "bjw-s.common.class.networkpolicy" -}}
|
||||||
|
{{- $rootContext := .rootContext -}}
|
||||||
|
{{- $networkPolicyObject := .object -}}
|
||||||
|
|
||||||
|
{{- $labels := merge
|
||||||
|
($networkPolicyObject.labels | default dict)
|
||||||
|
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||||
|
-}}
|
||||||
|
{{- $annotations := merge
|
||||||
|
($networkPolicyObject.annotations | default dict)
|
||||||
|
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||||
|
-}}
|
||||||
|
{{- $podSelector := dict -}}
|
||||||
|
{{- if (hasKey $networkPolicyObject "podSelector") -}}
|
||||||
|
{{- $podSelector = $networkPolicyObject.podSelector -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $podSelector = dict "matchLabels" (merge
|
||||||
|
($networkPolicyObject.extraSelectorLabels | default dict)
|
||||||
|
(dict "app.kubernetes.io/component" $networkPolicyObject.controller)
|
||||||
|
(include "bjw-s.common.lib.metadata.selectorLabels" $rootContext | fromYaml)
|
||||||
|
) -}}
|
||||||
|
{{- end -}}
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ $networkPolicyObject.name }}
|
||||||
|
{{- with $labels }}
|
||||||
|
labels: {{- toYaml . | nindent 4 -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $annotations }}
|
||||||
|
annotations: {{- toYaml . | nindent 4 -}}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
podSelector: {{- toYaml $podSelector | nindent 4 }}
|
||||||
|
{{- with $networkPolicyObject.policyTypes }}
|
||||||
|
policyTypes: {{- toYaml . | nindent 4 -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $networkPolicyObject.rules.ingress }}
|
||||||
|
ingress: {{- tpl (toYaml .) $rootContext | nindent 4 -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $networkPolicyObject.rules.egress }}
|
||||||
|
egress: {{- tpl (toYaml .) $rootContext | nindent 4 -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
|
@ -1,58 +0,0 @@
|
||||||
{{- /* TODO: Remove this file */ -}}
|
|
||||||
|
|
||||||
{{/* Volumes included by the controller */}}
|
|
||||||
{{- define "bjw-s.common.lib.container.volumeMounts" -}}
|
|
||||||
{{- range $persistenceIndex, $persistenceItem := .Values.persistence }}
|
|
||||||
{{- if $persistenceItem.enabled -}}
|
|
||||||
{{- if kindIs "slice" $persistenceItem.subPath -}}
|
|
||||||
{{- if $persistenceItem.mountPath -}}
|
|
||||||
{{- fail (printf "Cannot use persistence.mountPath with a subPath list (%s)" $persistenceIndex) }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- range $subPathIndex, $subPathItem := $persistenceItem.subPath }}
|
|
||||||
- name: {{ $persistenceIndex }}
|
|
||||||
subPath: {{ required "subPaths as a list of maps require a path field" $subPathItem.path }}
|
|
||||||
mountPath: {{ required "subPaths as a list of maps require an explicit mountPath field" $subPathItem.mountPath }}
|
|
||||||
{{- with $subPathItem.readOnly }}
|
|
||||||
readOnly: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with $subPathItem.mountPropagation }}
|
|
||||||
mountPropagation: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- else -}}
|
|
||||||
{{/* Set the default mountPath to /<name_of_the_peristence_item> */}}
|
|
||||||
{{- $mountPath := (printf "/%v" $persistenceIndex) -}}
|
|
||||||
{{- if eq "hostPath" (default "pvc" $persistenceItem.type) -}}
|
|
||||||
{{- $mountPath = $persistenceItem.hostPath -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{/* Use the specified mountPath if provided */}}
|
|
||||||
{{- with $persistenceItem.mountPath -}}
|
|
||||||
{{- $mountPath = . -}}
|
|
||||||
{{- end }}
|
|
||||||
{{- if ne $mountPath "-" }}
|
|
||||||
- name: {{ $persistenceIndex }}
|
|
||||||
mountPath: {{ $mountPath }}
|
|
||||||
{{- with $persistenceItem.subPath }}
|
|
||||||
subPath: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with $persistenceItem.readOnly }}
|
|
||||||
readOnly: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with $persistenceItem.mountPropagation }}
|
|
||||||
mountPropagation: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if eq .Values.controller.type "statefulset" }}
|
|
||||||
{{- range $index, $vct := .Values.volumeClaimTemplates }}
|
|
||||||
- mountPath: {{ $vct.mountPath }}
|
|
||||||
name: {{ $vct.name }}
|
|
||||||
{{- if $vct.subPath }}
|
|
||||||
subPath: {{ $vct.subPath }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end -}}
|
|
|
@ -15,7 +15,7 @@ Return the enabled containers for a controller.
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if $containerEnabled -}}
|
{{- if $containerEnabled -}}
|
||||||
{{- $_ := set $enabledContainers $name . -}}
|
{{- $_ := set $enabledContainers $name $container -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
{{/*
|
||||||
|
Validate networkPolicy values
|
||||||
|
*/}}
|
||||||
|
{{- define "bjw-s.common.lib.networkpolicy.validate" -}}
|
||||||
|
{{- $rootContext := .rootContext -}}
|
||||||
|
{{- $networkpolicyObject := .object -}}
|
||||||
|
|
||||||
|
{{- if and (not (hasKey $networkpolicyObject "podSelector")) (empty (get $networkpolicyObject "controller")) -}}
|
||||||
|
{{- fail (printf "controller reference or podSelector is required for NetworkPolicy. (NetworkPolicy %s)" $networkpolicyObject.identifier) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if empty (get $networkpolicyObject "policyTypes") -}}
|
||||||
|
{{- fail (printf "policyTypes is required for NetworkPolicy. (NetworkPolicy %s)" $networkpolicyObject.identifier) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $allowedpolicyTypes := list "Ingress" "Egress" -}}
|
||||||
|
{{- range $networkpolicyObject.policyTypes -}}
|
||||||
|
{{- if not (has . $allowedpolicyTypes) -}}
|
||||||
|
{{- fail (printf "Not a valid policyType for NetworkPolicy. (NetworkPolicy %s, value %s)" $networkpolicyObject.identifier .) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
||||||
|
{{/*
|
||||||
|
Convert networkPolicy values to an object
|
||||||
|
*/}}
|
||||||
|
{{- define "bjw-s.common.lib.networkpolicy.valuesToObject" -}}
|
||||||
|
{{- $rootContext := .rootContext -}}
|
||||||
|
{{- $identifier := .id -}}
|
||||||
|
{{- $objectValues := .values -}}
|
||||||
|
|
||||||
|
{{- /* Determine and inject the networkPolicy name */ -}}
|
||||||
|
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||||
|
|
||||||
|
{{- if $objectValues.nameOverride -}}
|
||||||
|
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- if ne $identifier "main" -}}
|
||||||
|
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $_ := set $objectValues "name" $objectName -}}
|
||||||
|
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||||
|
|
||||||
|
{{- /* Return the networkPolicy object */ -}}
|
||||||
|
{{- $objectValues | toYaml -}}
|
||||||
|
{{- end -}}
|
|
@ -19,7 +19,7 @@ runtimeClassName: {{ . | trim }}
|
||||||
schedulerName: {{ . | trim }}
|
schedulerName: {{ . | trim }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with ($controllerObject.pod.securityContext) }}
|
{{- with ($controllerObject.pod.securityContext) }}
|
||||||
securityContext: {{ . | trim | nindent 2 }}
|
securityContext: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with ($controllerObject.pod.hostname) }}
|
{{- with ($controllerObject.pod.hostname) }}
|
||||||
hostname: {{ . | trim }}
|
hostname: {{ . | trim }}
|
||||||
|
@ -29,13 +29,13 @@ hostNetwork: {{ $controllerObject.pod.hostNetwork }}
|
||||||
hostPID: {{ $controllerObject.pod.hostPID }}
|
hostPID: {{ $controllerObject.pod.hostPID }}
|
||||||
dnsPolicy: {{ include "bjw-s.common.lib.pod.field.dnsPolicy" (dict "ctx" $ctx) | trim }}
|
dnsPolicy: {{ include "bjw-s.common.lib.pod.field.dnsPolicy" (dict "ctx" $ctx) | trim }}
|
||||||
{{- with $controllerObject.pod.dnsConfig }}
|
{{- with $controllerObject.pod.dnsConfig }}
|
||||||
dnsConfig: {{ . | trim | nindent 2 }}
|
dnsConfig: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with $controllerObject.pod.hostAliases }}
|
{{- with $controllerObject.pod.hostAliases }}
|
||||||
hostAliases: {{ . | trim | nindent 2 }}
|
hostAliases: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with $controllerObject.pod.imagePullSecrets }}
|
{{- with $controllerObject.pod.imagePullSecrets }}
|
||||||
imagePullSecrets: {{ . | trim | nindent 2 }}
|
imagePullSecrets: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with $controllerObject.pod.terminationGracePeriodSeconds }}
|
{{- with $controllerObject.pod.terminationGracePeriodSeconds }}
|
||||||
terminationGracePeriodSeconds: {{ . | trim }}
|
terminationGracePeriodSeconds: {{ . | trim }}
|
||||||
|
@ -44,16 +44,16 @@ terminationGracePeriodSeconds: {{ . | trim }}
|
||||||
restartPolicy: {{ . | trim }}
|
restartPolicy: {{ . | trim }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with $controllerObject.pod.nodeSelector }}
|
{{- with $controllerObject.pod.nodeSelector }}
|
||||||
nodeSelector: {{ . | trim | nindent 2 }}
|
nodeSelector: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with $controllerObject.pod.affinity }}
|
{{- with $controllerObject.pod.affinity }}
|
||||||
affinity: {{ . | trim | nindent 2 }}
|
affinity: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with $controllerObject.pod.topologySpreadConstraints }}
|
{{- with $controllerObject.pod.topologySpreadConstraints }}
|
||||||
topologySpreadConstraints: {{ . | trim | nindent 2 }}
|
topologySpreadConstraints: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with $controllerObject.pod.tolerations }}
|
{{- with $controllerObject.pod.tolerations }}
|
||||||
tolerations: {{ . | trim | nindent 2 }}
|
tolerations: {{ . | toYaml | nindent 2 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- with (include "bjw-s.common.lib.pod.field.initContainers" (dict "ctx" $ctx) | trim) }}
|
{{- with (include "bjw-s.common.lib.pod.field.initContainers" (dict "ctx" $ctx) | trim) }}
|
||||||
initContainers: {{ . | nindent 2 }}
|
initContainers: {{ . | nindent 2 }}
|
||||||
|
|
|
@ -6,6 +6,7 @@ Returns the value for containers
|
||||||
{{- $controllerObject := .ctx.controllerObject -}}
|
{{- $controllerObject := .ctx.controllerObject -}}
|
||||||
|
|
||||||
{{- /* Default to empty list */ -}}
|
{{- /* Default to empty list */ -}}
|
||||||
|
{{- $orderedContainers := dict -}}
|
||||||
{{- $containers := list -}}
|
{{- $containers := list -}}
|
||||||
|
|
||||||
{{- /* Fetch configured containers for this controller */ -}}
|
{{- /* Fetch configured containers for this controller */ -}}
|
||||||
|
@ -19,7 +20,13 @@ Returns the value for containers
|
||||||
|
|
||||||
{{- /* Generate the Container spec */ -}}
|
{{- /* Generate the Container spec */ -}}
|
||||||
{{- $renderedContainer := include "bjw-s.common.lib.container.spec" (dict "rootContext" $rootContext "controllerObject" $controllerObject "containerObject" $containerObject) | fromYaml -}}
|
{{- $renderedContainer := include "bjw-s.common.lib.container.spec" (dict "rootContext" $rootContext "controllerObject" $controllerObject "containerObject" $containerObject) | fromYaml -}}
|
||||||
{{- $containers = append $containers $renderedContainer -}}
|
|
||||||
|
{{- $containerOrder := (dig "order" 99 $containerValues) -}}
|
||||||
|
{{- $_ := set $orderedContainers (printf "%v-%s" $containerOrder $key) $renderedContainer -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- range $key, $containerValues := $orderedContainers -}}
|
||||||
|
{{- $containers = append $containers $containerValues -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if not (empty $containers) -}}
|
{{- if not (empty $containers) -}}
|
||||||
|
|
|
@ -6,10 +6,18 @@ Returns the value for initContainers
|
||||||
{{- $controllerObject := .ctx.controllerObject -}}
|
{{- $controllerObject := .ctx.controllerObject -}}
|
||||||
|
|
||||||
{{- /* Default to empty list */ -}}
|
{{- /* Default to empty list */ -}}
|
||||||
|
{{- $orderedContainers := dict -}}
|
||||||
{{- $containers := list -}}
|
{{- $containers := list -}}
|
||||||
|
|
||||||
{{- /* Fetch configured containers for this controller */ -}}
|
{{- /* Fetch configured containers for this controller */ -}}
|
||||||
{{- range $key, $containerValues := $controllerObject.initContainers -}}
|
{{- range $key, $containerValues := $controllerObject.initContainers -}}
|
||||||
|
{{- /* Enable container by default, but allow override */ -}}
|
||||||
|
{{- $containerEnabled := true -}}
|
||||||
|
{{- if hasKey $containerValues "enabled" -}}
|
||||||
|
{{- $containerEnabled = $containerValues.enabled -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $containerEnabled -}}
|
||||||
{{- /* Create object from the container values */ -}}
|
{{- /* Create object from the container values */ -}}
|
||||||
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
|
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
|
||||||
|
|
||||||
|
@ -18,7 +26,14 @@ Returns the value for initContainers
|
||||||
|
|
||||||
{{- /* Generate the Container spec */ -}}
|
{{- /* 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 "containerObject" $containerObject) | fromYaml -}}
|
||||||
{{- $containers = append $containers $renderedContainer -}}
|
|
||||||
|
{{- $containerOrder := (dig "order" 99 $containerValues) -}}
|
||||||
|
{{- $_ := set $orderedContainers (printf "%v-%s" $containerOrder $key) $renderedContainer -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- range $key, $containerValues := $orderedContainers -}}
|
||||||
|
{{- $containers = append $containers $containerValues -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if not (empty $containers) -}}
|
{{- if not (empty $containers) -}}
|
||||||
|
|
|
@ -12,4 +12,5 @@ Secondary entrypoint and primary loader for the common chart
|
||||||
{{- include "bjw-s.common.render.routes" . | nindent 0 -}}
|
{{- include "bjw-s.common.render.routes" . | nindent 0 -}}
|
||||||
{{- include "bjw-s.common.render.configMaps" . | nindent 0 -}}
|
{{- include "bjw-s.common.render.configMaps" . | nindent 0 -}}
|
||||||
{{- include "bjw-s.common.render.secrets" . | nindent 0 -}}
|
{{- include "bjw-s.common.render.secrets" . | nindent 0 -}}
|
||||||
|
{{- include "bjw-s.common.render.networkpolicies" . | nindent 0 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
26
charts/library/common/templates/render/_networkpolicies.tpl
Normal file
26
charts/library/common/templates/render/_networkpolicies.tpl
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{{/*
|
||||||
|
Renders the networkPolicy objects required by the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "bjw-s.common.render.networkpolicies" -}}
|
||||||
|
{{- /* Generate named networkPolicy as required */ -}}
|
||||||
|
{{- range $key, $networkPolicy := .Values.networkpolicies }}
|
||||||
|
{{- /* Enable networkPolicy by default, but allow override */ -}}
|
||||||
|
{{- $networkPolicyEnabled := true -}}
|
||||||
|
{{- if hasKey $networkPolicy "enabled" -}}
|
||||||
|
{{- $networkPolicyEnabled = $networkPolicy.enabled -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $networkPolicyEnabled -}}
|
||||||
|
{{- $networkPolicyValues := (mustDeepCopy $networkPolicy) -}}
|
||||||
|
|
||||||
|
{{- /* Create object from the raw networkPolicy values */ -}}
|
||||||
|
{{- $networkPolicyObject := (include "bjw-s.common.lib.networkpolicy.valuesToObject" (dict "rootContext" $ "id" $key "values" $networkPolicyValues)) | fromYaml -}}
|
||||||
|
|
||||||
|
{{- /* Perform validations on the networkPolicy before rendering */ -}}
|
||||||
|
{{- include "bjw-s.common.lib.networkpolicy.validate" (dict "rootContext" $ "object" $networkPolicyObject) -}}
|
||||||
|
|
||||||
|
{{/* Include the networkPolicy class */}}
|
||||||
|
{{- include "bjw-s.common.class.networkpolicy" (dict "rootContext" $ "object" $networkPolicyObject) | nindent 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
|
@ -176,6 +176,11 @@ controllers:
|
||||||
# -- Override the container name
|
# -- Override the container name
|
||||||
nameOverride:
|
nameOverride:
|
||||||
|
|
||||||
|
# -- Override the default container order
|
||||||
|
# Containers get sorted alphanumerically by the `<order>-<identifier>` combination.
|
||||||
|
# @default -- 99
|
||||||
|
order: 1
|
||||||
|
|
||||||
image:
|
image:
|
||||||
# -- image repository
|
# -- image repository
|
||||||
repository:
|
repository:
|
||||||
|
@ -309,8 +314,8 @@ controllers:
|
||||||
terminationMessagePolicy:
|
terminationMessagePolicy:
|
||||||
|
|
||||||
# -- Specify any initContainers here as dictionary items.
|
# -- Specify any initContainers here as dictionary items.
|
||||||
# Each initContainer should have its own key. The dictionary item key will determine the order.
|
# Each initContainer should have its own key
|
||||||
# Helm templates can be used.
|
# initContainers get sorted alphanumerically by the `<order>-<identifier>` combination.
|
||||||
initContainers: {}
|
initContainers: {}
|
||||||
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
|
@ -626,3 +631,32 @@ persistence:
|
||||||
# readOnly: false
|
# readOnly: false
|
||||||
# subPath: config.yaml
|
# subPath: config.yaml
|
||||||
advancedMounts: {}
|
advancedMounts: {}
|
||||||
|
|
||||||
|
# -- Configure the networkPolicies for the chart here.
|
||||||
|
# Additional networkPolicies can be added by adding a dictionary key similar to the 'main' networkPolicy.
|
||||||
|
# @default -- See below
|
||||||
|
networkpolicies:
|
||||||
|
main:
|
||||||
|
# -- Enables or disables the networkPolicy item. Defaults to true
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# -- Configure which controller this networkPolicy should target
|
||||||
|
controller: main
|
||||||
|
|
||||||
|
# -- Define a custom podSelector for the networkPolicy. This takes precedence over targeting a controller.
|
||||||
|
# podSelector: {}
|
||||||
|
|
||||||
|
# -- The policyTypes for this networkPolicy
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
- Egress
|
||||||
|
|
||||||
|
# -- The rulesets for this networkPolicy
|
||||||
|
# [[ref]](https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource)
|
||||||
|
rules:
|
||||||
|
# -- The ingress rules for this networkPolicy. Allows all ingress traffic by default.
|
||||||
|
ingress:
|
||||||
|
- {}
|
||||||
|
# -- The egress rules for this networkPolicy. Allows all egress traffic by default.
|
||||||
|
egress:
|
||||||
|
- {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue