Upgrade, Scaling and Geo-Redundant HSS⚓︎
This page covers the day-two operation of an xRouter installation: upgrading the release, scaling the functions, running the HSS database across regions, and uninstalling.
Upgrade⚓︎
helm repo update
helm upgrade xrouter expeto/xrouter -n xrouter -f values.yaml \
--set imageCredentials.username='<username>' \
--set imageCredentials.password='<password>' \
--set imageCredentials.email='user@example.com' \
--set agent.connections.apiToken='<site API token>'
The values file is yours: it holds every setting of the installation, lives in version control,
and is passed on every upgrade together with the secrets, exactly as at install time. Anything it
does not mention takes the chart's default for the new release. If no values file is kept,
helm upgrade xrouter expeto/xrouter -n xrouter --reuse-values carries the current release's
values forward, secrets included.
The release rolls each function's pods one at a time. Database migrations for the HSS and the SMF
run before the new pods start. Pin a chart version with --version when you need to control
exactly what is installed, and render with helm template first on a production installation.
Important
Keep every setting in values.yaml. A change made with kubectl edit or kubectl scale is
reverted by the next helm upgrade.
From release 3.3.22 the monitoring subchart installs and upgrades the Prometheus Operator's
CustomResourceDefinitions. The first upgrade after an installation of 3.3.22 or later, and the
upgrade from an earlier release to 3.3.22, stops before changing anything and prints the command
that lets Helm adopt them: run that one upgrade with --take-ownership and
--set global.crds.ignoreOwnershipCheck=true added to the command above. It needs Helm 3.17 or
later; later upgrades need neither.
Scaling⚓︎
Every function accepts a replica count or a Horizontal Pod Autoscaler, globally or per function:
replicaSet: 2 # default for every function
upf:
statefulsets:
dataplane:
replicaSet: 4 # user plane throughput
smf:
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 6
When autoscaling is enabled for a function its replicaSet is ignored. The user plane scales
linearly with dataplane replicas; the control plane and the HSS are sized for subscribers and
transaction rate. The sizing guide gives the node figures.
The session table of the user plane is set with nfcm.dataNetwork.numSessions; size it for the
expected concurrent sessions before go-live.
Geo-redundant HSS⚓︎
The HSS stores subscribers in MariaDB Galera. Two or more installations in different regions can share one Galera cluster spanning all of them, so every HSS answers from the same subscriber data and a region can be lost without losing authentication.
The chart's examples/geo-redundant-hss.yaml is the reference. In outline, each installation:
- runs its own MariaDB Galera StatefulSet for the HSS (
hss.galeracluster), with TLS between the nodes; - publishes the Galera replication ports (group communication, incremental and full state transfer) as NodePorts, three per node;
- lists every other installation's database node under
replication.clusterNodeswith those ports, and resolves their names throughhostAliases; - carries a
replication.segmentnumber per region so Galera prefers local replication.
A two-region cluster needs a third voter to avoid a split brain: run a Galera arbitrator at a third location. Agree the segment layout, addresses and certificates with Expeto Support before the first install; the topology is set when the databases are created.
Uninstall⚓︎
helm uninstall xrouter -n xrouter
kubectl -n xrouter get pvc
Helm leaves the PersistentVolumeClaims of MariaDB and Redis and the expeto-seed Secret in place.
Delete the claims only when the subscriber data is no longer needed; keep the seed Secret if the
release is to be reinstalled with the same credentials.