From 72c485dd2c1e87c1e9fc193c0983b046656420d5 Mon Sep 17 00:00:00 2001 From: Vladislav Rumjantsev <13906830+vrumjantsev@users.noreply.github.com> Date: Sat, 9 Oct 2021 03:13:21 +0300 Subject: [PATCH] ingress stable networking api (#590) * Moved ingress to stable networking api * lower versions support * ingress disabled by default * added tests for old k8s --- templates/server-ingress.yaml | 12 +++++++++++- test/unit/server-ingress.bats | 31 +++++++++++++++++++++++-------- values.yaml | 6 ++++-- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/templates/server-ingress.yaml b/templates/server-ingress.yaml index 9da020e..cc4f66d 100644 --- a/templates/server-ingress.yaml +++ b/templates/server-ingress.yaml @@ -8,7 +8,10 @@ {{- $serviceName = printf "%s-%s" $serviceName "active" -}} {{- end }} {{- $servicePort := .Values.server.service.port -}} -{{ if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} +{{- $kubeVersion := .Capabilities.KubeVersion.Version }} +{{ if semverCompare ">= 1.19.0-0" $kubeVersion }} +apiVersion: networking.k8s.io/v1 +{{ else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} apiVersion: networking.k8s.io/v1beta1 {{ else }} apiVersion: extensions/v1beta1 @@ -48,8 +51,15 @@ spec: {{- range (.paths | default (list "/")) }} - path: {{ . }} backend: + {{ if semverCompare ">= 1.19.0-0" $kubeVersion }} + service: + name: {{ $serviceName }} + port: + number: {{ $servicePort }} + {{ else }} serviceName: {{ $serviceName }} servicePort: {{ $servicePort }} + {{ end }} {{- end }} {{- end }} {{- end }} diff --git a/test/unit/server-ingress.bats b/test/unit/server-ingress.bats index 68183a5..46794a4 100755 --- a/test/unit/server-ingress.bats +++ b/test/unit/server-ingress.bats @@ -52,7 +52,7 @@ load _helpers --set 'server.ingress.hosts[0].host=test.com' \ --set 'server.ingress.hosts[0].paths[0]=/' \ . | tee /dev/stderr | - yq -r '.spec.rules[0].http.paths[0].backend.serviceName | length > 0' | tee /dev/stderr) + yq -r '.spec.rules[0].http.paths[0].backend.service.name | length > 0' | tee /dev/stderr) [ "${actual}" = "true" ] } @@ -66,9 +66,9 @@ load _helpers --set 'server.ingress.hosts[0].host=test.com' \ --set 'server.ingress.hosts[0].paths[0]=/' \ --set 'server.ingress.extraPaths[0].path=/annotation-service' \ - --set 'server.ingress.extraPaths[0].backend.serviceName=ssl-redirect' \ + --set 'server.ingress.extraPaths[0].backend.service.name=ssl-redirect' \ . | tee /dev/stderr | - yq -r '.spec.rules[0].http.paths[0].backend.serviceName' | tee /dev/stderr) + yq -r '.spec.rules[0].http.paths[0].backend.service.name' | tee /dev/stderr) [ "${actual}" = 'ssl-redirect' ] local actual=$(helm template \ @@ -77,7 +77,7 @@ load _helpers --set 'server.ingress.hosts[0].host=test.com' \ --set 'server.ingress.hosts[0].paths[0]=/' \ --set 'server.ingress.extraPaths[0].path=/annotation-service' \ - --set 'server.ingress.extraPaths[0].backend.serviceName=ssl-redirect' \ + --set 'server.ingress.extraPaths[0].backend.service.name=ssl-redirect' \ . | tee /dev/stderr | yq -r '.spec.rules[0].http.paths[0].path' | tee /dev/stderr) [ "${actual}" = '/annotation-service' ] @@ -88,7 +88,7 @@ load _helpers --set 'server.ingress.hosts[0].host=test.com' \ --set 'server.ingress.hosts[0].paths[0]=/' \ --set 'server.ingress.extraPaths[0].path=/annotation-service' \ - --set 'server.ingress.extraPaths[0].backend.serviceName=ssl-redirect' \ + --set 'server.ingress.extraPaths[0].backend.service.name=ssl-redirect' \ . | tee /dev/stderr | yq -r '.spec.rules[0].http.paths[1].path' | tee /dev/stderr) [ "${actual}" = '/' ] @@ -141,7 +141,7 @@ load _helpers --set 'server.ha.enabled=true' \ --set 'server.service.enabled=true' \ . | tee /dev/stderr | - yq -r '.spec.rules[0].http.paths[0].backend.serviceName' | tee /dev/stderr) + yq -r '.spec.rules[0].http.paths[0].backend.service.name' | tee /dev/stderr) [ "${actual}" = "RELEASE-NAME-vault-active" ] } @@ -156,7 +156,7 @@ load _helpers --set 'server.ha.enabled=true' \ --set 'server.service.enabled=true' \ . | tee /dev/stderr | - yq -r '.spec.rules[0].http.paths[0].backend.serviceName' | tee /dev/stderr) + yq -r '.spec.rules[0].http.paths[0].backend.service.name' | tee /dev/stderr) [ "${actual}" = "RELEASE-NAME-vault" ] } @@ -170,6 +170,21 @@ load _helpers --set 'server.ha.enabled=false' \ --set 'server.service.enabled=true' \ . | tee /dev/stderr | + yq -r '.spec.rules[0].http.paths[0].backend.service.name' | tee /dev/stderr) + [ "${actual}" = "RELEASE-NAME-vault" ] +} + +@test "server/ingress: k8s 1.18.3 uses regular service when not ha - yaml" { + cd `chart_dir` + + local actual=$(helm template \ + --show-only templates/server-ingress.yaml \ + --set 'server.ingress.enabled=true' \ + --set 'server.dev.enabled=false' \ + --set 'server.ha.enabled=false' \ + --set 'server.service.enabled=true' \ + --kube-version 1.18.3 \ + . | tee /dev/stderr | yq -r '.spec.rules[0].http.paths[0].backend.serviceName' | tee /dev/stderr) [ "${actual}" = "RELEASE-NAME-vault" ] } @@ -185,6 +200,6 @@ load _helpers --set 'server.ha.enabled=false' \ --set 'server.service.enabled=true' \ . | tee /dev/stderr | - yq -r '.spec.rules[0].http.paths[0].backend.serviceName' | tee /dev/stderr) + yq -r '.spec.rules[0].http.paths[0].backend.service.name' | tee /dev/stderr) [ "${actual}" = "RELEASE-NAME-vault" ] } diff --git a/values.yaml b/values.yaml index 5d894fa..32c59c4 100644 --- a/values.yaml +++ b/values.yaml @@ -281,8 +281,10 @@ server: extraPaths: [] # - path: /* # backend: - # serviceName: ssl-redirect - # servicePort: use-annotation + # service: + # name: ssl-redirect + # port: + # number: use-annotation tls: [] # - secretName: chart-example-tls # hosts: