Generated at build time from
cores/open5gs/chart/README.md(helm-docs:values.yaml+README.md.gotmpl); edit the source, not this page.
racora-core-open5gs
The Open5GS core provider of Racora (cores/open5gs): the reference 5G
core, Open5GS in a single pod (AMF + SMF + UPF + AUSF + UDM + NRF via the
5gc-all entry point) in the 5g-core namespace, with its subscriber DB on
a PersistentVolumeClaim.
A provider, selected by the umbrella
This chart renders only when the umbrella selects it
(global.core.provider: open5gs, the default) and serves the network
identity the umbrella declares once (global.network: the PLMN becomes the
image's MCC/MNC; the tracking areas and slices must be ones the image serves —
servedTacs, servedSst). Choosing a provider, declaring the identity and
bringing your own core: Choose and configure the 5G core
(docs/howto/core.md).
Requires
racora-base(5g-corenamespace)
No CRD dependency.
Install
Installed by the racora umbrella. Standalone (its own defaults select it):
helm install racora-core-open5gs ./cores/open5gs/chart
Values
| Key | Type | Default | Description |
|---|---|---|---|
| global.core.provider | string | "open5gs" | Selects the core provider; this chart renders nothing unless it is open5gs. Set by the umbrella (global.core.provider). |
| global.network.plmn | string | "90170" | PLMN the core serves (MCC+MNC), rendered into the image's MCC/MNC environment. Set by the umbrella (global.network.plmn). |
| global.network.tacs | list | [7] | Tracking area codes the network serves; each must be one of servedTacs. Set by the umbrella (global.network.tacs). |
| global.network.slices | list | [{"sst":1}] | Slices the network serves; each sst must be one of servedSst. Set by the umbrella (global.network.slices). |
| namespace | string | "5g-core" | Namespace the 5G core deploys into. Must already exist (racora-base creates it). |
| image.registry | string | "" | Registry prefix for the Open5GS image; empty = the umbrella's global.systemDefaultRegistry, re-rooted at render time. |
| image.repository | string | "open5gs" | Open5GS image name. |
| image.tag | string | "v0.4.6" | Open5GS image tag; pinned from open5gs in versions.yaml at bake time (built from upstream source by the ocudu repository). |
| image.pullPolicy | string | "IfNotPresent" | Image pull policy — IfNotPresent, because the images ship with the distribution. |
| replicaCount | int | 1 | Always 1: the core is a hostNetwork singleton rolled with the Recreate strategy. |
| persistence.enabled | bool | true | Keep the subscriber DB (mongodb /data/db) on a PersistentVolumeClaim so provisioned SIMs survive pod rolls and upgrades; the claim carries helm.sh/resource-policy keep. |
| persistence.size | string | "1Gi" | Size of the subscriber-DB claim. |
| persistence.storageClassName | string | "" | StorageClass for the claim; empty = the cluster default (k3s: local-path). |
| networkNameFull | string | "RACORA" | Network identity baked into Open5GS — visible to UEs via SIB1. |
| networkNameShort | string | "CNS" | Short network name shown to UEs. |
| servedTacs | list | [7,8,9] | Tracking area codes the Open5GS image serves (fixed in its open5gs-5gc.yml); global.network.tacs must be a subset. |
| servedSst | list | [1] | Slice/service types the Open5GS image serves (fixed in its configuration); every global.network.slices sst must be one of them. |
| subscriber.imsi | string | "001010123456780" | IMSI of the bootstrap subscriber seeded into the DB at start (the image's test SIM). |
| subscriber.ki | string | "00112233445566778899aabbccddeeff" | Subscriber key K (hex). |
| subscriber.opc | string | "63bfa50ee6523365ff14c1f45f88737d" | Operator key OPc (hex). |
| subscriber.amf | string | "8000" | Authentication management field (hex). |
| subscriber.qci | int | 9 | QoS class identifier of the default bearer (the image's sixth subscriber field). |
| subscriber.ip | string | "10.45.1.2" | Static UE address the core assigns this subscriber (the image's example value). The UPF hands dynamic addresses from the ueIpBase /24. |
| ueIpBase | string | "10.45.0" | UE IP allocation base. Open5GS UPF gives UEs addresses in this /24. It must lie inside the UE pool the host's egress NAT masquerades (cores/open5gs/host/egress-nat.sh: RACORA_UE_CIDR, set at install time with INSTALL_RACORA_UE_CIDR, default 10.45.0.0/16) — a pool outside it gets no internet egress. |
| upfAdvertiseIp | string | "0.0.0.0" | UPF advertise address — set to 0.0.0.0 to advertise the pod IP (resolved at runtime in the entrypoint script). |
| hostNetwork | bool | true | Open5GS uses hostNetwork so its SCTP NGAP socket binds with a real kernel SCTP source IP (NGAP termination over SCTP is finicky inside CNI bridge networks). Set false at your own risk. |
| privileged | bool | true | Privileged is required for the UPF TUN device. |
| debug | bool | false | Enable Open5GS debug logging. |
| amfNgapPort | int | 38412 | AMF SCTP port (NGAP). Standard 38412. |
| gtpuPort | int | 2152 | GTP-U port. Standard 2152. |
| resources | object | {} | Pod resources for the core container. |
| controlPlanePin | bool | true | Pin the 5G core to the control node — Racora's "first node is the brain" model keeps CU + core off DU/RF workers. controlPlanePin adds node-role.kubernetes.io/control-plane=true to the nodeSelector; the k3s platform labels its server that way (schedulable, untainted), a no-op on a single-node cluster. Platforms with tainted control planes set it false and pin with nodeSelector instead (platforms/kubernetes/values.yaml). |
| nodeSelector | object | {} | Node selector for the core pod. |
| tolerations | list | [] | Tolerations for the core pod. |
| affinity | object | {} | Affinity rules for the core pod. |
The subscriber.* values are the bootstrap subscriber the image seeds at
every start (its built-in test SIM). Real SIMs are declared to the network,
not to this chart — see the docs above.
Verify
kubectl get pods -n 5g-core
kubectl logs -n 5g-core deploy/open5gs --tail=30
# Look for: "AMF Setup ... successful" then "All NFs registered"
# CU-CP should attach to AMF (NGAP) within ~10s of cu-cp pod start:
kubectl logs -n centralized-unit deploy/cu-cp --tail=20 | grep -i "ngap\|amf"