diff --git a/templates/_clientSettingsPolicy.tpl b/templates/_clientSettingsPolicy.tpl new file mode 100644 index 0000000..fe0a5a7 --- /dev/null +++ b/templates/_clientSettingsPolicy.tpl @@ -0,0 +1,31 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* annotations */}} + +{{- define "reposilite.clientSettingsPolicy.annotations" -}} +{{ include "reposilite.annotations" . }} +{{- if .Values.gatewayAPI.nginx.clientSettingsPolicy.annotations }} +{{ toYaml .Values.gatewayAPI.nginx.clientSettingsPolicy.annotations }} +{{- end }} +{{- end }} + +{{/* enabled */}} + +{{- define "reposilite.clientSettingsPolicy.enabled" -}} +{{- if and (eq (include "reposilite.httpRoute.enabled" $) "true") + .Values.gatewayAPI.nginx.clientSettingsPolicy.enabled +-}} +true +{{- else -}} +false +{{- end -}} +{{- end }} + +{{/* labels */}} + +{{- define "reposilite.clientSettingsPolicy.labels" -}} +{{ include "reposilite.labels" . }} +{{- if .Values.gatewayAPI.nginx.clientSettingsPolicy.labels }} +{{ toYaml .Values.gatewayAPI.nginx.clientSettingsPolicy.labels }} +{{- end }} +{{- end }} diff --git a/templates/clientSettingsPolicy.yaml b/templates/clientSettingsPolicy.yaml new file mode 100644 index 0000000..c7c480d --- /dev/null +++ b/templates/clientSettingsPolicy.yaml @@ -0,0 +1,50 @@ +{{- if eq (include "reposilite.clientSettingsPolicy.enabled" $) "true" }} +apiVersion: gateway.nginx.org/v1alpha1 +kind: ClientSettingsPolicy +metadata: + {{- with (include "reposilite.clientSettingsPolicy.annotations" . | fromYaml) }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with (include "reposilite.clientSettingsPolicy.labels" . | fromYaml) }} + labels: + {{- toYaml . | nindent 4 }} + {{- end }} + name: {{ include "reposilite.fullname" . }} + namespace: {{ .Release.Namespace }} +spec: + targetRef: + group: gateway.networking.k8s.io + kind: HTTPRoute + name: {{ include "reposilite.fullname" . }} + {{- if or .Values.gatewayAPI.nginx.clientSettingsPolicy.clientMaxBodySize + .Values.gatewayAPI.nginx.clientSettingsPolicy.clientBodyTimeout + }} + body: + {{- with .Values.gatewayAPI.nginx.clientSettingsPolicy.clientMaxBodySize }} + maxSize: {{ . }} + {{- end }} + {{- with .Values.gatewayAPI.nginx.clientSettingsPolicy.clientBodyTimeout }} + timeout: {{ . }} + {{- end }} + {{- end }} + {{- if or .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveRequests + .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveTime + .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveTimeout + .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveMinTimeout + }} + keepAlive: + {{- with .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveRequests }} + requests: {{ . }} + {{- end }} + {{- with .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveTime }} + time: {{ . }} + {{- end }} + {{- with .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveTimeout }} + timeout: {{ . }} + {{- end }} + {{- with .Values.gatewayAPI.nginx.clientSettingsPolicy.keepaliveMinTimeout }} + minTimeout: {{ . }} + {{- end }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/unittests/backendTLSConfig/backendTLSConfig.yaml b/unittests/backendTLSConfig/backendTLSConfig.yaml index 254a5b7..9517a92 100644 --- a/unittests/backendTLSConfig/backendTLSConfig.yaml +++ b/unittests/backendTLSConfig/backendTLSConfig.yaml @@ -66,12 +66,6 @@ tests: set: gatewayAPI.enabled: true gatewayAPI.core.backendTLSConfig.enabled: true - # gatewayAPI.core.backendTLSConfig.validation: - # caCertificateRefs: - # - group: "" - # kind: Secret - # name: reposilite-ca - # hostname: reposilite.svc.cluster.local service.enabled: true asserts: - hasDocuments: @@ -90,6 +84,31 @@ tests: - notExists: path: spec.validation.caCertificateRefs +- it: Render with custom annotations and labels + set: + gatewayAPI.enabled: true + gatewayAPI.core.backendTLSConfig: + enabled: true + annotations: + foo: bar + labels: + bar: foo + service.enabled: true + asserts: + - equal: + path: metadata.annotations + value: + foo: bar + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: reposilite-unittest + app.kubernetes.io/name: reposilite + app.kubernetes.io/version: 0.1.0 + app.kubernetes.io/managed-by: Helm + helm.sh/chart: reposilite-0.1.0 + bar: foo + - it: Render with custom validation set: gatewayAPI.enabled: true diff --git a/unittests/clientSettingsPolicy/clientSettingsPolicy.yaml b/unittests/clientSettingsPolicy/clientSettingsPolicy.yaml new file mode 100644 index 0000000..60d6050 --- /dev/null +++ b/unittests/clientSettingsPolicy/clientSettingsPolicy.yaml @@ -0,0 +1,190 @@ +chart: + appVersion: 0.1.0 + version: 0.1.0 +suite: ClientSettingsPolicy template +release: + name: reposilite-unittest + namespace: testing +templates: +- templates/clientSettingsPolicy.yaml +tests: +- it: Skip rendering when disabled 1/8 + set: + gatewayAPI.enabled: false + gatewayAPI.core.httpRoute.enabled: false + gatewayAPI.nginx.clientSettingsPolicy.enabled: false + service.enabled: false + asserts: + - hasDocuments: + count: 0 + +- it: Skip rendering when disabled 2/8 + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: false + gatewayAPI.nginx.clientSettingsPolicy.enabled: false + service.enabled: false + asserts: + - hasDocuments: + count: 0 + +- it: Skip rendering when disabled 3/8 + set: + gatewayAPI.enabled: false + gatewayAPI.core.httpRoute.enabled: true + gatewayAPI.nginx.clientSettingsPolicy.enabled: false + service.enabled: false + asserts: + - hasDocuments: + count: 0 + +- it: Skip rendering when disabled 4/8 + set: + gatewayAPI.enabled: false + gatewayAPI.core.httpRoute.enabled: false + gatewayAPI.nginx.clientSettingsPolicy.enabled: true + service.enabled: false + asserts: + - hasDocuments: + count: 0 + +- it: Skip rendering when disabled 5/8 + set: + gatewayAPI.enabled: false + gatewayAPI.core.httpRoute.enabled: false + gatewayAPI.nginx.clientSettingsPolicy.enabled: false + service.enabled: true + asserts: + - hasDocuments: + count: 0 + +- it: Skip rendering when disabled 6/8 + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: true + gatewayAPI.nginx.clientSettingsPolicy.enabled: false + service.enabled: false + asserts: + - hasDocuments: + count: 0 + +- it: Skip rendering when disabled 7/8 + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: false + gatewayAPI.nginx.clientSettingsPolicy.enabled: true + service.enabled: false + asserts: + - hasDocuments: + count: 0 + +- it: Skip rendering when disabled 8/8 + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: false + gatewayAPI.nginx.clientSettingsPolicy.enabled: false + service.enabled: true + asserts: + - hasDocuments: + count: 0 + +- it: Render default values + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: true + gatewayAPI.nginx.clientSettingsPolicy.enabled: true + service.enabled: true + asserts: + - hasDocuments: + count: 1 + - containsDocument: + apiVersion: gateway.nginx.org/v1alpha1 + kind: ClientSettingsPolicy + name: reposilite-unittest + namespace: testing + - notExists: + path: metadata.annotations + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: reposilite-unittest + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: reposilite + app.kubernetes.io/version: 0.1.0 + helm.sh/chart: reposilite-0.1.0 + - isSubset: + path: spec.targetRef + content: + group: gateway.networking.k8s.io + kind: HTTPRoute + name: reposilite-unittest + - notExists: + path: spec.body + - notExists: + path: spec.keepAlive + +- it: Render custom annotations and labels + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: true + gatewayAPI.nginx.clientSettingsPolicy: + enabled: true + annotations: + foo: "bar" + labels: + bar: "foo" + service.enabled: true + asserts: + - equal: + path: metadata.annotations + value: + foo: "bar" + - equal: + path: metadata.labels + value: + app.kubernetes.io/instance: reposilite-unittest + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: reposilite + app.kubernetes.io/version: 0.1.0 + helm.sh/chart: reposilite-0.1.0 + bar: "foo" + +- it: Render with custom body settings + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: true + gatewayAPI.nginx.clientSettingsPolicy: + enabled: true + clientMaxBodySize: 10m + clientBodyTimeout: 30s + service.enabled: true + asserts: + - isSubset: + path: spec.body + content: + maxSize: 10m + timeout: 30s + - notExists: + path: spec.keepAlive + +- it: Render with custom keepAlive settings + set: + gatewayAPI.enabled: true + gatewayAPI.core.httpRoute.enabled: true + gatewayAPI.nginx.clientSettingsPolicy: + enabled: true + keepaliveRequests: 100 + keepaliveTime: 60s + keepaliveTimeout: 60s + keepaliveMinTimeout: 10s + service.enabled: true + asserts: + - notExists: + path: spec.body + - isSubset: + path: spec.keepAlive + content: + requests: 100 + time: 60s + timeout: 60s + minTimeout: 10s \ No newline at end of file