`dnsConfig` was a top-level value although it exclusively configures the pod spec of the Gitea Deployment. With `affinity` and `env` already moved into the `deployment` dict, keeping `dnsConfig` at the root level leaves the Deployment configuration split across two places and makes it harder to see which values end up in the rendered pod spec. Moving it into the `deployment` dict continues the consolidation of Deployment-scoped values and keeps the values structure predictable for the remaining pod-level settings. A deprecation check is added so that existing installations fail fast with an actionable error message. Without it, a custom DNS configuration would be dropped silently, which typically surfaces much later as unexplained name resolution failures inside the Gitea pod. BREAKING CHANGE: `dnsConfig` no longer exists. Use `deployment.dnsConfig` instead. Installations that still set `dnsConfig` will fail unless `checkDeprecation` is set to `false`. Co-authored-by: Copilot <copilot@github.com>
221 lines
6.6 KiB
YAML
221 lines
6.6 KiB
YAML
suite: deployment template (basic)
|
|
release:
|
|
name: gitea-unittests
|
|
namespace: testing
|
|
templates:
|
|
- templates/gitea/deployment.yaml
|
|
- templates/gitea/secret_admin.yaml
|
|
- templates/gitea/secret_config.yaml
|
|
- templates/gitea/secret_gpg.yaml
|
|
- templates/gitea/secret_init.yaml
|
|
- templates/gitea/secret_inlineConfig.yaml
|
|
- templates/gitea/secret_metrics.yaml
|
|
tests:
|
|
- it: renders a deployment
|
|
template: templates/gitea/deployment.yaml
|
|
asserts:
|
|
- hasDocuments:
|
|
count: 1
|
|
- containsDocument:
|
|
kind: Deployment
|
|
apiVersion: apps/v1
|
|
name: gitea-unittests
|
|
- it: renders no deployment when disabled
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
deployment.enabled: false
|
|
asserts:
|
|
- hasDocuments:
|
|
count: 0
|
|
- it: deployment labels are set
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
deployment.labels:
|
|
hello: world
|
|
asserts:
|
|
- isSubset:
|
|
path: metadata.labels
|
|
content:
|
|
hello: world
|
|
- isSubset:
|
|
path: spec.template.metadata.labels
|
|
content:
|
|
hello: world
|
|
- isNotSubset:
|
|
path: spec.selector.matchLabels
|
|
content:
|
|
hello: world
|
|
- it: deployment labels are not in selector matchLabels
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
deployment.labels:
|
|
custom-label: custom-value
|
|
another-label: another-value
|
|
asserts:
|
|
- equal:
|
|
path: spec.selector.matchLabels
|
|
value:
|
|
app.kubernetes.io/name: gitea
|
|
app.kubernetes.io/instance: gitea-unittests
|
|
- it: nodeSelector is undefined
|
|
asserts:
|
|
- notExists:
|
|
path: spec.template.spec.nodeSelector
|
|
template: templates/gitea/deployment.yaml
|
|
- it: nodeSelector is defined
|
|
set:
|
|
nodeSelector:
|
|
foo: bar
|
|
bar: foo
|
|
asserts:
|
|
- isSubset:
|
|
path: spec.template.spec.nodeSelector
|
|
content:
|
|
foo: bar
|
|
bar: foo
|
|
template: templates/gitea/deployment.yaml
|
|
- it: affinity is undefined
|
|
template: templates/gitea/deployment.yaml
|
|
asserts:
|
|
- notExists:
|
|
path: spec.template.spec.affinity
|
|
- it: affinity is defined
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
deployment.affinity:
|
|
nodeAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
nodeSelectorTerms:
|
|
- matchExpressions:
|
|
- key: kubernetes.io/os
|
|
operator: In
|
|
values:
|
|
- linux
|
|
asserts:
|
|
- equal:
|
|
path: spec.template.spec.affinity
|
|
value:
|
|
nodeAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
nodeSelectorTerms:
|
|
- matchExpressions:
|
|
- key: kubernetes.io/os
|
|
operator: In
|
|
values:
|
|
- linux
|
|
- it: dnsConfig is undefined
|
|
template: templates/gitea/deployment.yaml
|
|
asserts:
|
|
- notExists:
|
|
path: spec.template.spec.dnsConfig
|
|
- it: dnsConfig is defined
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
deployment.dnsConfig:
|
|
nameservers:
|
|
- 192.0.2.1
|
|
options:
|
|
- name: ndots
|
|
value: "2"
|
|
asserts:
|
|
- equal:
|
|
path: spec.template.spec.dnsConfig
|
|
value:
|
|
nameservers:
|
|
- 192.0.2.1
|
|
options:
|
|
- name: ndots
|
|
value: "2"
|
|
|
|
- it: "injects TMP_EXISTING_ENVS_FILE as environment variable to 'init-app-ini' init container"
|
|
template: templates/gitea/deployment.yaml
|
|
asserts:
|
|
- contains:
|
|
path: spec.template.spec.initContainers[1].env
|
|
content:
|
|
name: TMP_EXISTING_ENVS_FILE
|
|
value: /tmp/existing-envs
|
|
- it: "injects ENV_TO_INI_MOUNT_POINT as environment variable to 'init-app-ini' init container"
|
|
template: templates/gitea/deployment.yaml
|
|
asserts:
|
|
- contains:
|
|
path: spec.template.spec.initContainers[1].env
|
|
content:
|
|
name: ENV_TO_INI_MOUNT_POINT
|
|
value: /env-to-ini-mounts
|
|
- it: "deployment.gitea.env is injected into all init containers and the gitea container"
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
deployment.gitea.env:
|
|
- name: VARIABLE
|
|
value: my-value
|
|
asserts:
|
|
- contains:
|
|
path: spec.template.spec.initContainers[0].env
|
|
content:
|
|
name: VARIABLE
|
|
value: my-value
|
|
- contains:
|
|
path: spec.template.spec.initContainers[1].env
|
|
content:
|
|
name: VARIABLE
|
|
value: my-value
|
|
- contains:
|
|
path: spec.template.spec.initContainers[2].env
|
|
content:
|
|
name: VARIABLE
|
|
value: my-value
|
|
- contains:
|
|
path: spec.template.spec.containers[0].env
|
|
content:
|
|
name: VARIABLE
|
|
value: my-value
|
|
- it: CPU resources are defined as well as GOMAXPROCS
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
resources:
|
|
limits:
|
|
cpu: 200ms
|
|
memory: 200Mi
|
|
requests:
|
|
cpu: 100ms
|
|
memory: 100Mi
|
|
asserts:
|
|
- contains:
|
|
path: spec.template.spec.containers[0].env
|
|
content:
|
|
name: GOMAXPROCS
|
|
valueFrom:
|
|
resourceFieldRef:
|
|
divisor: "1"
|
|
resource: limits.cpu
|
|
- equal:
|
|
path: spec.template.spec.containers[0].resources
|
|
value:
|
|
limits:
|
|
cpu: 200ms
|
|
memory: 200Mi
|
|
requests:
|
|
cpu: 100ms
|
|
memory: 100Mi
|
|
- it: Init containers have correct volumeMount path
|
|
template: templates/gitea/deployment.yaml
|
|
set:
|
|
initContainersScriptsVolumeMountPath: "/custom/init/path"
|
|
asserts:
|
|
- equal:
|
|
path: spec.template.spec.initContainers[*].volumeMounts[?(@.name=="init")].mountPath
|
|
value: "/custom/init/path"
|
|
- equal:
|
|
path: spec.template.spec.initContainers[*].volumeMounts[?(@.name=="config")].mountPath
|
|
value: "/custom/init/path"
|
|
- it: Init containers have correct volumeMount path if there is no override
|
|
template: templates/gitea/deployment.yaml
|
|
asserts:
|
|
- equal:
|
|
path: spec.template.spec.initContainers[*].volumeMounts[?(@.name=="init")].mountPath
|
|
value: "/usr/sbinx"
|
|
- equal:
|
|
path: spec.template.spec.initContainers[*].volumeMounts[?(@.name=="config")].mountPath
|
|
value: "/usr/sbinx"
|