You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> **Experimental** — the Kubernetes deployment path is under active development. Expect rough edges and breaking changes.
3
+
<!--
4
+
This file is generated by helm-docs.
5
+
Edit README.md.gotmpl and values.yaml, then run `mise run helm:docs`.
6
+
-->
7
+
8
+
> **Experimental** - the Kubernetes deployment path is under active development. Expect rough edges and breaking changes.
4
9
5
10
This chart deploys the OpenShell gateway into a Kubernetes cluster. It is published as an OCI artifact to GHCR at `oci://ghcr.io/nvidia/openshell/helm-chart`.
6
11
7
12
## Prerequisites
8
13
9
14
The Kubernetes Agent Sandbox CRDs and controller must be installed on the cluster before deploying OpenShell. Install them with:
| certManager.clientCaFromServerTlsSecret | bool |`true`| Mount gateway client CA from the server TLS secret's ca.crt (populated by cert-manager for certs issued by a CA Issuer). Avoids a separate openshell-server-client-ca Secret. |
87
+
| certManager.enabled | bool |`false`| Create cert-manager Issuer and Certificate resources instead of using the PKI bootstrap Job. |
88
+
| certManager.serverDnsNames | list |`["openshell","openshell.openshell.svc","openshell.openshell.svc.cluster.local","localhost","openshell.localhost","*.openshell.localhost","host.docker.internal"]`| DNS SANs on the cert-manager-issued server certificate. |
89
+
| certManager.serverIpAddresses | list |`["127.0.0.1"]`| IP SANs on the cert-manager-issued server certificate. |
90
+
| fullnameOverride | string |`""`| Override the full generated resource name. |
91
+
| grpcRoute.enabled | bool |`false`| Create a Gateway API GRPCRoute for the gateway service. |
92
+
| grpcRoute.gateway.className | string |`"eg"`| GatewayClass to reference. Envoy Gateway installs one named "eg". |
93
+
| grpcRoute.gateway.create | bool |`false`| When true, a Gateway resource is created in the release namespace. Set to false and provide name/namespace to attach to a pre-existing Gateway. |
94
+
| grpcRoute.gateway.listener.allowedRoutes | string |`"Same"`| "Same" restricts attached routes to the release namespace; "All" allows any namespace. |
95
+
| grpcRoute.gateway.listener.port | int |`80`| Listener port for the generated Gateway resource. |
96
+
| grpcRoute.gateway.listener.protocol | string |`"HTTP"`| Listener protocol for the generated Gateway resource. |
97
+
| grpcRoute.gateway.name | string |`""`| Name of the Gateway resource. Defaults to the chart fullname. |
98
+
| grpcRoute.gateway.namespace | string |`""`| Namespace of the Gateway referenced by the GRPCRoute parentRef. Defaults to the release namespace. |
99
+
| grpcRoute.hostnames | list |`[]`| Hostnames the GRPCRoute matches on. Leave empty to match all hosts. |
| server.disableTls | bool |`false`| Disable TLS entirely - the server listens on plaintext HTTP. Set to true when a reverse proxy / tunnel terminates TLS at the edge. |
133
+
| server.enableLoopbackServiceHttp | bool |`true`| Enable plaintext HTTP routing for loopback sandbox service URLs on TLS-enabled gateways. |
134
+
| server.enableUserNamespaces | bool |`false`| Enable Kubernetes user namespace isolation (hostUsers: false) for sandbox pods. Requires Kubernetes 1.33+ with user namespace support available (beta through 1.35, GA in 1.36+), plus a supporting container runtime and Linux 5.12+. When enabled, container UID 0 maps to an unprivileged host UID and capabilities become namespaced. |
135
+
| server.grpcEndpoint | string |`""`| gRPC endpoint sandboxes call back into the gateway. Leave empty to derive it from the chart fullname, release namespace, service port, and disableTls flag, for example https://openshell.openshell.svc.cluster.local:8080. Override only when sandboxes must reach the gateway via a different hostname (e.g. an external ingress or a host alias). |
136
+
| server.hostGatewayIP | string |`""`| 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. |
| server.oidc.adminRole | string |`""`| Role name for admin access. Leave empty (with userRole also empty) for authentication-only mode. Both must be set or both empty. |
139
+
| server.oidc.audience | string |`"openshell-cli"`| Expected audience claim for the API resource server. This should match the server's --oidc-audience, NOT the CLI client ID. |
140
+
| server.oidc.caConfigMapName | string |`""`| Name of a ConfigMap containing a CA certificate bundle (key: ca.crt) for verifying the OIDC issuer's TLS certificate. Required when the issuer uses a non-public CA (e.g. OpenShift ingress, private PKI). |
| server.oidc.jwksTtl | int |`3600`| JWKS key cache TTL in seconds. |
143
+
| server.oidc.rolesClaim | string |`""`| Dot-separated path to the roles array in the JWT claims. Keycloak: "realm_access.roles", Entra ID: "roles", Okta: "groups". |
144
+
| server.oidc.scopesClaim | string |`""`| Dot-separated path to the scopes array in the JWT claims. |
145
+
| server.oidc.userRole | string |`""`| Role name for standard user access. |
146
+
| server.sandboxImage | string |`"ghcr.io/nvidia/openshell-community/sandboxes/base:latest"`| Default sandbox image used when requests do not specify one. |
147
+
| server.sandboxImagePullPolicy | string |`""`| 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. |
148
+
| server.sandboxNamespace | string |`""`| Namespace where sandbox pods are created. Defaults to the Helm release namespace (.Release.Namespace) when left empty. |
149
+
| server.tls.certSecretName | string |`"openshell-server-tls"`| K8s secret (type kubernetes.io/tls) with tls.crt and tls.key for the server. |
150
+
| server.tls.clientCaSecretName | string |`"openshell-server-client-ca"`| K8s secret with ca.crt for client certificate verification (mTLS). Set to "" to disable mTLS and run HTTPS-only (use OIDC for auth instead). |
151
+
| server.tls.clientTlsSecretName | string |`"openshell-client-tls"`| K8s secret mounted into sandbox pods for mTLS to the server. |
152
+
| service.healthPort | int |`8081`| Gateway health service port. |
153
+
| service.metricsPort | int |`9090`| Gateway metrics service port. |
154
+
| service.port | int |`8080`| Gateway gRPC/HTTP service port. |
155
+
| service.type | string |`"ClusterIP"`| Kubernetes Service type for the gateway. |
156
+
| serviceAccount.annotations | object |`{}`| Annotations to add to the generated service account. |
157
+
| serviceAccount.create | bool |`true`| Create a service account for the gateway. |
158
+
| serviceAccount.name | string |`""`| Existing service account name to use when serviceAccount.create is false. |
159
+
| supervisor.image.pullPolicy | string |`""`| Supervisor image pull policy. Defaults to the gateway image pull policy when empty. |
| supervisor.image.tag | string |`""`| Supervisor image tag. Defaults to the chart appVersion when empty. |
162
+
| supervisor.sideloadMethod | string |`""`| How the supervisor binary is delivered into sandbox pods. Empty (default) = auto-detect from cluster version: K8s >= v1.35 -> "image-volume" (ImageVolume enabled by default; GA in v1.36) K8s < v1.35 -> "init-container" (copies via init container + emptyDir) On K8s v1.33-v1.34 with the ImageVolume feature gate manually enabled, set this to "image-volume" explicitly. |
163
+
| tolerations | list |`[]`| Tolerations for the gateway pod. |
164
+
165
+
----------------------------------------------
166
+
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
Edit README.md.gotmpland values.yaml, then run `mise run helm:docs`.
6
+
-->
7
+
8
+
> **Experimental** - the Kubernetes deployment path is under active development. Expect rough edges and breaking changes.
9
+
10
+
This chart deploys the OpenShell gateway into a Kubernetes cluster. It is published as an OCI artifact to GHCR at `oci://ghcr.io/nvidia/openshell/helm-chart`.
11
+
12
+
## Prerequisites
13
+
14
+
The Kubernetes Agent Sandbox CRDs and controller must be installed on the cluster before deploying OpenShell. Install them with:
|`<semver>` (e.g.`0.6.0`) | Tagged GitHub release | Tracks the matching gateway and supervisor image versions. Recommended for production.|
48
+
|`0.0.0-dev`| Latest commit on `main`| Floating tag, overwritten on every push.`appVersion` is `dev`, so images resolve to the `:dev` tag.|
49
+
|`0.0.0-dev.<commit-sha>`| A specific commit on `main`| Per-commit pin. Chart version and`appVersion` both use the full 40-character commit SHA, which matches the image tag pushed by CI.|
50
+
51
+
The `dev` tags are intended for testing changes ahead of a release. Production deployments should pin to a tagged release.
52
+
53
+
## Configuration
54
+
55
+
See [`values.yaml`](values.yaml) for source defaults. Selected overlays:
0 commit comments