diff --git a/.github/workflows/pr-chart-lint-and-test.yml b/.github/workflows/pr-chart-lint-and-test.yml index 797d372..9a89d05 100644 --- a/.github/workflows/pr-chart-lint-and-test.yml +++ b/.github/workflows/pr-chart-lint-and-test.yml @@ -47,16 +47,20 @@ jobs: strategy: matrix: include: + - name: k8s-1.29 + kindest_image: kindest/node:v1.29.0 + - name: k8s-1.28 + kindest_image: kindest/node:v1.28.0 - name: k8s-1.27 - kindest_image: kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72 + kindest_image: kindest/node:v1.27.3 - name: k8s-1.26 - kindest_image: kindest/node:v1.26.6@sha256:6e2d8b28a5b601defe327b98bd1c2d1930b49e5d8c512e1895099e4504007adb + kindest_image: kindest/node:v1.26.6 - name: k8s-1.25 - kindest_image: kindest/node:v1.25.11@sha256:227fa11ce74ea76a0474eeefb84cb75d8dad1b08638371ecf0e86259b35be0c8 + kindest_image: kindest/node:v1.25.11 - name: k8s-1.24 - kindest_image: kindest/node:v1.24.15@sha256:7db4f8bea3e14b82d12e044e25e34bd53754b7f2b0e9d56df21774e6f66a70ab + kindest_image: kindest/node:v1.24.15 - name: k8s-1.23 - kindest_image: kindest/node:v1.23.17@sha256:59c989ff8a517a93127d4a536e7014d28e235fb3529d9fba91b3951d461edfdb + kindest_image: kindest/node:v1.23.17 name: ${{ matrix.name }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/scripts/chart-test-prep.sh b/.github/workflows/scripts/chart-test-prep.sh index a6b2233..0ca8c4f 100755 --- a/.github/workflows/scripts/chart-test-prep.sh +++ b/.github/workflows/scripts/chart-test-prep.sh @@ -34,3 +34,6 @@ kubectl create -f https://raw.githubusercontent.com/fluxcd/flagger/main/artifact # apply chart preconditions kubectl apply -f .github/workflows/scripts/chart-test-prep/preconditions.yaml + +# install gateway crd +kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml diff --git a/chart-tests/application/ci/test-gateway-api-values.yaml b/chart-tests/application/ci/test-gateway-api-values.yaml new file mode 100644 index 0000000..da2dc1b --- /dev/null +++ b/chart-tests/application/ci/test-gateway-api-values.yaml @@ -0,0 +1,15 @@ +resources: + requests: + cpu: 10m + memory: 50Mi + limits: + cpu: 100m + memory: 100Mi + +gatewayApi: + enabled: true + pathPrefix: /examine + stripPathPrefix: true + gatewayRef: + name: http-gateway + namespace: default diff --git a/chart-tests/application/ci/test-gateway-api-with-canary-values.yaml b/chart-tests/application/ci/test-gateway-api-with-canary-values.yaml new file mode 100644 index 0000000..3ce51ff --- /dev/null +++ b/chart-tests/application/ci/test-gateway-api-with-canary-values.yaml @@ -0,0 +1,17 @@ +resources: + requests: + cpu: 10m + memory: 50Mi + limits: + cpu: 100m + memory: 100Mi + +gatewayApi: + enabled: true + pathPrefix: /examine + gatewayRef: + name: http-gateway + namespace: default + +canary: + enabled: true diff --git a/chart-tests/application/ci/test-resources-and-label-values.yaml b/chart-tests/application/ci/test-resources-and-label-values.yaml index bb7c833..8bff881 100644 --- a/chart-tests/application/ci/test-resources-and-label-values.yaml +++ b/chart-tests/application/ci/test-resources-and-label-values.yaml @@ -14,7 +14,7 @@ autoscaling: image: repository: quay.io/heubeck/examiner - tag: 1.11.24 + tag: 1.11.26 pullPolicy: IfNotPresent # ImagePolicy and check period for automated updates diff --git a/chart-tests/application/ci/test-sidecar-values.yaml b/chart-tests/application/ci/test-sidecar-values.yaml index 5eea774..1f4e4a6 100644 --- a/chart-tests/application/ci/test-sidecar-values.yaml +++ b/chart-tests/application/ci/test-sidecar-values.yaml @@ -14,7 +14,7 @@ sidecars: - name: sidekick image: repository: quay.io/heubeck/examiner - tag: 1.11.24 + tag: 1.11.26 env: ECHO_VALUE: yehaaa QUARKUS_HTTP_PORT: 9090 @@ -31,7 +31,7 @@ sidecars: - name: kickback image: repository: quay.io/heubeck/examiner - tag: 1.11.24 + tag: 1.11.26 env: ECHO_VALUE: wohooo QUARKUS_HTTP_PORT: 7070 diff --git a/charts/application/Chart.yaml b/charts/application/Chart.yaml index f11c790..8988c4b 100644 --- a/charts/application/Chart.yaml +++ b/charts/application/Chart.yaml @@ -7,4 +7,4 @@ maintainers: - name: MediaMarktSaturn url: https://github.com/MediaMarktSaturn appVersion: 1.0.0 -version: 1.10.0 +version: 1.11.0 diff --git a/charts/application/README.md b/charts/application/README.md index 4dc28c3..242d985 100644 --- a/charts/application/README.md +++ b/charts/application/README.md @@ -36,7 +36,7 @@ Generic application chart with common requirements of a typical workload. | readinessProbe.failureThreshold | int | `3` | | | readinessProbe.timeoutSeconds | int | `5` | | | image.repository | string | `"quay.io/heubeck/examiner"` | | -| image.tag | string | `"1.11.24"` | | +| image.tag | string | `"1.11.26"` | | | image.pullPolicy | string | `"IfNotPresent"` | | | image.tagSemverRange | string | `nil` | | | image.tagNumerical | string | `nil` | | diff --git a/charts/application/templates/flagger-canary.yaml b/charts/application/templates/flagger-canary.yaml index f9da4d8..0e708f7 100644 --- a/charts/application/templates/flagger-canary.yaml +++ b/charts/application/templates/flagger-canary.yaml @@ -1,4 +1,4 @@ -{{- if and .Values.canary.enabled (or .Values.istio.enabled .Values.linkerd.enabled ) }} +{{- if and .Values.canary.enabled (or .Values.istio.enabled .Values.linkerd.enabled .Values.gatewayApi.enabled ) }} apiVersion: flagger.app/v1beta1 kind: Canary metadata: @@ -11,6 +11,12 @@ spec: provider: istio {{- else if .Values.linkerd.enabled }} provider: linkerd + {{- else if .Values.gatewayApi.enabled }} + {{- if .Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1" }} + provider: gatewayapi:v1 + {{- else }} + provider: gatewayapi:v1beta1 + {{- end }} {{- end }} targetRef: apiVersion: apps/v1 @@ -45,6 +51,26 @@ spec: tls: mode: {{ .Values.istio.tlsMode }} {{- end }} + {{- if .Values.gatewayApi.enabled }} + {{- if .Values.gatewayApi.host }} + hosts: + - {{ .Values.gatewayApi.host | quote }} + {{- end }} + {{- if .Values.gatewayApi.pathPrefix }} + match: + - uri: + prefix: {{ .Values.gatewayApi.pathPrefix | quote }} + {{- if .Values.gatewayApi.stripPathPrefix }} + rewrite: + uri: / + {{- end }} + {{- end }} + gatewayRefs: + - name: {{ .Values.gatewayApi.gatewayRef.name }} + {{- if .Values.gatewayApi.gatewayRef.namespace }} + namespace: {{ .Values.gatewayApi.gatewayRef.namespace }} + {{- end }} + {{- end }} skipAnalysis: {{ .Values.canary.analysis.skip }} analysis: interval: {{ .Values.canary.analysis.interval }} diff --git a/charts/application/templates/k8s-http-route.yaml b/charts/application/templates/k8s-http-route.yaml new file mode 100644 index 0000000..509268b --- /dev/null +++ b/charts/application/templates/k8s-http-route.yaml @@ -0,0 +1,45 @@ +{{- if and (not .Values.canary.enabled) .Values.gatewayApi.enabled }} +{{- if .Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1" }} +apiVersion: gateway.networking.k8s.io/v1 +{{- else }} +apiVersion: gateway.networking.k8s.io/v1beta1 +{{- end }} +kind: HTTPRoute +metadata: + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "labels" . | nindent 4 }} +spec: + parentRefs: + - name: {{ .Values.gatewayApi.gatewayRef.name }} + {{- if .Values.gatewayApi.gatewayRef.namespace }} + namespace: {{ .Values.gatewayApi.gatewayRef.namespace }} + {{- end }} + {{- if .Values.gatewayApi.gatewayRef.sectionName }} + sectionName: {{ .Values.gatewayApi.gatewayRef.sectionName }} + {{- end }} + {{- if .Values.gatewayApi.host }} + hostnames: + - {{ .Values.gatewayApi.host | quote }} + {{- end }} + rules: + - backendRefs: + - name: {{ .Release.Name }} + kind: Service + port: {{ .Values.service.port }} + {{- if .Values.gatewayApi.pathPrefix }} + matches: + - path: + type: PathPrefix + value: {{ .Values.gatewayApi.pathPrefix | quote }} + {{- if .Values.gatewayApi.stripPathPrefix }} + filters: + - type: URLRewrite + urlRewrite: + path: + replaceFullPath: / + type: ReplaceFullPath + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/application/values.yaml b/charts/application/values.yaml index ccef6a6..9e4224f 100644 --- a/charts/application/values.yaml +++ b/charts/application/values.yaml @@ -47,7 +47,7 @@ readinessProbe: image: repository: quay.io/heubeck/examiner - tag: 1.11.24 + tag: 1.11.26 pullPolicy: IfNotPresent # ImagePolicy options: @@ -157,6 +157,16 @@ linkerd: config.linkerd.io/proxy-cpu-request: "0.2" config.linkerd.io/proxy-memory-request: 128Mi +gatewayApi: + enabled: false + host: + pathPrefix: + stripPathPrefix: false + gatewayRef: + name: + namespace: + sectionName: + monitoring: serviceMonitor: false namespace: monitoring @@ -266,7 +276,7 @@ sidecars: [] # - name: sqlproxy # image: # repository: quay.io/heubeck/examiner -# tag: 1.11.24 +# tag: 1.11.26 # args: [] # env: {} # configEnvFrom: []