Files
Dhiraj Bokde cc4ded2088 feat(helm): split gateway and workspace charts (#2643)
* feat(helm): split gateway and workspace charts

Signed-off-by: Dhiraj Bokde <dbokde@nvidia.com>

* fix(helm): preserve split chart upgrade compatibility

Keep workspace manifests valid after value validation and default legacy reused values to the combined resource topology.

* fix(ci): preserve VM runtime for E2E

The Rust cache restores target/ after VM runtime artifacts are staged,
overwriting target/vm-runtime-compressed before openshell-driver-vm is built.
Stage the compressed runtime outside target and pass that location through
OPENSHELL_VM_RUNTIME_COMPRESSED_DIR so build.rs can embed the supervisor.

Also locate the Helm split-ownership test repository root from the script
path rather than git rev-parse. The test runs in a container where the
GitHub checkout can be owned by a different UID and rejected as dubious
ownership.

Signed-off-by: Dhiraj Bokde <dbokde@nvidia.com>

* fix(ci): install yq for Helm ownership test

The split-chart ownership regression uses yq to inspect rendered YAML,
but the Helm CI container installs only tools declared in mise.
Declare and lock yq so mise install --locked provides the test dependency.

Signed-off-by: Dhiraj Bokde <dbokde@nvidia.com>

---------

Signed-off-by: Dhiraj Bokde <dbokde@nvidia.com>
2026-09-02 00:23:39 +00:00

62 lines
1.8 KiB
YAML

# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
suite: workspace namespace resources
templates:
- templates/serviceaccount.yaml
- templates/role.yaml
- templates/rolebinding.yaml
- templates/networkpolicy.yaml
release:
name: tenant-a
namespace: app-a
tests:
- it: creates the workspace role in the release namespace
template: templates/role.yaml
asserts:
- hasDocuments:
count: 1
- equal:
path: metadata.namespace
value: app-a
- it: binds the shared gateway service account
template: templates/rolebinding.yaml
set:
gateway.serviceAccount.name: shared-gateway
gateway.serviceAccount.namespace: openshell-system
asserts:
- equal:
path: metadata.namespace
value: app-a
- equal:
path: subjects[0].name
value: shared-gateway
- equal:
path: subjects[0].namespace
value: openshell-system
- it: selects gateway pods in the gateway namespace
template: templates/networkpolicy.yaml
set:
gateway.serviceAccount.namespace: openshell-system
gateway.networkPolicy.podSelector:
app.kubernetes.io/name: openshell
app.kubernetes.io/instance: central
asserts:
- equal:
path: spec.ingress[0].from[0].namespaceSelector.matchLabels["kubernetes.io/metadata.name"]
value: openshell-system
- equal:
path: spec.ingress[0].from[0].podSelector.matchLabels["app.kubernetes.io/instance"]
value: central
- it: supports a pre-existing sandbox service account
template: templates/serviceaccount.yaml
set:
sandboxServiceAccount.create: false
asserts:
- hasDocuments:
count: 0