-
Sagar Arora authoredSagar Arora authored
Helm Chart for OAI Session Management Function (SMF)
The helm-chart is tested on Minikube and Red Hat Openshift 4.10, 4.12 and 4.13. There are no special resource requirements for SMF.
NOTE: All the extra interfaces/multus interfaces created inside the pod are using macvlan
mode. If your environment does not allow using macvlan
then you need to change the multus definition.
Disclaimer
Starting version 2.0.0 of OAI 5G Core network functions their configuration will be in config.yaml
and all infrastructure related information including image definition will be in values.yaml
.
Introduction
OAI-SMF follows 3GPP release 16, more information about the feature set can be found on SMFs WiKi page. The source code be downloaded from GitLab
OAI Jenkins Platform publishes every develop
and master
branch image of OAI-SMF on docker-hub with tag develop
and latest
respectively. Apart from that you can find tags for every release VX.X.X
. We only publish Ubuntu 18.04/20.04/22.04 images. We do not publish RedHat/UBI images. These images you have to build from the source code on your RedHat systems or Openshift Platform. You can follow this tutorial for that.
The helm chart of OAI-SMF creates multiples Kubernetes resources,
- Service
- Role Base Access Control (RBAC) (role and role bindings)
- Deployment
- Configmap (Contains the mounted configuration file for SMF)
- Service account
- Network-attachment-definition (Optional only when multus is used)
The directory structure
├── Chart.yaml
├── README.md
├── templates
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── multus.yaml
│ ├── NOTES.txt
│ ├── rbac.yaml
│ ├── serviceaccount.yaml
│ └── service.yaml
├── config.yaml (Configuration of the network function)
└── values.yaml (Parent file contains all the configurable parameters)
Parameters
Values.yaml contains all the configurable parameters. Below table defines the configurable parameters.
Parameter | Allowed Values | Remark |
---|---|---|
kubernetesType | Vanilla/Openshift | Vanilla Kubernetes or Openshift |
nfimage.repository | Image Name | |
nfimage.version | Image tag | |
nfimage.pullPolicy | IfNotPresent or Never or Always | |
imagePullSecrets.name | String | Good to use for docker hub |
serviceAccount.create | true/false | |
serviceAccount.annotations | String | |
serviceAccount.name | String | |
podSecurityContext.runAsUser | Integer (0,65534) | Mandatory to use 0 |
podSecurityContext.runAsGroup | Integer (0,65534) | Mandatory to use 0 |
multus.create | true/false | default false |
multus.n4Interface.create | true/false | |
multus.n4Interface.Ipadd | Ip-Address | |
multus.n4Interface.Netmask | Netmask | |
multus.n4Interface.Gateway | Ip-Address | |
multus.n4Interface.routes | Json | Routes if you want to add in your pod |
multus.n4Interface.hostInterface | host interface | Host interface on which pod will run |
multus.defaultGateway | Ip-Address | Default route inside pod |
Advanced Debugging Parameters
Only needed if you are doing advanced debugging
Parameter | Allowed Values | Remark |
---|---|---|
start.smf | true/false | If true smf container will go in sleep mode |
start.tcpdump | true/false | If true tcpdump container will go in sleepmode |
includeTcpDumpContainer | true/false | If false no tcpdump container will be there |
tcpdumpimage.repository | Image Name | |
tcpdumpimage.version | Image tag | |
tcpdumpimage.pullPolicy | IfNotPresent or Never or Always | |
persistent.sharedvolume | true/false | Save the pcaps in a shared volume with NRF |
resources.define | true/false | |
resources.limits.tcpdump.cpu | string | Unit m for milicpu or cpu |
resources.limits.tcpdump.memory | string | Unit Mi/Gi/MB/GB |
resources.limits.nf.cpu | string | Unit m for milicpu or cpu |
resources.limits.nf.memory | string | Unit Mi/Gi/MB/GB |
resources.requests.tcpdump.cpu | string | Unit m for milicpu or cpu |
resources.requests.tcpdump.memory | string | Unit Mi/Gi/MB/GB |
resources.requests.nf.cpu | string | Unit m for milicpu or cpu |
resources.requests.nf.memory | string | Unit Mi/Gi/MB/GB |
readinessProbe | true/false | default true |
livenessProbe | true/false | default false |
terminationGracePeriodSeconds | 5 | In seconds (default 5) |
nodeSelector | Node label | |
nodeName | Node Name |
Installation
Better to use the parent charts from:
- oai-5g-basic for basic deployment of OAI-5G Core
- oai-5g-mini for mini deployment (AMF, SMF, NRF, UPF) of OAI-5G Core. In this type of deployment AMF plays the role of AUSF and UDR
- oai-5g-advance for basic deployment with NSSF extra
Note
- If you are using multus then make sure it is properly configured and if you don't have a gateway for your multus interface then avoid using gateway and defaultGateway parameter. Either comment them or leave them empty. Wrong gateway configuration can create issues with pod networking and pod will not be able to resolve service names.
- If you are using tcpdump container to take pcaps automatically (
start.tcpdump
is true) you can enablepersistent.sharedvolume
and presistent volume in NRF. To store the pcaps of all the NFs in one location. It is to ease the automated collection of pcaps.