Skip to content
Snippets Groups Projects
Commit 35b69ad6 authored by Raphael Defosseux's avatar Raphael Defosseux
Browse files

Merge branch 'feat/helm-repo' into 'master'

Major Update of Helm-Charts

See merge request !114
parents 6780b364 c3601664
No related branches found
No related tags found
1 merge request!114Major Update of Helm-Charts
Showing
with 754 additions and 188 deletions
......@@ -12,8 +12,8 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
replicas: {{ .Values.replicas }}
strategy:
{{ toYaml .Values.strategy | indent 4 }}
selector:
......
......@@ -2,7 +2,9 @@
## ref: https://hub.docker.com/r/library/mysql/tags/
##
image: "docker.io/mysql"
imageTag: "8.0"
imageTag: "5.7"
replicas: 1
strategy:
type: Recreate
......@@ -97,7 +99,7 @@ livenessProbe:
failureThreshold: 3
readinessProbe:
initialDelaySeconds: 15
initialDelaySeconds: 10
periodSeconds: 15
timeoutSeconds: 5
successThreshold: 1
......
......@@ -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.0
version: v1.5.1
description: OAI 5G Release 16 Core Network
appVersion: master-v1.5.0
appVersion: develop-v1.5.1
keywords:
- 5GCN
......@@ -16,6 +16,7 @@ keywords:
- UDM
- UDR
- AUSF
# - Traffic_server
maintainers:
- name: OPENAIRINTERFACE
......@@ -29,28 +30,33 @@ dependencies:
- condition: oai-nrf.enabled
name: oai-nrf
repository: "file://../oai-nrf"
version: v1.5.0
version: v1.5.1
- condition: oai-udr.enabled
name: oai-udr
repository: "file://../oai-udr"
version: v1.5.0
version: v1.5.1
- condition: oai-udm.enabled
name: oai-udm
repository: "file://../oai-udm"
version: v1.5.0
version: v1.5.1
- condition: oai-ausf.enabled
name: oai-ausf
repository: "file://../oai-ausf"
version: v1.5.0
version: v1.5.1
- condition: oai-amf.enabled
name: oai-amf
repository: "file://../oai-amf"
version: v1.5.0
version: v1.5.1
- condition: oai-smf.enabled
name: oai-smf
repository: "file://../oai-smf"
version: v1.5.0
version: v1.5.1
- condition: oai-spgwu-tiny.enabled
name: oai-spgwu-tiny
repository: "file://../oai-spgwu-tiny"
version: v1.5.0
version: v1.5.1
#- condition: oai-traffic-server.enabled
# name: oai-traffic-server
# repository: "file://../oai-traffic-server"
# version: v1
# Parent Helm Charts for Deploying Basic OAI-5G Core Network
Basic deployment contains
1. OAI-AMF
2. OAI-SMF
3. OAI-NRF
4. OAI-UDR
5. OAI-AUSF
6. OAI-UDM
7. OAI-SPGWU-TINY
8. MYSQL (Subscriber database)
To change the configuration of any core network component you can use `values.yaml`. To change the parameters which are missing from `values.yaml` you can change them in the helm-chart of the respective network function.
If the gNB is in a different cluster or different subnet than pod subnet. Then you need to make sure AMF and SPGWU/UPF is reachable from the gNB host machine. You can use AMF and SPGWU/UPF multus interface. In SPGWU/UPF `n3Interface` should be able to reach gNB host machine/pod/container.
Once you are sure with the configuration parameters you can deploy these charts following the below steps.
1. Make sure you have [helm-spray plugin](https://github.com/ThalesGroup/helm-spray) if you don't then you can download like this
```bash
helm plugin install https://github.com/ThalesGroup/helm-spray
```
2. Perform a dependency update whenever you change anything in the sub-charts or if you have recently clone the repository.
```bash
helm dependency update
```
3. Deploy the helm-charts
```
helm spray .
```
\ No newline at end of file
......@@ -13,11 +13,14 @@ oai-nrf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-udr:
enabled: true
......@@ -25,11 +28,14 @@ oai-udr:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-udm:
enabled: true
......@@ -37,11 +43,14 @@ oai-udm:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-ausf:
enabled: true
......@@ -49,11 +58,14 @@ oai-ausf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-amf:
enabled: true
......@@ -61,35 +73,42 @@ oai-amf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
multus:
create: false
n1IPadd: "172.21.6.200"
n1Netmask: "22"
n1Gateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
n2Interface:
create: false
Ipadd: "172.21.6.94"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway:
## 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 multus creation is true then net1 else eth0
amfInterfaceNameForN11: "eth0" # Service based interface
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"
sd0: "0xFFFFFF"
# Optional upto 4 slices can be define using below template
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: '[ "NEA1" , "NEA1" , "NEA2" ]'
ciphAlgoList: '[ "NEA0" , "NEA1" , "NEA2" ]'
nodeSelector: {}
oai-spgwu-tiny:
enabled: true
......@@ -97,25 +116,54 @@ oai-spgwu-tiny:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
# create an extra interface for N3 incase the gNB is outside the cluster network or there is a need to have dedicated interface for N3
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
create: false
n3Ip: "172.21.6.201"
n3Netmask: "22"
n6Gw: "172.21.7.254"
hostInterface: "bond0"
defaultGateway: "172.21.7.254"
n3Interface:
create: false
Ipadd: "172.21.6.95"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
## 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'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
n4Interface:
create: false
Ipadd: "172.21.16.89"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.19.254"
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond1"
n6Interface:
create: false
Ipadd: "172.21.8.80"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.11.254"
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond2"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
n3If: "eth0" # net1 if gNB is outside the cluster network and multus creation is true else eth0
n4If: "eth0" # use for SMF communication
n6If: "eth0" # net1 if gNB is outside the cluster network and multus creation is true else eth0 (important because it sends the traffic towards internet)
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: 98
threadsN3Prio: 88
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"
......@@ -129,23 +177,52 @@ oai-spgwu-tiny:
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
# weight: 6
# kubernetesType: Vanilla
# trafficServer:
# repository: docker.io/oaisoftwarealliance/trf-gen-cn5g
# version: latest
# #pullPolicy: IfNotPresent or Never or Always
# pullPolicy: IfNotPresent
# #Without multus traffic server won't be able to forward packets to spgwu if can't use server then add an extra container in spgwu with iperf3 or install iperf3 package in tcpdump container
# multus:
# create: true
# IPadd: "172.21.6.99"
# Netmask: "22"
# defaultGateway: "172.21.7.254"
# hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
# config:
# ueroute: 12.1.1.0/24
# upfIpadd: 172.21.6.95
# 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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
multus:
create: false
n4IPadd: "172.21.6.98"
n4Netmask: "22"
## If you don't have a gateway leave the field empty or commented
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
imagePullSecrets:
- name: "regcred"
config:
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.13" # For IMS server if needed
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"
......
......@@ -2,10 +2,10 @@ apiVersion: v2
name: oai-5g-mini
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: v1.5.0
version: v1.5.1
description: OAI 5G Release 16 Core Network
appVersion: master-v1.5.0
appVersion: develop-v1.5.1
keywords:
- 5GCN
......@@ -26,16 +26,16 @@ dependencies:
- condition: oai-nrf.enabled
name: oai-nrf
repository: "file://../oai-nrf"
version: v1.5.0
version: v1.5.1
- condition: oai-amf.enabled
name: oai-amf
repository: "file://../oai-amf"
version: v1.5.0
version: v1.5.1
- condition: oai-smf.enabled
name: oai-smf
repository: "file://../oai-smf"
version: v1.5.0
version: v1.5.1
- condition: oai-spgwu-tiny.enabled
name: oai-spgwu-tiny
repository: "file://../oai-spgwu-tiny"
version: v1.5.0
version: v1.5.1
\ No newline at end of file
# Parent Helm Charts for Deploying Mini OAI-5G Core Network
Mini deployment contains
1. OAI-AMF
2. OAI-SMF
3. OAI-NRF
4. OAI-SPGWU-TINY
5. MYSQL (Subscriber database)
To change the configuration of any core network component you can use `values.yaml`. To change the parameters which are missing from `values.yaml` you can change them in the helm-chart of the respective network function.
If the gNB is in a different cluster or different subnet than pod subnet. Then you need to make sure AMF and SPGWU/UPF is reachable from the gNB host machine. You can use AMF and SPGWU/UPF multus interface. In SPGWU/UPF `n3Interface` should be able to reach gNB host machine/pod/container.
Once you are sure with the configuration parameters you can deploy these charts following the below steps.
1. Make sure you have [helm-spray plugin](https://github.com/ThalesGroup/helm-spray) if you don't then you can download like this
```bash
helm plugin install https://github.com/ThalesGroup/helm-spray
```
2. Perform a dependency update whenever you change anything in the sub-charts or if you have recently clone the repository.
```bash
helm dependency update
```
3. Deploy the helm-charts
```
helm spray .
```
\ No newline at end of file
......@@ -13,11 +13,14 @@ oai-nrf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-amf:
enabled: true
......@@ -25,24 +28,34 @@ oai-amf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
nodeSelector: {}
multus:
create: false
n1IPadd: "172.21.6.201"
n1Netmask: "22"
n1Gateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
n2Interface:
create: false
Ipadd: "172.21.6.94"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway:
## 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 multus creation is true then net1 else eth0
amfInterfaceNameForN11: "eth0" # Service based interface
amfInterfaceNameForNGAP: "eth0" # If oai-amf.multus.n2Interface.create is true then n2 else eth0
amfInterfaceNameForSBI: "eth0" # Service based interface
externalAusf: "no"
sst0: "1"
sd0: "0xFFFFFF"
logLevel: "debug" #allowed info/error/debug
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"
......@@ -52,7 +65,7 @@ oai-amf:
smfSelection: "yes"
useHttp2: "no"
intAlgoList: '[ "NIA1" , "NIA1" , "NIA2" ]'
ciphAlgoList: '[ "NEA1" , "NEA1" , "NEA2" ]'
ciphAlgoList: '[ "NEA0" , "NEA1" , "NEA2" ]'
mySqlServer: "mysql"
mySqlUser: "root"
mySqlPass: "linux"
......@@ -63,28 +76,57 @@ oai-spgwu-tiny:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
nodeSelector: {}
# create an extra interface for N3 incase the gNB is outside the cluster network or there is a need to have dedicated interface for N3
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
create: false
n3Ip: "172.21.6.200"
n3Netmask: "22"
n6Gw: "172.21.7.254"
hostInterface: "bond0"
defaultGateway: "172.21.7.254"
n3Interface:
create: false
Ipadd: "172.21.6.95"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
## 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'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
n4Interface:
create: false
Ipadd: "172.21.16.89"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.19.254"
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond1"
n6Interface:
create: false
Ipadd: "172.21.8.80"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.11.254"
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond2"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
n3If: "eth0" # net1 if gNB is outside the cluster network and multus creation is true else eth0
n4If: "eth0" # use for SMF communication
n6If: "eth0" # net1 if gNB is outside the cluster network and multus creation is true else eth0 (important because it sends the traffic towards internet)
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
threadsN3Ul: "1"
threadsN6Dl: "1"
threadsN6Prio: 98
threadsN3Prio: 88
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
logLevel: "info" #allowed info/error/debug
registerNRF: "yes"
nrfFqdn: "oai-nrf-svc" # make sure this can be resolved by container dns
#Mandatory to configure atlease one slice
......@@ -101,9 +143,19 @@ oai-smf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
multus:
create: false
n4IPadd: "172.21.6.98"
n4Netmask: "22"
## If you don't want to add a gateway in your pod then leave this field empty
gateway: 172.21.7.254
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
nodeSelector: {}
......@@ -113,6 +165,7 @@ oai-smf:
dnsSecIpv4Address: "172.21.3.100" # configure the dns for UE don't use Kubernetes DNS
defaultCSCFIpv4Address: "172.21.6.13" # For IMS server if needed
discoverUpf: "yes" # if NRF is used then it can be used for UPF discovery
logLevel: "debug" #allowed info/error/debug
# You can define maximum 4 slices from here in case of more please change the configuration file.
dnnNi0: "oai"
pdusessiontype0: "IPv4"
......
apiVersion: v2
name: oai-5g-slicing
appVersion: master-v1.4.0
version: v1.5.1
appVersion: develop-v1.5.1
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
description: OAI 5G Release 16 Core Network
type: application
version: v1.4.0
appVersion: v1.4.0
keywords:
- 5GCN
- SLICING
......@@ -34,32 +31,32 @@ dependencies:
- condition: oai-nssf.enabled
name: oai-nssf
repository: "file://../oai-nssf"
version: v1.4.0
version: v1.5.1
- condition: oai-nrf.enabled
name: oai-nrf
repository: "file://../oai-nrf"
version: v1.4.0
version: v1.5.1
- condition: oai-udr.enabled
name: oai-udr
repository: "file://../oai-udr"
version: v1.4.0
version: v1.5.1
- condition: oai-udm.enabled
name: oai-udm
repository: "file://../oai-udm"
version: v1.4.0
version: v1.5.1
- condition: oai-ausf.enabled
name: oai-ausf
repository: "file://../oai-ausf"
version: v1.4.0
version: v1.5.1
- condition: oai-amf.enabled
name: oai-amf
repository: "file://../oai-amf"
version: v1.4.0
version: v1.5.1
- condition: oai-smf.enabled
name: oai-smf
repository: "file://../oai-smf"
version: v1.4.0
version: v1.5.1
- condition: oai-spgwu-tiny.enabled
name: oai-spgwu-tiny
repository: "file://../oai-spgwu-tiny"
version: v1.4.0
version: v1.5.1
# Parent Helm Charts for Deploying Slicing OAI-5G Core Network (Includes NSSF)
Slicing deployment contains
1. OAI-AMF
2. OAI-SMF
3. OAI-NRF
4. OAI-UDR
5. OAI-AUSF
6. OAI-UDM
7. OAI-NSSF
8. OAI-SPGWU-TINY
9. MYSQL (Subscriber database)
To change the configuration of any core network component you can use `values.yaml`. To change the parameters which are missing from `values.yaml` you can change them in the helm-chart of the respective network function.
Once you are sure with the configuration parameters you can deploy these charts following the below steps.
You can read this [tutorial](../../../docs/DEPLOY_SA5G_SLICING.md) on how to use NSSF with multiple instances of SMF/UPF but it is for docker-compose
1. Make sure you have [helm-spray plugin](https://github.com/ThalesGroup/helm-spray) if you don't then you can download like this
```bash
helm plugin install https://github.com/ThalesGroup/helm-spray
```
2. Perform a dependency update whenever you change anything in the sub-charts or if you have recently clone the repository.
```bash
helm dependency update
```
3. Deploy the helm-charts
```
helm spray .
```
\ No newline at end of file
......@@ -13,11 +13,14 @@ oai-nssf:
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-nssf ## The image will be pulled from dockerhub
version: v1.5.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
imagePullSecrets:
- name: "regcred"
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-nrf:
enabled: true
......@@ -25,11 +28,14 @@ oai-nrf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-udr:
enabled: true
......@@ -37,11 +43,14 @@ oai-udr:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-udm:
enabled: true
......@@ -49,11 +58,14 @@ oai-udm:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-ausf:
enabled: true
......@@ -61,11 +73,14 @@ oai-ausf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
config:
logLevel: "debug" #allowed info/error/debug
nodeSelector: {}
oai-amf:
enabled: true
......@@ -73,20 +88,27 @@ oai-amf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
multus:
create: false
n1IPadd: "172.21.6.201"
n1Netmask: "22"
n1Gateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
n2Interface:
create: false
Ipadd: "172.21.6.94"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway:
## 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 multus creation is true then net1 else eth0
amfInterfaceNameForN11: "eth0" # Service based interface
amfInterfaceNameForNGAP: "eth0" # If oai-amf.multus.n2Interface.create is true then n2 else eth0
amfInterfaceNameForSBI: "eth0" # Service based interface
externalAusf: "yes"
externalNssf: "yes"
nrfSelection: "yes"
......@@ -95,10 +117,11 @@ oai-amf:
useHttp2: "no"
nssfFqdn: "oai-nssf-svc"
nrfSelection: "yes"
# Mandatory
sst0: "1"
sd0: "0xFFFFFF"
# Optional upto 4 slices can be define using below template
logLevel: "debug" #allowed info/error/debug
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"
......@@ -113,21 +136,50 @@ oai-spgwu-tiny:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## 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
imagePullSecrets:
- name: "regcred"
# create an extra interface for N3 incase the gNB is outside the cluster network or there is a need to have dedicated interface for N3
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
create: false
n3Ip: "172.21.6.200"
n3Netmask: "22"
n6Gw: "172.21.7.254"
hostInterface: "bond0"
defaultGateway: "172.21.7.254"
n3Interface:
create: false
Ipadd: "172.21.6.95"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
## 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'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
n4Interface:
create: false
Ipadd: "172.21.16.89"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.19.254"
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond1"
n6Interface:
create: false
Ipadd: "172.21.8.80"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway: "172.21.11.254"
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond2"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
n3If: "eth0" # net1 if gNB is outside the cluster network and multus creation is true else eth0
n4If: "eth0" # use for SMF communication
n6If: "eth0" # net1 if gNB is outside the cluster network and multus creation is true else eth0 (important because it sends the traffic towards internet)
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: 98
......@@ -152,9 +204,16 @@ oai-smf:
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.0 ## The branch to be used to pull from dockerhub
version: v1.5.1 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
multus:
create: false
n4IPadd: "172.21.6.98"
n4Netmask: "22"
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
config:
......@@ -165,6 +224,7 @@ oai-smf:
defaultCSCFIpv4Address: "172.21.6.200" # 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.
logLevel: "debug" #allowed info/error/debug
dnnNi0: "oai"
pdusessiontype0: "IPv4"
ipv4dnnRange0: "12.1.1.2 - 12.1.1.40"
......
......@@ -26,9 +26,9 @@ type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: v1.5.0
version: v1.5.1
appVersion: v1.5.0
appVersion: develop-v1.5.1
keywords:
- 5GCN
......@@ -41,4 +41,4 @@ sources:
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org
email: contact@openairinterface.org
\ No newline at end of file
# Helm Chart for OAI Access and Mobility Function (AMF)
The helm-chart is tested on [Minikube](https://minikube.sigs.k8s.io/docs/) and [Red Hat Openshift](https://www.redhat.com/fr/technologies/cloud-computing/openshift) 4.10 and 4.12. There are no special resource requirements for AMF.
**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.
## 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.
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)
5. Service account
6. 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
└── values.yaml (Parent file contains all the configurable parameters)
```
## Parameters
[Values.yaml](./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.n2IPadd |IPV4 |NA |
|multus.n2Netmask |Netmask |NA |
|multus.defaultGateway |IPV4 |Default route inside container (optional)|
|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
|Parameter |Allowed Values |Remark |
|---------------------------------|-------------------------------|----------------------------------------------|
|start.amf |true/false |If true amf 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:
1. [oai-5g-basic](../oai-5g-basic/README.md) for basic deployment of OAI-5G Core
2. [oai-5g-mini](../oai-5g-mini/README.md) for mini deployment (AMF, SMF, NRF, UPF) of OAI-5G Core. In this type of deployment AMF plays the role of AUSF and UDR
3. [oai-5g-slicing](../oai-5g-slicing/README.md) for basic deployment with NSSF extra
## Note
1. 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.
2. If you are using tcpdump container to take pcaps automatically (`start.tcpdump` is true) you can enable `persistent.sharedvolume` and [presistent volume](./oai-nrf/values.yaml) in NRF. To store the pcaps of all the NFs in one location. It is to ease the automated collection of pcaps.
\ No newline at end of file
......@@ -10,6 +10,7 @@ data:
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)
......
......@@ -15,12 +15,18 @@ spec:
metadata:
labels:
{{- include "oai-amf.selectorLabels" . | nindent 8 }}
{{- if .Values.multus.create }}
{{- if .Values.multus.n2Interface.create }}
annotations:
k8s.v1.cni.cncf.io/networks: >-
[{
"name": "{{ .Chart.Name }}-n2-net1",
"default-route": ["{{ .Values.multus.n2Gateway }}"]
"name": "{{ .Chart.Name }}-n2",
"interface": "n2"
{{- if .Values.multus.defaultGateway }}
,"default-route": ["{{ .Values.multus.defaultGateway }}"]
{{- end }}
{{- if .Values.multus.n2Interface.Gateway }}
,"gateway": "{{ .Values.multus.n2Interface.Gateway }}"
{{- end }}
}]
{{- end }}
spec:
......@@ -31,35 +37,44 @@ spec:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
{{- end }}
containers:
{{- if .Values.includeTcpDumpContainer }}
- name: tcpdump
image: "{{ .Values.tcpdumpimage.repository }}:{{ .Values.tcpdumpimage.version }}"
imagePullPolicy: {{ .Values.tcpdumpimage.pullPolicy }}
{{- if .Values.resources.define}}
resources:
requests:
memory: {{ .Values.resources.tcpdump.requests.memory | quote }}
cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }}
memory: {{ .Values.resources.requests.tcpdump.memory | quote }}
cpu: {{ .Values.resources.requests.tcpdump.cpu | quote }}
limits:
memory: {{ .Values.resources.tcpdump.limits.memory | quote }}
cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }}
memory: {{ .Values.resources.limits.tcpdump.memory | quote }}
cpu: {{ .Values.resources.limits.tcpdump.cpu | quote }}
{{- end}}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
privileged: true
capabilities:
add:
- NET_ADMIN
drop:
- ALL
{{- if .Values.start.tcpdump}}
command:
- /bin/sh
- -c
- /usr/sbin/tcpdump -i any -w /pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap
- /usr/sbin/tcpdump -i any -w /tmp/pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap
{{- else}}
command:
- /bin/sleep
- infinity
{{- end}}
{{- if .Values.includeTcpDumpContainer}}
{{- if .Values.persistent.sharedvolume}}
volumeMounts:
- mountPath: "/pcap"
name: cn5g-pv
- mountPath: "/tmp/pcap"
name: cn5g-pvc
{{- end}}
{{- end}}
{{- end }}
- name: amf
image: "{{ .Values.nfimage.repository }}:{{ .Values.nfimage.version }}"
imagePullPolicy: {{ .Values.nfimage.pullPolicy }}
......@@ -69,14 +84,12 @@ spec:
{{- if .Values.resources.define}}
resources:
requests:
memory: {{ .Values.resources.nf.requests.memory | quote }}
cpu: {{ .Values.resources.nf.requests.cpu | quote }}
memory: {{ .Values.resources.requests.nf.memory | quote }}
cpu: {{ .Values.resources.requests.nf.cpu | quote }}
limits:
memory: {{ .Values.resources.nf.limits.memory | quote }}
cpu: {{ .Values.resources.nf.limits.cpu | quote }}
memory: {{ .Values.resources.limits.nf.memory | quote }}
cpu: {{ .Values.resources.limits.nf.cpu | quote }}
{{- end}}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
{{- if .Values.readinessProbe}}
readinessProbe:
exec:
......@@ -84,7 +97,7 @@ spec:
- /bin/bash
- /openair-amf/bin/healthcheck.sh
initialDelaySeconds: 2
periodSeconds: 3
periodSeconds: 5
{{- end}}
{{- if .Values.livenessProbe}}
livenessProbe:
......@@ -117,11 +130,13 @@ spec:
- infinity
{{- end}}
volumes:
{{- if .Values.includeTcpDumpContainer}}
{{- if .Values.persistent.sharedvolume}}
- name: cn5g-pv
- name: cn5g-pvc
persistentVolumeClaim:
claimName: cn5g-pvc
{{- end }}
{{- end }}
- configMap:
name: {{ .Chart.Name }}-configmap
name: configuration
......
---
{{- if .Values.multus.create }}
{{- if .Values.multus.n2Interface.create }}
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-n2-net1
name: {{ .Chart.Name }}-n2
spec:
config: '{
"cniVersion": "0.3.0",
config: '{
"cniVersion": "0.3.1",
"type": "macvlan",
"master": {{- cat .Values.multus.hostInterface | nospace | quote }},
"master": {{- cat .Values.multus.n2Interface.hostInterface | nospace | quote }},
"mode": "bridge",
"ipam": {
"type": "static",
"addresses": [
{
"address": {{- cat .Values.multus.n2IPadd "/" .Values.multus.n2Netmask | nospace | quote }}
"address": {{- cat .Values.multus.n2Interface.Ipadd "/" .Values.multus.n2Interface.Netmask | nospace | quote }}
}
]
{{- if .Values.multus.n2Interface.routes }}
,"routes": {{- .Values.multus.n2Interface.routes | toJson }}
{{- end }}
}
}'
{{- end }}
---
\ No newline at end of file
......@@ -7,8 +7,13 @@ metadata:
rules:
- apiGroups:
- security.openshift.io
{{- if .Values.includeTcpDumpContainer }}
resourceNames:
- privileged
{{- else }}
resourceNames:
- anyuid
{{- end }}
resources:
- securitycontextconstraints
verbs:
......@@ -26,4 +31,4 @@ roleRef:
kind: Role
name: {{ .Chart.Name }}-{{ .Release.Namespace }}-role
apiGroup: rbac.authorization.k8s.io
{{- end }}
\ No newline at end of file
{{- end }}
kubernetesType: Vanilla #Vanilla for community kubernetes distribution
kubernetesType: Vanilla #Vanilla for community kubernetes distribution else Openshift for Openshift
## In case of using these charts on Openshift then please use UBI images
## To know more about them follow this tutorial https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/tree/master/openshift
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.0 #image tag, develop tag for experimental features
version: develop #image tag, develop tag for experimental features
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
tcpdumpimage:
repository: docker.io/corfr/tcpdump
version: latest
#pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
## good to use when pulling images from docker-hub mention
imagePullSecrets:
- name: "regcred"
......@@ -24,20 +20,10 @@ serviceAccount:
name: "oai-amf-sa"
#service type is fixed to clusterIP, it is only support for non multus interface (eth0)
## OPENSHIFT terminology
podSecurityContext:
runAsUser: 0
runAsGroup: 0
## OPENSHIFT terminology
securityContext:
privileged: false
start:
amf: true
tcpdump: false # WARNING: start tcpdump collection to analyse but beware it will take a lot of space in the container/persistent volume
# AMF needs two seperate interface one for http (for SBI) and other one for SCTP (N1/N2) to communicate with gNB.
# But for experimentation only one interface can be used.
# When you need multus:
......@@ -45,70 +31,98 @@ start:
# 2. Your gnB is outside the cluster and the host machine can communicate but pods can not then you can provide ip-address in the same range as your host machine
# 3. You want static ip-address for N1/N2 interface, Namf can be discovered by its service name
## Change these ip-addresses according to your environment
multus:
create: false
n2IPadd: "172.21.10.6"
n2Netmask: "22"
n2Gateway: "172.21.11.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
## 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.
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
n2Interface:
create: false
Ipadd: "172.21.6.94"
Netmask: "22"
## If you do not have a gateway leave the field empty
Gateway:
## 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
## 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"
sd0: "0xFFFFFF"
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"
amfInterfaceNameForNGAP: "eth0" # If multus creation is true then net1 else eth0
amfInterfaceNameForSBI: "eth0" # Service based interface
amfInterfaceSBIHTTPPort: 80 # Service based interface
amfInterfaceSBIHTTP2Port: 8080 # Service based interface
smfFqdn: "oai-smf-svc"
nrfFqdn: "oai-nrf-svc" # amf communicates using FQDN
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"
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: '[ "NEA1" , "NEA1" , "NEA2" ]'
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
includeTcpDumpContainer: false #If true it will add a tcpdump container inside network function pod for debugging
## For openshift you can use rhel8/support-tools:8.7-13
tcpdumpimage:
repository: docker.io/corfr/tcpdump
version: latest
#pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
#To store PCAP of NF in a sharedVolume so it can be easily fetched (PVC is created with NRF charts so make sure in NRF it is true)
persistent:
sharedvolume: false
volumneName: managed-nfs-storage
size: 1Gi
## NF is the network function and tcpdump is the tcpdump container.
## To know more about request and limit it is better to understand that how Kubernetes QoS works.
## https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
## https://kubernetes.io/docs/concepts/workloads/pods/pod-qos
resources:
define: false
limits:
tcpdump:
cpu: 100m
memory: 128Mi
nf:
cpu: 100m
memory: 128Mi
requests:
#If tcpdump container is disabled this value will not be used
tcpdump:
cpu: 100m
memory: 128Mi
requests:
nf:
cpu: 100m
memory: 128Mi
#If tcpdump container is disabled this value will not be used
tcpdump:
cpu: 100m
memory: 128Mi
readinessProbe: true
......@@ -118,4 +132,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.0
version: v1.5.1
appVersion: v1.5.0
appVersion: develop-v1.5.1
keywords:
- 5GCN
......
# Helm Chart for OAI Authentication Server Function (AUSF)
The helm-chart is tested on [Minikube](https://minikube.sigs.k8s.io/docs/) and [Red Hat Openshift](https://www.redhat.com/fr/technologies/cloud-computing/openshift) 4.10 and 4.12. There are no special resource requirements for AUSF.
## Introduction
OAI-AUSF follows 3GPP release 16, more information about the feature set can be found on [AUSFs WiKi page](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-ausf/-/wikis/home). The source code be downloaded from [GitLab](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-ausf)
OAI [Jenkins Platform](https://jenkins-oai.eurecom.fr/job/OAI-CN5G-AUSF/) 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.
The helm chart of OAI-AUSF 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)
5. Service account
The directory structure
```
├── Chart.yaml
├── README.md
├── templates
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── NOTES.txt
│ ├── rbac.yaml
│ ├── serviceaccount.yaml
│ └── service.yaml
└── values.yaml (Parent file contains all the configurable parameters)
```
## Parameters
[Values.yaml](./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 |
## Advanced Debugging Parameters
Only needed if you are doing advanced debugging
|Parameter |Allowed Values |Remark |
|---------------------------------|-------------------------------|----------------------------------------------|
|start.ausf |true/false |If true ausf 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:
1. [oai-5g-basic](../oai-5g-basic/README.md) for basic deployment of OAI-5G Core
2. [oai-5g-slicing](../oai-5g-slicing/README.md) for basic deployment with NSSF extra
## Note
1. If you are using tcpdump container to take pcaps automatically (`start.tcpdump` is true) you can enable `persistent.sharedvolume` and [presistent volume](./oai-nrf/values.yaml) in NRF. To store the pcaps of all the NFs in one location. It is to ease the automated collection of pcaps.
\ 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