Skip to content
Snippets Groups Projects
Commit dc391e3a authored by Sagar Arora's avatar Sagar Arora :bicyclist_tone1:
Browse files

Basic structure for the new helm-charts

- removed the use of helm-spray
- removed the charts of spgwu, replaced with oai-upf
- updated the charts of all nf except nssf
parent f7fdb1db
No related branches found
No related tags found
1 merge request!144chore(ci): Updating helm-charts for release 2
Showing
with 460 additions and 464 deletions
......@@ -2,10 +2,10 @@ apiVersion: v2
name: oai-5g-basic
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: v1.5.1
version: v2.0.0
description: OAI 5G Release 16 Core Network
appVersion: develop-v1.5.1
appVersion: v2.0.0
keywords:
- 5GCN
......@@ -30,31 +30,31 @@ dependencies:
- condition: oai-nrf.enabled
name: oai-nrf
repository: "file://../oai-nrf"
version: v1.5.1
version: v2.0.0
- condition: oai-udr.enabled
name: oai-udr
repository: "file://../oai-udr"
version: v1.5.1
version: v2.0.0
- condition: oai-udm.enabled
name: oai-udm
repository: "file://../oai-udm"
version: v1.5.1
version: v2.0.0
- condition: oai-ausf.enabled
name: oai-ausf
repository: "file://../oai-ausf"
version: v1.5.1
version: v2.0.0
- condition: oai-amf.enabled
name: oai-amf
repository: "file://../oai-amf"
version: v1.5.1
version: v2.0.0
- condition: oai-smf.enabled
name: oai-smf
repository: "file://../oai-smf"
version: v1.5.1
- condition: oai-spgwu-tiny.enabled
name: oai-spgwu-tiny
repository: "file://../oai-spgwu-tiny"
version: v1.5.1
version: v2.0.0
- condition: oai-upf.enabled
name: oai-upf
repository: "file://../oai-upf"
version: v2.0.0
#- condition: oai-traffic-server.enabled
# name: oai-traffic-server
# repository: "file://../oai-traffic-server"
......
############# Common configuration
# Log level for all the NFs
log_level:
general: debug
# If you enable registration, the other NFs will use the NRF discovery mechanism
register_nf:
general: yes
http_version: 2
## general single_nssai configuration
## Defines YAML anchors, which are reused in the config file
snssais:
- &embb_slice1
sst: 1
- &embb_slice2
sst: 1
sd: FFFFFF # in hex
############## SBI Interfaces
### Each NF takes its local SBI interfaces and remote interfaces from here, unless it gets them using NRF discovery mechanisms
nfs:
amf:
host: oai-amf
sbi:
port: 80
api_version: v1
interface_name: eth0
n2:
interface_name: eth0
port: 38412
smf:
host: oai-smf
sbi:
port: 80
api_version: v1
interface_name: eth0
n4:
interface_name: eth0
port: 80
upf:
host: oai-upf
sbi:
port: 80
api_version: v1
interface_name: eth0
n3:
interface_name: eth0
port: 2152
n4:
interface_name: eth0
port: 8805
n6:
interface_name: eth0
n9:
interface_name: eth0
port: 2152
udm:
host: oai-udm
sbi:
port: 80
api_version: v1
interface_name: eth0
udr:
host: oai-udr
sbi:
port: 80
api_version: v1
interface_name: eth0
ausf:
host: oai-ausf
sbi:
port: 80
api_version: v1
interface_name: eth0
nrf:
host: oai-nrf
sbi:
port: 80
api_version: v1
interface_name: eth0
#### Common for UDR and AMF
database:
host: oai-5g-basic-mysql
user: test
type: mysql
password: test
database_name: oai_db
generate_random: true
connection_timeout: 300 # seconds
############## NF-specific configuration
amf:
amf_name: "OAI-AMF"
# This really depends on if we want to keep the "mini" version or not
support_features_options:
enable_simple_scenario: no # "no" by default with the normal deployment scenarios with AMF/SMF/UPF/AUSF/UDM/UDR/NRF.
# set it to "yes" to use with the minimalist deployment scenario (including only AMF/SMF/UPF) by using the internal AUSF/UDM implemented inside AMF.
# There's no NRF in this scenario, SMF info is taken from "nfs" section.
enable_nssf: no
enable_smf_selection: yes
relative_capacity: 30
statistics_timer_interval: 20 # in seconds
emergency_support: false
served_guami_list:
- mcc: 001
mnc: 01
amf_region_id: 01
amf_set_id: 001
amf_pointer: 01
plmn_support_list:
- mcc: 001
mnc: 01
tac: 0x0001
nssai:
- *embb_slice1
- *embb_slice2
supported_integrity_algorithms:
- "NIA1"
- "NIA2"
supported_encryption_algorithms:
- "NEA0"
- "NEA1"
- "NEA2"
smf:
ue_mtu: 1500
support_features:
use_local_subscription_info: yes # Use infos from local_subscription_info or from UDM
use_local_pcc_rules: yes # Use infos from local_pcc_rules or from PCF
# we resolve from NRF, this is just to configure usage_reporting
upfs:
- host: oai-spgwu
config:
enable_usage_reporting: no
ue_dns:
primary_ipv4: "10.3.2.200"
primary_ipv6: "2001:4860:4860::8888"
secondary_ipv4: "8.8.8.8"
secondary_ipv6: "2001:4860:4860::8888"
ims:
pcscf_ipv4: "192.168.70.139"
pcscf_ipv6: "fe80::7915:f408:1787:db8b"
# the DNN you configure here should be configured in "dnns"
# follows the SmfInfo datatype from 3GPP TS 29.510
smf_info:
sNssaiSmfInfoList:
- sNssai: *embb_slice1
dnnSmfInfoList:
- dnn: "oai"
- sNssai: *embb_slice2
dnnSmfInfoList:
- dnn: "ims"
local_subscription_infos:
- single_nssai: *embb_slice1
dnn: "oai"
qos_profile:
5qi: 5
session_ambr_ul: "200Mbps"
session_ambr_dl: "400Mbps"
- single_nssai: *embb_slice2
dnn: "ims"
qos_profile:
5qi: 2
session_ambr_ul: "100Mbps"
session_ambr_dl: "200Mbps"
upf:
support_features:
enable_bpf_datapath: no # If "on": BPF is used as datapath else simpleswitch is used, DEFAULT= off
enable_snat: yes # If "on": Source natting is done for UE, DEFAULT= off
remote_n6_gw: localhost # Dummy host since simple-switch does not use N6 GW
upf_info:
- sst: 1
sd: 0xFFFFFF
dnnList:
- dnn: oai
- sst: 1
sd: 0x000001
dnnList:
- dnn: ims
## DNN configuration
dnns:
- dnn: "oai"
pdu_session_type: "IPV4"
ipv4_subnet: "12.1.1.128/25"
- dnn: "ims"
pdu_session_type: "IPV4V6"
ipv4_subnet: "14.1.1.2/24"
\ No newline at end of file
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.Name }}
data:
{{ (.Files.Glob "config.yaml").AsConfig | indent 2 | trim }}
\ No newline at end of file
global:
nfConfigurationConfigMap: oai-5g-basic
mysql:
enabled: true
weight: 0
imagePullPolicy: IfNotPresent
oai5gdatabase: basic
imagePullSecrets:
......@@ -9,11 +10,10 @@ mysql:
enabled: false
oai-nrf:
enabled: true
weight: 0
kubernetesType: Vanilla #Openshift/Vanilla Vanilla for Upstream Kubernetes
nfimage: # image name either locally present or in a public/private repository
repository: docker.io/oaisoftwarealliance/oai-nrf ## The image will be pulled from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
version: develop ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
......@@ -24,11 +24,10 @@ oai-nrf:
nodeSelector: {}
oai-udr:
enabled: true
weight: 1
kubernetesType: Vanilla #Openshift/Vanilla Vanilla for Upstream Kubernetes
nfimage: # image name either locally present or in a public/private repository
repository: docker.io/oaisoftwarealliance/oai-udr ## The image will be pulled from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
version: develop ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
......@@ -39,11 +38,10 @@ oai-udr:
nodeSelector: {}
oai-udm:
enabled: true
weight: 2
kubernetesType: Vanilla #Openshift/Vanilla Vanilla for Upstream Kubernetes
nfimage: # image name either locally present or in a public/private repository
repository: docker.io/oaisoftwarealliance/oai-udm ## The image will be pulled from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
version: develop ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
......@@ -54,11 +52,10 @@ oai-udm:
nodeSelector: {}
oai-ausf:
enabled: true
weight: 3
kubernetesType: Vanilla #Openshift/Vanilla Vanilla for Upstream Kubernetes
nfimage: # image name either locally present or in a public/private repository
repository: docker.io/oaisoftwarealliance/oai-ausf ## The image will be pulled from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
version: develop ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
......@@ -69,11 +66,10 @@ oai-ausf:
nodeSelector: {}
oai-amf:
enabled: true
weight: 4
kubernetesType: Vanilla #Openshift/Vanilla Vanilla for Upstream Kubernetes
nfimage: # image name either locally present or in a public/private repository
repository: docker.io/oaisoftwarealliance/oai-amf ## The image will be pulled from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
version: develop ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
......@@ -93,34 +89,13 @@ oai-amf:
## If you do not want to add any routes in your pod then leave this field empty
routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
amfInterfaceNameForNGAP: "eth0" # If oai-amf.multus.n2Interface.create is true then n2 else eth0
amfInterfaceNameForSBI: "eth0" # Service based interface
externalAusf: "yes"
logLevel: "debug" #allowed info/error/debug
# Mandatory
sst0: "1" ## 1 slice/SST is mandatory
sd0: "0xFFFFFF" ## Optional 0xFFFFFF means no SD as per 3GPP
## Can add upto 3 more slices. More than that you can do it in the configmap of amf templates/configmap.yaml
# Note only SST is mandatory for a slice SD is optional
sst1: "1"
sd1: "1"
mcc: "001"
mnc: "01"
tac: "0x0001"
nfRegistration: "yes"
smfSelection: "no" #Bug in SMF can not have SMF selection when using UDR to fetch user-information
useHttp2: "no"
intAlgoList: '[ "NIA1" , "NIA1" , "NIA2" ]'
ciphAlgoList: '[ "NEA0" , "NEA1" , "NEA2" ]'
nodeSelector: {}
oai-spgwu-tiny:
oai-upf:
enabled: true
weight: 5
kubernetesType: Vanilla #Openshift/Vanilla Vanilla for Upstream Kubernetes
nfimage: # image name either locally present or in a public/private repository
repository: docker.io/oaisoftwarealliance/oai-spgwu-tiny ## The image will be pulled from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
repository: docker.io/oaisoftwarealliance/oai-upf ## The image will be pulled from dockerhub
version: develop ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
......@@ -167,27 +142,6 @@ oai-spgwu-tiny:
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
n3If: "eth0" # n3 if multus.n3Interface.create is true
n4If: "eth0" # n4 if multus.n4Interface.create is true
n6If: "eth0" # n6 multus.n6Interface.create is true
logLevel: "info" #allowed info/error/debug
threadsN3Ul: "1"
threadsN6Dl: "1"
threadsN6Prio: 99
threadsN3Prio: 98
threadsN4Prio: 88
netUeIp: "12.1.1.0/24" # The range in which UE ip-address will be allocated should be configured the same in SMF
registerNRF: "yes"
nrfFqdn: "oai-nrf-svc" # make sure this can be resolved by container dns
#Mandatory to configure atlease one slice
nssaiSst0: 1 # should match with SMF information
nssaiSd0: "0xFFFFFF" # should match with SMF information (Optional, if removed sd value will be 0xFFFFFF)
dnn0: "oai" # should match with SMF information
#Upto 4 slices can be added from here to add more you need to add manullay in config.yaml. Please follow the same way of adding slices nssaiSST$,nssaiSd$,dnn$ ($=0,1,2,3)
nssaiSst1: 1 # should match with SMF information (Optional, if removed slice will not be configured)
nssaiSd1: "0xFFFFFF" # should match with SMF information (Optional, if removed sd value will be 0xFFFFFF only if nssaiSst1 is configured)
dnn1: "ims" # should match with SMF information
nodeSelector: {}
#oai-traffic-server:
# enabled: false
......@@ -211,11 +165,10 @@ oai-spgwu-tiny:
# noOfIperf3Server: 10
oai-smf:
enabled: true
weight: 6
kubernetesType: Vanilla #Openshift/Vanilla Vanilla for Upstream Kubernetes
nfimage: # image name either locally present or in a public/private repository
repository: docker.io/oaisoftwarealliance/oai-smf ## The image will be pulled from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
version: develop ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
......@@ -234,32 +187,4 @@ oai-smf:
nodeSelector: {}
imagePullSecrets:
- name: "regcred"
config:
smfInterfaceNameForN4: "eth0" # if multus.n4Interface.create is true then n4 else eth0
smfInterfaceNameForSBI: "eth0"
useLocalSubscriptionInfo: "no" #this means ip-address information will be fetched from UDR
ueMtu: 1500
logLevel: "debug" #allowed info/error/debug
dnsIpv4Address: "172.21.3.100" # configure the dns for UE don't use Kubernetes DNS
dnsSecIpv4Address: "172.21.3.100" # configure the dns for UE don't use Kubernetes DNS
defaultCSCFIpv4Address: "172.21.6.96" # For IMS server if needed
discoverUpf: "yes" # if NRF is used then it can be used for UPF discovery
# You can define maximum 4 slices from here in case of more please change the configuration file.
dnnNi0: "oai"
pdusessiontype0: "IPv4"
ipv4dnnRange0: "12.1.1.2 - 12.1.1.254"
nssaiSst0: 1
nssaiSd0: "0xFFFFFF"
qosProfile5qi0: 2
sessionAmbrUl0: "1000Mbps"
sessionAmbrDl0: "1000Mbps"
# Extra optional slice
dnnNi1: "ims"
pdusessiontype1: "IPv4v6"
ipv4dnnRange1: "12.2.1.2 - 12.2.1.254"
nssaiSst1: 1
nssaiSd1: "0xFFFFFF"
qosProfile5qi1: 1
sessionAmbrUl1: "1000Mbps"
sessionAmbrDl1: "1000Mbps"
nodeSelector: {}
......@@ -26,9 +26,9 @@ type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: v1.5.1
version: v2.0.0
appVersion: develop-v1.5.1
appVersion: v2.0.0
keywords:
- 5GCN
......
......@@ -4,18 +4,22 @@ The helm-chart is tested on [Minikube](https://minikube.sigs.k8s.io/docs/) and [
**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 definations.
## Disclaimer
Starting version 2.0.0 of OAI 5G Core network functions their configuration will be in `config.yaml` and all infrastructure related information include image defination will be in `values.yaml`.
## Introduction
OAI-AMF follows 3GPP release 16, more information about the feature set can be found on [AMFs WiKi page](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-amf/-/wikis/home). The source code be downloaded from [GitLab](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-amf)
OAI [Jenkins Platform](https://jenkins-oai.eurecom.fr/job/OAI-CN5G-AMF/) publishes every `develop` and `master` branch image of OAI-AMF on [docker-hub](https://hub.docker.com/r/oaisoftwarealliance/oai-amf) 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](../../../openshift/README.md) for that.
OAI [Jenkins Platform](https://jenkins-oai.eurecom.fr/job/OAI-CN5G-AMF/) publishes every `develop` and `master` branch image of OAI-AMF on [docker-hub](https://hub.docker.com/r/oaisoftwarealliance/oai-amf) with tag `develop` and `latest` respectively. Apart from that you can find tags for every release `VX.X.X`. We only publish Ubuntu 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](../../../openshift/README.md) for that.
The helm chart of OAI-AMF creates multiples Kubernetes resources,
1. Service
2. Role Base Access Control (RBAC) (role and role bindings)
3. Deployment
4. Configmap (Contains the configuration file for AMF)
4. Configmap (Contains the mounted copy of AMF Configuration file)
5. Service account
6. Network-attachment-definition (Optional only when multus is used)
......@@ -33,7 +37,9 @@ The directory structure
│ ├── rbac.yaml
│ ├── serviceaccount.yaml
│ └── service.yaml
├── config.yaml (Configuration of the network function)
└── values.yaml (Parent file contains all the configurable parameters)
```
## Parameters
......@@ -51,6 +57,8 @@ The directory structure
|serviceAccount.create |true/false | |
|serviceAccount.annotations |String | |
|serviceAccount.name |String | |
|exposedPorts.sctp |Integer |SCTP port to be exposed |
|exposedPorts.http |Integer |HTTP port to be exposed |
|podSecurityContext.runAsUser |Integer (0,65534) |Mandatory to use 0 |
|podSecurityContext.runAsGroup|Integer (0,65534) |Mandatory to use 0 |
|multus.create |true/false |default false |
......@@ -60,37 +68,6 @@ The directory structure
|multus.hostInterface |HostInterface Name |NA |
### Configuration parameter
|Parameter |Mandatory/Optional |Remark |
|-------------------------------|----------------------------|--------------------------------------------|
|config.mcc |Mandatory |Mobile Country Code |
|config.mnc |Mandatory |Mobile Network Code |
|config.regionId |Mandatory |Region ID |
|config.amfSetId |Mandatory |AMF SetID |
|config.logLevel |Optional |Default info, select info/debug/error |
|config.tac |Hexadecimal/Mandatory |Tracking aread code |
|config.sst0 |Integer 1-256/Mandatory |Slice Service Type 0 |
|config.sd0 |Integer/Hexadecimal/Optional| |
|config.sst1 |Optional | |
|config.sd1 |Optional | |
|config.amfInterfaceNameForNGAP |eth0/net1/Mandatory |net1 when multus is used |
|config.amfInterfaceNameForSBI |eth0/Mandatory | |
|config.amfInterfaceSBIHTTPPort |Integer/Mandatory |Standard port 80 |
|config.amfInterfaceSBIHTTP2Port|Integer/Mandatory |8080 if 80 is already inused |
|config.smfFqdn |Mandatory |SMF ip-address/FQDN |
|config.nrfFqdn |Mandatory |NRF ip-address/FQDN |
|config.ausfFqdn |Mandatory |AUSF ip-address/FQDN |
|config.nfRegistration |Mandatory |yes/no |
|config.nrfSelection |Optional |yes/no |
|config.smfSelection |Mandatory |It helps in selecting the SMF via NRF |
|config.externalAusf |Mandatory |Always yes when using AUSF |
|config.useHttp2 |Mandatory (yes/no) |if using HTTP/2 change the port for HTTP/1.1|
|config.mySqlServer |Optional |if not using AUSF |
|config.mySqlUser |Optional |if not using AUSF |
|config.externalNssf |Optional |if not using AUSF |
|config.mySqlPass |Optional |if not using AUSF |
## Advanced Debugging Parameters
Only needed if you are doing advanced debugging
......
# OAI CN Configuration File
### This file can be used by all OAI NFs
### Some fields are specific to an NF and will be ignored by other NFs
## NOTE ON YAML ANCHORS ##
# We use YAML anchors to ease the configuration and to avoid duplicating parts of the configuration.
# This is especially true for the SNSSAIs, as we have to define them for multiple NFs.
# Please note that the use of anchors is not mandatory, and you can define the SNSSAI in each NF yourself.
# You can read more about anchors here: https://yaml.org/spec/1.2.2/#anchors-and-aliases
############# Common configuration
# Log level
log_level:
general: debug
# If you enable registration, the NF will use the NRF discovery mechanism
register_nf:
general: yes
http_version: 2 # allowed value 1 and 2, make sure all NFs use the same HTTP version
## general single_nssai configuration
## Defines YAML anchors, which are reused in the config file
## only hex values are supported for sst
snssais:
- &embb_slice1
sst: 1
- &embb_slice2
sst: 1
sd: 000001
############## SBI Interfaces
### Each NF takes its local SBI interfaces and remote interfaces from here, unless it gets them using NRF discovery mechanisms
nfs:
amf:
host: oai-amf
sbi:
port: 80
api_version: v1
interface_name: eth0
n2:
interface_name: eth0
port: 38412
smf:
host: oai-smf
sbi:
port: 80
api_version: v1
ausf:
host: oai-ausf
sbi:
port: 80
api_version: v1
nrf:
host: oai-nrf
sbi:
port: 80
api_version: v1
nssf:
host: oai-nssf
sbi:
port: 80
api_version: v1
#### Only if using mini deployment of core network
database:
host: mysql
user: test
type: mysql
password: test
database_name: oai_db
generate_random: true
connection_timeout: 300 # seconds
############## NF-specific configuration
amf:
amf_name: "OAI-AMF"
# This really depends on if we want to keep the "mini" version or not
support_features_options:
enable_simple_scenario: no # "no" by default with the normal deployment scenarios with AMF/SMF/UPF/AUSF/UDM/UDR/NRF.
# set it to "yes" to use with the minimalist deployment scenario (including only AMF/SMF/UPF) by using the internal AUSF/UDM implemented inside AMF.
# There's no NRF in this scenario, SMF info is taken from "nfs" section.
enable_nssf: no
enable_smf_selection: yes
relative_capacity: 30
statistics_timer_interval: 20 # in seconds
emergency_support: false
served_guami_list:
- mcc: 001
mnc: 01
amf_region_id: 01
amf_set_id: 001
amf_pointer: 01
plmn_support_list:
- mcc: 001
mnc: 01
tac: 0x0001
nssai:
- *embb_slice1
- *embb_slice2
supported_integrity_algorithms:
- "NIA0"
- "NIA1"
- "NIA2"
supported_encryption_algorithms:
- "NEA0"
- "NEA1"
- "NEA2"
\ No newline at end of file
{{- if not .Values.global }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.Name }}-configmap
data:
amf.conf: |
AMF =
{
INSTANCE_ID = 0 ; # 0 is the default
PID_DIRECTORY = "/var/run"; # /var/run is the default
AMF_NAME = "OAI-AMF";
LOG_LEVEL = "{{ .Values.config.logLevel }}";
RELATIVE_CAPACITY = 30;
# Display statistics about whole system (in seconds)
STATISTICS_TIMER_INTERVAL = 20;
CORE_CONFIGURATION:
{
EMERGENCY_SUPPORT = "false";
};
GUAMI:
{
MCC = "{{ .Values.config.mcc }}"; MNC = "{{ .Values.config.mnc }}"; RegionID = "{{ .Values.config.regionId }}"; AMFSetID = "{{ .Values.config.amfSetId }}"; AMFPointer = "0"
}
SERVED_GUAMI_LIST = (
{MCC = "{{ .Values.config.mcc }}"; MNC = "{{ .Values.config.mnc }}"; RegionID = "{{ .Values.config.regionId }}"; AMFSetID = "{{ .Values.config.amfSetId }}"; AMFPointer = "0"}
#48bits <MCC><MNC><RegionID><AMFSetID><AMFPointer>
);
PLMN_SUPPORT_LIST = ({
MCC = "{{ .Values.config.mcc }}"; MNC = "{{ .Values.config.mnc }}"; TAC = {{ .Values.config.tac }};
SLICE_SUPPORT_LIST = (
{SST = {{ .Values.config.sst0 }}; SD = "{{ if .Values.config.sd0 }}{{ .Values.config.sd0 }}{{ else }}0xFFFFFF{{ end }}"}
{{ if .Values.config.sst1}},{SST = {{ .Values.config.sst1 }}; SD = "{{ if .Values.config.sd1 }}{{ .Values.config.sd1 }}{{ else }}0xFFFFFF{{ end }}"}{{ end }}
{{ if .Values.config.sst2}},{SST = {{ .Values.config.sst2 }}; SD = "{{ if .Values.config.sd2 }}{{ .Values.config.sd2 }}{{ else }}0xFFFFFF{{ end }}"}{{ end }}
{{ if .Values.config.sst2}},{SST = {{ .Values.config.sst2 }}; SD = "{{ if .Values.config.sd2 }}{{ .Values.config.sd2 }}{{ else }}0xFFFFFF{{ end }}"}{{ end }}
)
});
INTERFACES:
{
# AMF binded interface for N1/N2 interface (NGAP)
NGAP_AMF:
{
INTERFACE_NAME = "{{ .Values.config.amfInterfaceNameForNGAP }}";
IPV4_ADDRESS = "read";
PORT = 38412;
PPID = 60;
};
# AMF binded interface for SBI (N11 (SMF)/N12 (AUSF), etc.)
SBI:
{
INTERFACE_NAME = "{{ .Values.config.amfInterfaceNameForSBI }}";
IPV4_ADDRESS = "read";
PORT = {{ .Values.config.amfInterfaceSBIHTTPPort }};
API_VERSION = "v1";
HTTP2_PORT = {{ .Values.config.amfInterfaceSBIHTTP2Port }};
SMF_INSTANCES_POOL = (
{SMF_INSTANCE_ID = 1; IPV4_ADDRESS = "{{ if .Values.config.smfIpAddress }}{{ .Values.config.smfIpAddress }}{{ else }}127.0.0.1{{ end }}";
PORT = "80"; HTTP2_PORT = 8080, VERSION = "{{ if .Values.config.smfApiVersion }}{{ .Values.config.smfApiVersion }}{{ else }}v1{{ end }}";
FQDN = "{{ if .Values.config.smfFqdn }}{{ .Values.config.smfFqdn }}{{ else }}localhost{{ end }}", SELECTED = "true"}
);
};
NRF :
{
IPV4_ADDRESS = "{{ if .Values.config.nrfIpAddress }}{{ .Values.config.nrfIpAddress }}{{ else }}127.0.0.1{{ end }}";
PORT = {{ if .Values.config.nrfPort }}{{ .Values.config.nrfPort }}{{ else }}80{{ end }}; # Default: 80
API_VERSION = "{{ if .Values.config.nrfApiVersion }}{{ .Values.config.nrfApiVersion }}{{ else }}v1{{ end }}";
FQDN = "{{ if .Values.config.nrfFqdn }}{{ .Values.config.nrfFqdn }}{{ else }}localhost{{ end }}"
};
AUSF :
{
IPV4_ADDRESS = "{{ if .Values.config.ausfIpAddress }}{{ .Values.config.ausfIpAddress }}{{ else }}127.0.0.1{{ end }}";
PORT = {{ if .Values.config.ausfPort }}{{ .Values.config.ausfPort }}{{ else }}80{{ end }}; # Default: 80
API_VERSION = "{{ if .Values.config.ausfApiVersion }}{{ .Values.config.ausfApiVersion }}{{ else }}v1{{ end }}";
FQDN = "{{ if .Values.config.ausfFqdn }}{{ .Values.config.ausfFqdn }}{{ else }}localhost{{ end }}"
};
UDM :
{
IPV4_ADDRESS = "{{ if .Values.config.udmIpAddress }}{{ .Values.config.udmIpAddress }}{{ else }}127.0.0.1{{ end }}";
PORT = {{ if .Values.config.udmPort }}{{ .Values.config.udmPort }}{{ else }}80{{ end }}; # Default: 80
API_VERSION = "{{ if .Values.config.udmApiVersion }}{{ .Values.config.udmApiVersion }}{{ else }}v2{{ end }}";
FQDN = "{{ if .Values.config.udmFqdn }}{{ .Values.config.udmFqdn }}{{ else }}localhost{{ end }}"
};
NSSF :
{
IPV4_ADDRESS = "{{ if .Values.config.nssfIpAddress }}{{ .Values.config.nssfIpAddress }}{{ else }}127.0.0.1{{ end }}";
PORT = {{ if .Values.config.nssfPort }}{{ .Values.config.nssfPort }}{{ else }}80{{ end }}; # Default: 80
API_VERSION = "{{ if .Values.config.nssApiVersion }}{{ .Values.config.nssApiVersion }}{{ else }}v1{{ end }}";
FQDN = "{{ if .Values.config.nssfFqdn }}{{ .Values.config.nssfFqdn }}{{ else }}localhost{{ end }}"
};
};
SUPPORT_FEATURES:
{
# STRING, {"yes", "no"},
NF_REGISTRATION = "{{ .Values.config.nfRegistration }}"; # Set to yes if AMF registers to an NRF
NRF_SELECTION = "{{ .Values.config.nrfSelection }}"; # Set to yes to enable NRF discovery and selection
EXTERNAL_NRF = "{{ .Values.config.externalNrf }}"; # Set to yes if AMF works with an external NRF
SMF_SELECTION = "{{ .Values.config.smfSelection }}"; # Set to yes to enable SMF discovery and selection
EXTERNAL_AUSF = "{{ .Values.config.externalAusf }}"; # Set to yes if AMF works with an external AUSF
EXTERNAL_UDM = "{{ .Values.config.externalUdm }}"; # Set to yes if AMF works with an external UDM
EXTERNAL_NSSF = "{{ .Values.config.externalNssf }}"; # Set to yes if AMF works with an external NSSF
USE_FQDN_DNS = "yes"; # Set to yes if AMF relies on a DNS to resolve NRF/SMF/UDM/AUSF's FQDN
USE_HTTP2 = "{{ .Values.config.useHttp2 }}"; # Set to yes to enable HTTP2 for AMF server
}
AUTHENTICATION:
{
## MySQL mandatory options
MYSQL_server = "{{ if .Values.config.mySqlServer }}{{ .Values.config.mySqlServer }}{{ else }}mysql{{ end }}"; # MySQL Server address
MYSQL_user = "{{ if .Values.config.mySqlUser }}{{ .Values.config.mySqlUser }}{{ else }}linux{{ end }}"; # Database server login
MYSQL_pass = "{{ if .Values.config.mySqlPass }}{{ .Values.config.mySqlPass }}{{ else }}root{{ end }}"; # Database server password
MYSQL_db = "{{ if .Values.config.mySqlDb }}{{ .Values.config.mySqlDb }}{{ else }}oai_db{{ end }}"; # Your database name
RANDOM = "true";
};
NAS:
{
ORDERED_SUPPORTED_INTEGRITY_ALGORITHM_LIST = {{ .Values.config.intAlgoList }} ;
ORDERED_SUPPORTED_CIPHERING_ALGORITHM_LIST = {{ .Values.config.ciphAlgoList }} ;
};
};
MODULES =
{
NGAP_MESSAGE = (
{MSG_NAME = "NGSetupRequest"; ProcedureCode = 21; TypeOfMessage = "initialMessage"}
);
};
\ No newline at end of file
{{ (.Files.Glob "config.yaml").AsConfig | indent 2 | trim }}
{{- end }}
\ No newline at end of file
......@@ -109,21 +109,18 @@ spec:
periodSeconds: 5
{{- end}}
ports:
- containerPort: 38412
- containerPort: {{ .Values.exposedPorts.sctp }}
name: oai-amf
protocol: SCTP
- containerPort: {{ .Values.config.amfInterfaceSBIHTTPPort }}
name: http1
protocol: TCP
- containerPort: {{ .Values.config.amfInterfaceSBIHTTP2Port }}
name: http2
- containerPort: {{ .Values.exposedPorts.sbi }}
name: http
protocol: TCP
{{- if .Values.start.amf}}
command:
- /openair-amf/bin/oai_amf
- -c
- /openair-amf/etc/amf.conf
- -o
# command:
# - /openair-amf/bin/oai_amf
# - -c
# - /openair-amf/etc/conf.yaml
# - -o
{{- else}}
command:
- /bin/sleep
......@@ -138,7 +135,11 @@ spec:
{{- end }}
{{- end }}
- configMap:
{{- if .Values.global }}
name: {{ .Values.global.nfConfigurationConfigMap }}
{{- else }}
name: {{ .Chart.Name }}-configmap
{{- end }}
name: configuration
dnsPolicy: ClusterFirst
restartPolicy: Always
......
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}-svc
name: {{ .Chart.Name }}
labels:
{{- include "oai-amf.labels" . | nindent 4 }}
spec:
type: ClusterIP
clusterIP: None
#clusterIP: None
ports:
- name: http1
port: {{ .Values.config.amfInterfaceSBIHTTPPort }}
targetPort: {{ .Values.config.amfInterfaceSBIHTTPPort }}
protocol: TCP
- name: http2
port: {{ .Values.config.amfInterfaceSBIHTTP2Port }}
targetPort: {{ .Values.config.amfInterfaceSBIHTTP2Port }}
- name: http
port: {{ .Values.exposedPorts.sbi }}
targetPort: {{ .Values.exposedPorts.sbi }}
protocol: TCP
selector:
{{- include "oai-amf.selectorLabels" . | nindent 4 }}
\ No newline at end of file
......@@ -8,7 +8,7 @@ nfimage: # image name either locally present or in a public/private repository
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
## good to use when pulling images from docker-hub mention
## good to use when pulling images from docker-hub mention
imagePullSecrets:
- name: "regcred"
......@@ -19,6 +19,10 @@ serviceAccount:
annotations: {}
name: "oai-amf-sa"
exposedPorts:
sctp: 38412
sbi: 80
#service type is fixed to clusterIP, it is only support for non multus interface (eth0)
podSecurityContext:
runAsUser: 0
......@@ -47,43 +51,8 @@ multus:
## Incase the pod is not able to resolve the FQDN of other network
## functions example nrf then you can disable useFqdnDns feature this way AMF will talk to other network functions using their ip-address.
config:
logLevel: "debug" #info/debug/error
amfInterfaceNameForNGAP: "eth0" # If multus.n2Interface.create is true then n2 else eth0
amfInterfaceNameForSBI: "eth0" # Service based interface
amfInterfaceSBIHTTPPort: 80 # Service based interface
amfInterfaceSBIHTTP2Port: 8080 # Service based interface
mcc: "001"
mnc: "01"
regionId: "128"
amfSetId: "1"
tac: "0x0001"
sst0: "1" ## 1 slice/SST is mandatory
sd0: "0xFFFFFF" ## Optional 0xFFFFFF means no SD as per 3GPP
## Can add upto 3 more slices. More than that you can do it in the configmap of amf templates/configmap.yaml
# Note only SST is mandatory for a slice SD is optional
sst1: "1"
sd1: "1"
smfFqdn: "oai-smf-svc" # amf communicates using FQDN/Service Name
nrfFqdn: "oai-nrf-svc" # amf communicates using FQDN/Service Name
ausfFqdn: "oai-ausf-svc" #only needed if ausf is used and externalAusf is true else internal ausf will be used
nfRegistration: "yes"
nrfSelection: "no"
smfSelection: "yes"
externalAusf: "yes" #Ausf will be used instead of using internal AUSF for mini deployment
externalUdm: "no"
externalNrf: "no"
externalNssf: "no"
useHttp2: "no"
intAlgoList: '[ "NIA1" , "NIA1" , "NIA2" ]'
ciphAlgoList: '[ "NEA0" , "NEA1" , "NEA2" ]'
mySqlServer: "mysql" # OPTIONAL: used only if not using AUSF
mySqlUser: "root" # OPTIONAL: used only if not using AUSF
mySqlPass: "linux" # OPTIONAL: used only if not using AUSF
mySqlDb: "oai_db" # OPTIONAL: used only if not using AUSF
## Debugging section
start:
amf: true #If false the network function container will run in sleep mode for manually testing
tcpdump: false
......@@ -132,4 +101,4 @@ terminationGracePeriodSeconds: 5
nodeSelector: {}
nodeName:
nodeName:
\ No newline at end of file
......@@ -26,9 +26,9 @@ type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: v1.5.1
version: v2.0.0
appVersion: develop-v1.5.1
appVersion: v2.0.0
keywords:
- 5GCN
......
############# Common configuration
# Log level
log_level:
general: debug
# If you enable registration, the NF will use the NRF discovery mechanism
register_nf:
general: yes
http_version: 2 # allowed value 1 and 2, make sure all NFs use the same HTTP version
############## SBI Interfaces
### Each NF takes its local SBI interfaces and remote interfaces from here, unless it gets them using NRF discovery mechanisms
nfs:
ausf:
host: oai-ausf
sbi:
port: 80
api_version: v1
interface_name: eth0
udm:
host: oai-udm
sbi:
port: 80
api_version: v1
nrf:
host: oai-nrf
sbi:
port: 80
api_version: v1
############## NF-specific configuration
ausf:
ausf_name: "OAI-AUSF"
\ No newline at end of file
{{- if not .Values.global }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.Name }}-configmap
data:
{{- range $key, $val := .Values.config }}
{{ $key }}: {{ $val | quote }}
{{- end }}
{{ (.Files.Glob "config.yaml").AsConfig | indent 2 | trim }}
{{- end }}
\ No newline at end of file
......@@ -63,6 +63,9 @@ spec:
{{- end }}
- name: ausf
image: "{{ .Values.nfimage.repository }}:{{ .Values.nfimage.version }}"
volumeMounts:
- mountPath: /openair-ausf/etc
name: configuration
imagePullPolicy: {{ .Values.nfimage.pullPolicy }}
{{- if .Values.resources.define}}
resources:
......@@ -92,116 +95,30 @@ spec:
periodSeconds: 5
{{- end}}
ports:
- containerPort: {{ .Values.config.sbiPortHttp1 }}
name: http1
- containerPort: {{ .Values.config.sbiPortHttp2 }}
name: http2
- containerPort: {{ .Values.exposedPorts.sbi }}
name: http
{{- if .Values.start.ausf}}
{{- else}}
command:
- /bin/sleep
- infinity
{{- end}}
env:
- name: TZ
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: tz
- name: INSTANCE_ID
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: instanceId
- name: PID_DIR
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: pidDirectory
- name: AUSF_NAME
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: ausfName
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: logLevel
- name: SBI_IF_NAME
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: sbiIfName
- name: SBI_PORT
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: sbiPortHttp1
- name: SBI_HTTP2_PORT
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: sbiPortHttp2
- name: USE_HTTP2
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: useHttp2
- name: USE_FQDN_DNS
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: useFqdnDns
- name: UDM_IP_ADDRESS
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: udmIpAddress
- name: UDM_PORT
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: udmPort
- name: UDM_VERSION_NB
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: udmVersionNb
- name: UDM_FQDN
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: udmFqdn
- name: NRF_IP_ADDRESS
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: nrfIpAddress
- name: NRF_PORT
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: nrfPort
- name: NRF_API_VERSION
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: nrfApiVersion
- name: NRF_FQDN
valueFrom:
configMapKeyRef:
name: {{ .Chart.Name }}-configmap
key: nrfFqdn
{{- if .Values.start.ausf}}
{{- else}}
command:
- /bin/sleep
- infinity
{{- end}}
volumes:
- configMap:
{{- if .Values.global }}
name: {{ .Values.global.nfConfigurationConfigMap }}
{{- else }}
name: {{ .Chart.Name }}-configmap
{{- end }}
name: configuration
{{- if .Values.includeTcpDumpContainer}}
{{- if .Values.persistent.sharedvolume}}
volumes:
- name: cn5g-pvc
persistentVolumeClaim:
claimName: cn5g-pvc
......
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}-svc
name: {{ .Chart.Name }}
labels:
{{- include "oai-ausf.labels" . | nindent 4 }}
spec:
type: ClusterIP
clusterIP: None
#clusterIP: None
ports:
- name: http1
- name: http
# Port accessible outside cluster
port: {{ .Values.config.sbiPortHttp1 }}
port: {{ .Values.exposedPorts.sbi }}
# Port to forward to inside the pod
targetPort: {{ .Values.config.sbiPortHttp1 }}
protocol: TCP
- name: htt2
# Port accessible outside cluster
port: {{ .Values.config.sbiPortHttp2 }}
# Port to forward to inside the pod
targetPort: {{ .Values.config.sbiPortHttp2 }}
targetPort: {{ .Values.exposedPorts.sbi }}
protocol: TCP
selector:
{{- include "oai-ausf.selectorLabels" . | nindent 4 }}
......@@ -21,33 +21,15 @@ serviceAccount:
# If not set and create is true, a name is generated using the fullname template
name: "oai-ausf-sa"
exposedPorts:
sbi: 80
#service type is fixed to clusterIP, it is only support for non multus interface (eth0)
podSecurityContext:
runAsUser: 0
runAsGroup: 0
config:
tz: "Europe/Paris"
instanceId: "0"
pidDirectory: "/var/run"
logLevel: "debug"
ausfName: "OAI_AUSF"
sbiIfName: "eth0"
sbiPortHttp1: "80"
sbiPortHttp2: "8080"
useHttp2: "no" #If set to yes then HTTP2 will be used to talk to every other network function and HTTP server will be started
useFqdnDns: "yes"
udmIpAddress: "127.0.0.1"
udmPort: "80"
udmVersionNb: "v1"
udmFqdn: "oai-udm-svc"
nrfIpAddress: "127.0.0.1"
nrfPort: "80"
nrfApiVersion: "v1"
nrfFqdn: "oai-nrf-svc"
registerNrf: "no"
## Debugging section
start:
ausf: true #If false the network function container will run in sleep mode for manually testing
......@@ -98,4 +80,4 @@ terminationGracePeriodSeconds: 5
nodeSelector: {}
nodeName:
nodeName:
\ No newline at end of file
......@@ -26,9 +26,9 @@ type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: v1.5.1
version: v2.0.0
appVersion: develop-v1.5.1
appVersion: v2.0.0
keywords:
- 5GCN
......
......@@ -13,7 +13,7 @@ The helm chart of OAI-NRF creates multiples Kubernetes resources,
1. Service
2. Role Base Access Control (RBAC) (role and role bindings)
3. Deployment
4. Configmap
4. Configmap (Contains mounted configuration file of NRF)
5. Service account
6. PVC (optional only when enabled): It is used for saving pcaps.
......@@ -30,6 +30,7 @@ The directory structure
│ ├── rbac.yaml
│ ├── serviceaccount.yaml
│ └── service.yaml
├── config.yaml (Configuration of the network function)
└── values.yaml
1 directory, 10 files
......
############# Common configuration
# Log level
log_level:
general: debug
# If you enable registration, the NF will use the NRF discovery mechanism
register_nf:
general: yes
http_version: 2 # allowed value 1 and 2, make sure all NFs use the same HTTP version
############## SBI Interfaces
### Each NF takes its local SBI interfaces and remote interfaces from here, unless it gets them using NRF discovery mechanisms
nfs:
nrf:
host: oai-nrf
sbi:
port: 80
api_version: v1
interface_name: eth0
############## NF-specific configuration
nrf:
nrf_name: "OAI-NRF"
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment