Skip to main content

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-core namespace)

No CRD dependency.

Install​

Installed by the racora umbrella. Standalone (its own defaults select it):

helm install racora-core-open5gs ./cores/open5gs/chart

Values​

KeyTypeDefaultDescription
global.core.providerstring"open5gs"Selects the core provider; this chart renders nothing unless it is open5gs. Set by the umbrella (global.core.provider).
global.network.plmnstring"90170"PLMN the core serves (MCC+MNC), rendered into the image's MCC/MNC environment. Set by the umbrella (global.network.plmn).
global.network.tacslist[7]Tracking area codes the network serves; each must be one of servedTacs. Set by the umbrella (global.network.tacs).
global.network.sliceslist[{"sst":1}]Slices the network serves; each sst must be one of servedSst. Set by the umbrella (global.network.slices).
namespacestring"5g-core"Namespace the 5G core deploys into. Must already exist (racora-base creates it).
image.registrystring""Registry prefix for the Open5GS image; empty = the umbrella's global.systemDefaultRegistry, re-rooted at render time.
image.repositorystring"open5gs"Open5GS image name.
image.tagstring"v0.4.6"Open5GS image tag; pinned from open5gs in versions.yaml at bake time (built from upstream source by the ocudu repository).
image.pullPolicystring"IfNotPresent"Image pull policy — IfNotPresent, because the images ship with the distribution.
replicaCountint1Always 1: the core is a hostNetwork singleton rolled with the Recreate strategy.
persistence.enabledbooltrueKeep 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.sizestring"1Gi"Size of the subscriber-DB claim.
persistence.storageClassNamestring""StorageClass for the claim; empty = the cluster default (k3s: local-path).
networkNameFullstring"RACORA"Network identity baked into Open5GS — visible to UEs via SIB1.
networkNameShortstring"CNS"Short network name shown to UEs.
servedTacslist[7,8,9]Tracking area codes the Open5GS image serves (fixed in its open5gs-5gc.yml); global.network.tacs must be a subset.
servedSstlist[1]Slice/service types the Open5GS image serves (fixed in its configuration); every global.network.slices sst must be one of them.
subscriber.imsistring"001010123456780"IMSI of the bootstrap subscriber seeded into the DB at start (the image's test SIM).
subscriber.kistring"00112233445566778899aabbccddeeff"Subscriber key K (hex).
subscriber.opcstring"63bfa50ee6523365ff14c1f45f88737d"Operator key OPc (hex).
subscriber.amfstring"8000"Authentication management field (hex).
subscriber.qciint9QoS class identifier of the default bearer (the image's sixth subscriber field).
subscriber.ipstring"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.
ueIpBasestring"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.
upfAdvertiseIpstring"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).
hostNetworkbooltrueOpen5GS 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.
privilegedbooltruePrivileged is required for the UPF TUN device.
debugboolfalseEnable Open5GS debug logging.
amfNgapPortint38412AMF SCTP port (NGAP). Standard 38412.
gtpuPortint2152GTP-U port. Standard 2152.
resourcesobject{}Pod resources for the core container.
controlPlanePinbooltruePin 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).
nodeSelectorobject{}Node selector for the core pod.
tolerationslist[]Tolerations for the core pod.
affinityobject{}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"