mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-11-07 08:55:37 +08:00
* feat(supervisor): recover shared instances with hash-based HA Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(supervisor): keep HA coordination out of compute drivers Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(supervisor): fence pool admission and reconciliation races Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(supervisor): keep pool mode stable across replica scaling Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(supervisor): default shared deployments to pool mode Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(supervisor): fence refused launches and remove legacy mode Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(supervisor): confirm live owners and fence stale observations Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(supervisor): preserve takeover cause log formatting Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(helm): add memory-based supervisor autoscaling Signed-off-by: Drew Newberry <anewberry@nvidia.com> * fix(supervisor): retain acknowledgements and fence streamed input Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(supervisor): consolidate experimental multi-tenant guidance Signed-off-by: Drew Newberry <anewberry@nvidia.com> * docs(supervisor): simplify multi-tenant supervisor guide Signed-off-by: Drew Newberry <anewberry@nvidia.com> * refactor(supervisor): simplify pool member identity Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(helm): make supervisor affinity configurable Signed-off-by: Drew Newberry <anewberry@nvidia.com> * feat(helm): make supervisor disruption budget optional Signed-off-by: Drew Newberry <anewberry@nvidia.com> * test(supervisor): align HA fixtures with suspend support Signed-off-by: Drew Newberry <anewberry@nvidia.com> --------- Signed-off-by: Drew Newberry <anewberry@nvidia.com>
87 lines
3.1 KiB
YAML
87 lines
3.1 KiB
YAML
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
suite: supervisor affinity
|
|
templates:
|
|
- templates/supervisor.yaml
|
|
- templates/statefulset.yaml
|
|
- templates/gateway-config.yaml
|
|
release:
|
|
name: openshell
|
|
namespace: gateway
|
|
set:
|
|
gatewayConfig:
|
|
openshell.drivers.kubernetes:
|
|
supervisor_topology: gateway
|
|
tests:
|
|
- it: renders supervisor.affinity unchanged on the supervisor Pod
|
|
template: templates/supervisor.yaml
|
|
documentIndex: 0
|
|
set:
|
|
supervisor:
|
|
affinity:
|
|
podAntiAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
- labelSelector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: openshell-supervisor
|
|
app.kubernetes.io/instance: openshell
|
|
app.kubernetes.io/component: supervisor
|
|
topologyKey: kubernetes.io/hostname
|
|
asserts:
|
|
- equal:
|
|
path: spec.template.spec.affinity
|
|
value:
|
|
podAntiAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
- labelSelector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: openshell-supervisor
|
|
app.kubernetes.io/instance: openshell
|
|
app.kubernetes.io/component: supervisor
|
|
topologyKey: kubernetes.io/hostname
|
|
- it: keeps gateway and supervisor affinity separate
|
|
set:
|
|
affinity:
|
|
nodeAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
nodeSelectorTerms:
|
|
- matchExpressions:
|
|
- key: example.com/pool
|
|
operator: In
|
|
values: [gateways]
|
|
supervisor:
|
|
affinity:
|
|
nodeAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
nodeSelectorTerms:
|
|
- matchExpressions:
|
|
- key: example.com/pool
|
|
operator: In
|
|
values: [supervisors]
|
|
asserts:
|
|
- equal:
|
|
path: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].values
|
|
value: [gateways]
|
|
template: templates/statefulset.yaml
|
|
- equal:
|
|
path: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].values
|
|
value: [supervisors]
|
|
template: templates/supervisor.yaml
|
|
documentIndex: 0
|
|
- it: renders no gateway affinity when only supervisor.affinity is set
|
|
template: templates/statefulset.yaml
|
|
set:
|
|
supervisor:
|
|
affinity:
|
|
podAntiAffinity:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
- weight: 100
|
|
podAffinityTerm:
|
|
labelSelector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: supervisor
|
|
topologyKey: kubernetes.io/hostname
|
|
asserts:
|
|
- notExists:
|
|
path: spec.template.spec.affinity
|