Skip to main content

Generated at build time from charts/racora/README.md (helm-docs: values.yaml + README.md.gotmpl); edit the source, not this page.

racora

The umbrella chart for the racora distribution. One Helm release, the entire Racora system.

What this installs​

SubchartWhat
racora-crdsNRCell CRD
racora-baseWorkload namespaces
racora-nodeUSRP + NVIDIA device plugins, optional nvidia RuntimeClass (racora-system)
racora-controllerNRCell reconciler (racora-system)
racora-cuCU-CP + CU-UP + CU-IP (centralized-unit)
racora-monitoringOTel + ClickHouse + Tempo + Grafana
racora-core-open5gsthe Open5GS core provider (cores/open5gs), rendered when global.core.provider is open5gs (the default)

Install​

# Default: everything on (RAN + 5GC + observability)
helm install racora ./charts/racora

# Bring your own 5G core: no core renders, the CU-CP dials your AMF
helm install racora ./charts/racora \
--set global.core.provider=external \
--set global.core.amfAddr=amf.my-5gc.example.com

# Edge install without observability
helm install racora ./charts/racora \
--set monitoring.enabled=false

Values​

KeyTypeDefaultDescription
global.systemDefaultRegistrystring"registry.gitlab.com/cognitive-network-solutions/racora"Registry every component image is pulled from (/:); one value re-roots the whole distribution to a mirror.
global.core.providerstring"open5gs"The 5G core provider: open5gs (the bundled reference core, default) or external (bring your own AMF: set amfAddr). Exactly one core renders.
global.core.amfAddrstring""external only: the AMF the CU-CP dials (DNS name or IP the cluster reaches over SCTP). The controller renders it into the CU-CP overlay; a change takes effect at the next cu-cp restart. In-cluster providers expose their AMF as the Service amf.<racora-controller.coreNamespace>.svc.cluster.local and leave this empty.
global.network.plmnstring"90170"PLMN the network serves (MCC+MNC, 5 or 6 digits). The reference deployment's 90170 (the range test SIMs are issued in).
global.network.tacslist[7]Tracking area codes the network serves; the core provider must serve every one of them.
global.network.sliceslist[{"sst":1}]Network slices (sst, optional sd) the CU-CP advertises for every tracking area.
crds.enabledbooltrueShip the NRCell CRD inside the release (the kubernetes platform). The k3s platform applies it out-of-band and sets this false.
base.enabledbooltrueCreate the six workload namespaces (racora-base).
node.enabledbooltrueHardware enablement DaemonSets (USRP + NVIDIA device plugins) and the optional nvidia RuntimeClass — the node contract's cluster-side half.
controller.enabledbooltrueDeploy the NRCell controller (racora-controller).
cu.enabledbooltrueDeploy the CU planes: CU-CP, CU-UP and CU-IP (racora-cu).
monitoring.enabledbooltrueDefault true — observability is part of the distribution story. Disable on resource-constrained edge installs where logs go elsewhere.

Per-subchart values are accessible via the subchart's name as a top-level key (matches Helm's dependency-values convention); each subchart's README lists its own. See values.yaml for examples of common overrides.

After install​

Watch the system come up:

kubectl get pods -A -l app.kubernetes.io/part-of=racora -w

Apply a cell and verify reconciliation (see the repo README for the full walkthrough):

cat <<'EOF' | kubectl apply -f -
apiVersion: racora.io/v1alpha1
kind: NRCell
metadata:
name: cell-1
namespace: racora-system
spec:
band: 78
dlArfcn: 632628
channelBandwidthMHz: 10
commonScs: 30
plmn: "90170"
tac: 7
radioBackend:
ruType: dummy
EOF
kubectl get nrcells -n racora-system # identity + NCI assigned, ConfigGenerated
kubectl get pods -n distributed-unit # DU pod created by controller

Order of installation​

Helm renders all subchart templates together and applies them as one manifest sorted by kind (Namespaces, then CRDs, RBAC, ConfigMaps, Services, workloads) — no subchart declares a dependency on another. The actual subchart-to-subchart runtime ordering (e.g., wait for controller before applying CRs) is handled by each workload's init containers:

  • cu-cp blocks until racora-controller writes nrcell-cu-cp-config (no CR → no overlay → cu-cp stays Init)
  • cu-up sleeps 20s waiting for cu-cp
  • cuip has no init gating — once the controller scales the CU plane up it starts immediately (substrate boots empty, populates when NRCells appear)

This means a fresh helm install puts everything into the right sequence on its own — no --wait or post-install hooks needed.

Note: ogstun on hostNetwork​

Open5GS uses hostNetwork: true (needed for SCTP NGAP), so the TUN device it creates (ogstun) lives on the host kernel and would persist across pod restarts. The chart handles this automatically: the open5gs container resets any leftover ogstun/loopback/NAT state before every start, and on the k3s platform racora-uninstall.sh (scope host or cluster) clears it from the host on uninstall — no manual cleanup needed.

How a platform delivers this chart​

Delivery is the platform module's job (docs/platforms/index.md), never the chart's. The k3s platform writes the released chart package as a k3s HelmChart resource on the server at install time (with platforms/k3s/values.yaml as its values and the NRCell CRD applied out-of-band); an existing cluster installs it with helm and platforms/kubernetes/values.yaml. Image pins are baked into the released chart; chart-values.yaml carries them for installs from source.