Update a Component
A Racora release pins one image per component. Between releases you can move one
component to another version without a new release: its image is one chart value,
global.components.<name>, and the platform rolls exactly the workloads that run it. This
is the path for a new gNB release, a CU-IP fix, or a newer O1 adapter on a deployment that
otherwise stays as it is.
The Components
global.components.<name> | Image | Runs as | What rolls when you change it |
|---|---|---|---|
gnb | CNS OCUDU, the gNB | CU-CP, CU-UP and every DU | the controller (it carries the DU image), the CU-CP and the CU-UP; the controller then regenerates every DU Deployment, so every cell restarts: every cell is off air for the restart |
cuip | CU-IP, the Intelligence Plane | the cuip Deployment | CU-IP; decisions pause |
open5gs | the Open5GS core provider | the open5gs Deployment | the core; UEs re-register |
controller | racora-controller | the NRCell reconciler | the controller; nothing on air |
coreController | racora-core-controller | the Subscriber reconciler | the core controller; nothing on air |
rannP | the RANN-P forwarder | a sidecar of the CU-CP pod | the CU-CP pod: every cell restarts |
o1Adapter | the O1 adapter, an O-RU's M-plane client | the mplane sidecar of ofh DU pods | the controller; it regenerates the ofh DU Deployments, so those cells restart and their O-RUs are provisioned again |
ettusPlugin, nvidiaPlugin, fronthaulAgent | the node plugins | DaemonSets in racora-system | that DaemonSet; nothing on air |
clickhouse, tempo, otelCollector, grafana | the monitoring stack | Deployments in monitoring | that workload; telemetry on emptyDir is lost |
Each key holds repository (the image name under the registry), tag (the version) and
an optional registry. Only the field you set changes; the release's pins stay for the
rest. What is running, with the effective image of every component after your overrides,
is the release record:
kubectl -n racora-system get configmap racora-release -o yaml
Set the Version
k3s platform: one line in the HelmChartConfig
(Override Chart Values); helm-controller rolls the
workloads that run the image.
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: racora
namespace: kube-system
spec:
failurePolicy: retry
valuesContent: |-
global:
components:
gnb:
tag: v0.4.7
Apply it while no helm-install job pod is running
(kubectl -n kube-system get pods -l helmcharts.helm.cattle.io/chart=racora), keep every
other override you have in the same object, and keep failurePolicy: retry in it
(Override Chart Values).
A cluster you run: the same keys in your values file, then
the platform's command with
-f my-values.yaml, as on every run.
# my-values.yaml
global:
components:
gnb:
tag: v0.4.7
A gNB update is service-affecting: plan it as you would an upgrade (Service Impact). A component whose workloads are off air rolls without one.
Where the Image May Live
A release mirrors every pinned image into one registry namespace,
global.systemDefaultRegistry; a version a release did not pin is not there. Point the
component at the registry where its project publishes it:
global:
components:
gnb:
registry: registry.gitlab.com/cognitive-network-solutions/cns-ocudu/ocudu
tag: v0.4.7
The component's registry beats systemDefaultRegistry for that one image; every other
image keeps the release's registry. Offline deployments import the image into the nodes'
container runtime instead, under the name the release record then shows, as the install
bundle does (Use Your Own Registry or Install Offline).
Which Versions
Racora drives the interfaces the pinned component offers: for the gNB its configuration
schema and the runtime commands the controller sends the CU-CP, for the O1 adapter its
provisioning file, for the core its subscriber adapter. A version that keeps those
interfaces and adds to them is a component update, and the deployment gets the improvement;
Racora drives the new capabilities once a release adds that
(Change What a Deployment Runs). A version that
renames or removes an interface Racora drives waits for a Racora release that pins it. The
next release re-pins every component: when it ships the version you set, remove the key from
your HelmChartConfig or values file, or it keeps shadowing the release's pin.
Go Back
Set the previous tag, or remove the key to return to the release's pin. Every tag is
immutable, so the previous image is the one you ran before.