Files
OpenShell/tasks/scripts/test-e2e-image-overrides.sh
T
Gaizka MenendezandTaylor Mutch fe3942f2da feat(helm): migrate gateway configuration to gatewayConfig (#3384)
* feat(helm): add generic gateway TOML serializer

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* docs(architecture): define Helm gateway configuration boundary

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* feat(helm): define default gateway configuration map

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* refactor(helm): render gateway config from values map

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* test(helm): cover generic gateway TOML rendering

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* feat(helm): protect gateway config secret boundary

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* docs(helm): classify legacy gateway configuration values

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* refactor(helm): derive dual-use resources from gateway config

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* test(helm): migrate gateway config scenarios

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* refactor(helm): derive credential resources from gateway config

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* refactor(helm): migrate gateway config overlays

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* refactor(helm): remove gateway configuration shadow values

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* refactor(helm): align runtime config with resources

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* docs(helm): add gateway config migration guide

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* test(helm): validate rendered gateway config

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* test(helm): cover config resource coherence

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(helm): make Kubernetes E2E deployable

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(e2e): pass host aliases through gateway config

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* docs(e2e): reference gateway config host alias

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(helm): enforce gateway resource ownership

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* test(e2e): cover chart host gateway input

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(helm): address gateway config review findings

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(helm): repair RFC 0012 migration integration

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(e2e): align Kubernetes parity with RFC 0012

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(helm): complete gateway config migration

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* chore(helm): add SPDX header to TOML template

* fix(helm): preserve legacy gateway configuration aliases

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(helm): complete legacy gateway config compatibility

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* feat(helm): support gateway config arrays of tables

* fix(helm): preserve sandbox identity aliases

* fix(helm): address gateway config review findings

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>

* fix(helm): preserve gateway config migration settings

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>

* test(helm): validate extension arrays in CI values

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>

* fix(helm): restore unconditional SPDX headers

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>

* fix(helm): restore route SPDX header placement

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>

* docs(helm): simplify configuration and migration examples

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>

* docs(helm): remove redundant flag explanations

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>

* docs(helm): move chart configuration guidance to Kubernetes setup

Signed-off-by: Taylor Mutch <taylormutch@gmail.com>

---------

Signed-off-by: Gaizka Menendez Hernandez <gmenende@redhat.com>
Signed-off-by: Taylor Mutch <taylormutch@gmail.com>
Co-authored-by: Taylor Mutch <taylormutch@gmail.com>
2026-10-08 18:39:59 +00:00

136 lines
5.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
# shellcheck source=e2e/support/gateway-common.sh
source "${ROOT}/e2e/support/gateway-common.sh"
assert_resolves() {
local description=$1
local expected=$2
shift 2
local actual
actual="$(e2e_resolve_image_reference "$@")"
if [ "${actual}" != "${expected}" ]; then
echo "FAIL: ${description}: expected '${expected}', got '${actual}'" >&2
exit 1
fi
}
assert_resolves "repository inherits tag" \
"registry.example/gateway:test" \
"registry.example/gateway" test
assert_resolves "repository trims trailing slash" \
"registry.example/gateway:test" \
"registry.example/gateway/" test
assert_resolves "tagged reference is unchanged" \
"registry.example/gateway:branch" \
"registry.example/gateway:branch" test
assert_resolves "digest reference is unchanged" \
"registry.example/gateway@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
"registry.example/gateway@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" test
assert_resolves "registry port inherits tag" \
"localhost:5000/openshell/gateway:test" \
"localhost:5000/openshell/gateway" test
if e2e_image_reference_is_complete "registry.example/gateway:branch" \
&& e2e_image_reference_is_complete "registry.example/gateway@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
&& ! e2e_image_reference_is_complete "registry.example/gateway" \
&& e2e_image_reference_has_digest "registry.example/gateway@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
&& ! e2e_image_reference_has_digest "registry.example/gateway:branch"; then
:
else
echo "FAIL: image reference detection" >&2
exit 1
fi
assert_reference_part() {
local description=$1
local expected=$2
local actual=$3
if [ "${actual}" != "${expected}" ]; then
echo "FAIL: ${description}: expected '${expected}', got '${actual}'" >&2
exit 1
fi
}
assert_reference_part "repository strips tag" \
"registry.example/gateway" \
"$(e2e_image_reference_repository "registry.example/gateway:branch")"
assert_reference_part "repository preserves registry port" \
"localhost:5000/openshell/gateway" \
"$(e2e_image_reference_repository "localhost:5000/openshell/gateway:test")"
assert_reference_part "registry extracts hostname" \
"registry.example" \
"$(e2e_image_reference_registry "registry.example/openshell/gateway:branch")"
assert_reference_part "registry extracts hostname and port" \
"localhost:5000" \
"$(e2e_image_reference_registry "localhost:5000/openshell/gateway:test")"
assert_reference_part "repository path excludes registry" \
"openshell/gateway" \
"$(e2e_image_reference_repository_path "registry.example/openshell/gateway:branch")"
assert_reference_part "tag extracts tag" \
"branch" \
"$(e2e_image_reference_tag "registry.example/gateway:branch")"
assert_reference_part "digest extracts digest" \
"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
"$(e2e_image_reference_digest "registry.example/gateway@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")"
assert_reference_part "digest has no tag" \
"" \
"$(e2e_image_reference_tag "registry.example/gateway@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")"
assert_helm_image_translation() {
local description=$1
local image=$2
local expected_registry=$3
local expected_repository=$4
local expected_tag=$5
local expected_digest=$6
assert_reference_part "${description} registry" "${expected_registry}" \
"$(e2e_image_reference_registry "${image}")"
assert_reference_part "${description} repository" "${expected_repository}" \
"$(e2e_image_reference_repository_path "${image}")"
assert_reference_part "${description} tag" "${expected_tag}" \
"$(e2e_image_reference_tag "${image}")"
assert_reference_part "${description} digest" "${expected_digest}" \
"$(e2e_image_reference_digest "${image}")"
}
# The Kubernetes wrapper passes these three fields directly to Helm. Exercise
# a mixed tagged/digest-pinned set so each independently configurable image is
# translated without embedding a complete reference in image.repository.
assert_helm_image_translation "gateway" \
"registry.example/gateway:branch" "registry.example" "gateway" "branch" ""
assert_helm_image_translation "supervisor" \
"localhost:5000/openshell/supervisor:test" "localhost:5000" "openshell/supervisor" "test" ""
assert_helm_image_translation "sandbox" \
"registry.example/sandbox@sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \
"registry.example" "sandbox" "" "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
# The certgen hook uses the chart's shared registry fallback. The Kubernetes
# harness must propagate the gateway registry there too, including an empty
# registry for k3d-imported local images.
if grep -Fq 'helm_values_args+=(--set-string "global.image.registry=$(e2e_image_reference_registry "${GATEWAY_IMAGE}")")' "${ROOT}/e2e/with-kube-gateway.sh"; then
:
else
echo "FAIL: Kubernetes Helm installs must propagate the gateway registry to certgen" >&2
exit 1
fi
# The Vault credential-driver overlay must use the fixture alias created in
# the gateway namespace. The alias is covered by OpenBao's development TLS
# certificate; the chart's namespace service is not.
if grep -Fq 'address: https://openbao-0:8200' \
"${ROOT}/deploy/helm/openshell/ci/values-credential-driver-vault.yaml"; then
:
else
echo "FAIL: Vault credential-driver overlay must use the OpenBao TLS alias" >&2
exit 1
fi
echo "E2E image override tests passed."