Helm charts for deploying the NICo REST API platform services.
| Chart | Path | Description |
|---|---|---|
nico-rest |
nico-rest/ |
Umbrella chart (api + workflow + site-manager + db) |
nico-rest-site-agent |
nico-rest-site-agent/ |
Site agent (deployed independently per-site) |
| Sub-Chart | Description |
|---|---|
nico-rest-common |
Common secrets and certificates (created by Helm) |
nico-rest-cert-manager |
NICo credential manager service (credsmgr) |
nico-rest-api |
REST API server (port 8388) |
nico-rest-workflow |
Temporal workers (cloud-worker + site-worker) |
nico-rest-site-manager |
Site lifecycle manager (TLS on port 8100) |
nico-rest-db |
Database migration job (Bun ORM, idempotent) |
nico-rest-commoncreates the secrets (db-creds,temporal-encryption-key,image-pull-secret,keycloak-client-secret) and thetemporal-client-cloud-certCertificate as part of the Helm install.
The following must be running before installing charts:
- PostgreSQL database
- Temporal server with
cloudandsitenamespaces - cert-manager.io with ClusterIssuer
nico-rest-ca-issuer - Keycloak (optional) — only if using Keycloak for authentication
The Site CRD (
sites.forge.nvidia.io) is bundled innico-rest-site-manager/crds/and installed automatically by Helm.
The API requires exactly one authentication method. Keycloak and JWT issuers are mutually exclusive.
helm upgrade --install nico-rest nico-rest/ \
--namespace $NS --create-namespace \
--set global.image.repository=$REPO \
--set global.image.tag=$TAG \
-f my-auth-values.yamlWhere my-auth-values.yaml contains:
nico-rest-api:
config:
issuers:
- name: my-idp
origin: custom
jwks: https://my-idp.example.com/.well-known/jwks.json
issuer: "my-idp.example.com"See auth documentation for full issuer configuration options.
helm upgrade --install nico-rest nico-rest/ \
--namespace $NS --create-namespace \
--set global.image.repository=$REPO \
--set global.image.tag=$TAG \
-f my-keycloak-values.yamlWhere my-keycloak-values.yaml contains:
nico-rest-api:
config:
keycloak:
enabled: true
baseURL: http://keycloak:8082
externalBaseURL: https://keycloak.example.com
realm: my-realm
clientID: my-client
serviceAccount: trueIf nico-rest-common.enabled=false, you must pre-create the following resources in the target namespace before install:
- Secrets:
db-creds,temporal-encryption-key,image-pull-secret keycloak-client-secret(when Keycloak authentication is enabled)- The
temporal-client-cloud-certCertificate (or its resulting TLS Secret) consumed by the workflow workers
Note: If neither method is configured,
helm installwill fail with a validation error.
REPO=nvcr.io/0837451325059433/carbide-dev
TAG=latest
NS=nico-rest
helm upgrade --install nico-rest nico-rest/ \
--namespace $NS --create-namespace \
--set global.image.repository=$REPO \
--set global.image.tag=$TAG \
-f my-auth-values.yamlSite agent requires a registered site (UUID + OTP). The chart must be installed first, then bootstrapped:
# 1. Install chart
helm upgrade --install nico-rest-site-agent nico-rest-site-agent/ \
--namespace $NS \
--set global.image.repository=$REPO \
--set global.image.tag=$TAG || true
# 2. Bootstrap site registration (creates site via API, patches ConfigMap/Secret)
../../rest-api/scripts/setup-local.sh site-agent
# 3. Site agent will stabilize after bootstrap
kubectl -n $NS rollout status statefulset/nico-rest-site-agent --timeout=120shelm uninstall nico-rest-site-agent -n nico-rest
helm uninstall nico-rest -n nico-restGlobal values are passed to all sub-charts:
global:
image:
repository: nvcr.io/0837451325059433/carbide-dev
tag: "1.0.6"
pullPolicy: IfNotPresent
imagePullSecrets:
- name: image-pull-secret
certificate:
issuerRef:
kind: ClusterIssuer
name: nico-rest-ca-issuer
group: cert-manager.ioStandalone chart with its own global section (same structure as above).
See each chart's values.yaml for full configuration options.