Files
OpenShell/deploy/helm/openshell/values.yaml
Taylor Mutch d73860f523 feat(driver-kubernetes): sideload supervisor binary via init container (#1154)
* feat: Update kubernetes driver to side-load supervisor binary

* Update helm chart with supervisor image config

* chore(driver-kubernetes): fix rustfmt formatting
2026-05-04 13:00:28 -07:00

145 lines
4.9 KiB
YAML

# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# Default values for OpenShell
replicaCount: 1
image:
repository: ghcr.io/nvidia/openshell/gateway
pullPolicy: Always
tag: "latest"
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
create: true
annotations: {}
name: ""
podAnnotations: {}
podLabels: {}
podSecurityContext:
fsGroup: 1000
securityContext:
runAsNonRoot: true
runAsUser: 1000
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
service:
type: NodePort
port: 8080
nodePort: 30051
healthPort: 8081
metricsPort: 9090
# Pod restart behavior and health probe tuning.
podLifecycle:
terminationGracePeriodSeconds: 5
probes:
startup:
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 30
liveness:
initialDelaySeconds: 2
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 3
readiness:
initialDelaySeconds: 1
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 3
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
# Server configuration
server:
logLevel: info
sandboxNamespace: openshell
dbUrl: "sqlite:/var/openshell/openshell.db"
sandboxImage: "ghcr.io/nvidia/openshell-community/sandboxes/base:latest"
# Kubernetes imagePullPolicy for sandbox pods. Empty = Kubernetes default
# (Always for :latest, IfNotPresent otherwise). Set to "Always" for dev
# clusters so new images are picked up without manual eviction.
sandboxImagePullPolicy: ""
# Image that provides the openshell-sandbox supervisor binary. An init
# container copies the binary from this image into a shared emptyDir volume
# before the sandbox container starts. Should match the gateway image tag
# so the supervisor and gateway versions stay in sync.
supervisorImage: "ghcr.io/nvidia/openshell/supervisor:latest"
# Kubernetes imagePullPolicy for the supervisor init container.
# Empty = Kubernetes default.
supervisorImagePullPolicy: ""
# gRPC endpoint for sandboxes to callback to OpenShell (must be reachable from pods)
grpcEndpoint: "https://openshell.openshell.svc.cluster.local:8080"
# Public host/port returned to CLI clients for SSH proxy CONNECT requests.
# For local clusters the default 127.0.0.1:8080 is correct; for remote
# clusters these should be set to the externally reachable host and port.
sshGatewayHost: ""
sshGatewayPort: 0
# TLS configuration for the server. The server always terminates mTLS
# directly and requires client certificates.
# Name of the Kubernetes Secret holding the NSSH1 HMAC handshake key.
# The secret must contain a `secret` key with the hex-encoded HMAC key.
# For cluster deployments this is auto-created by the bootstrap process.
sshHandshakeSecretName: "openshell-ssh-handshake"
# Host gateway IP for sandbox pod hostAliases. When set, sandbox pods get
# hostAliases entries mapping host.docker.internal and host.openshell.internal
# to this IP, allowing them to reach services running on the Docker host.
# Auto-detected by the cluster entrypoint script.
hostGatewayIP: ""
# Disable gateway authentication (mTLS client certificate requirement).
# Set to true when the gateway sits behind a reverse proxy (e.g.
# Cloudflare Tunnel) that terminates TLS.
disableGatewayAuth: false
# Disable TLS entirely — the server listens on plaintext HTTP.
# Set to true when a reverse proxy / tunnel terminates TLS at the edge.
disableTls: false
tls:
# K8s secret (type kubernetes.io/tls) with tls.crt and tls.key for the server
certSecretName: openshell-server-tls
# K8s secret with ca.crt for client certificate verification
clientCaSecretName: openshell-server-client-ca
# K8s secret mounted into sandbox pods for mTLS to the server
clientTlsSecretName: openshell-client-tls
# OIDC (OpenID Connect) configuration for JWT-based authentication.
# When issuer is set, the server validates Bearer tokens on gRPC requests.
oidc:
# OIDC issuer URL (e.g. https://keycloak.example.com/realms/openshell).
issuer: ""
# Expected audience claim for the API resource server.
# This should match the server's --oidc-audience, NOT the CLI client ID.
audience: "openshell-cli"
# JWKS key cache TTL in seconds.
jwksTtl: 3600
# Dot-separated path to the roles array in the JWT claims.
# Keycloak: "realm_access.roles", Entra ID: "roles", Okta: "groups".
rolesClaim: ""
# Role name for admin access. Leave empty (with userRole also empty) for
# authentication-only mode. Both must be set or both empty.
adminRole: ""
# Role name for standard user access.
userRole: ""
# Dot-separated path to the scopes array in the JWT claims.
scopesClaim: ""
# NetworkPolicy restricting SSH ingress on sandbox pods to the gateway only.
networkPolicy:
enabled: true