Loading oka/apps/oai-5g-core/README.md 0 → 100644 +67 −0 Original line number Diff line number Diff line # OAI 5G Core OKA - OSM Kubernetes Application ## Description OKA to deploy OAI 5G Core (NRF, AMF, SMF, UPF, UDM, AUSF, UDR, NSSF, PCF) via GitOps/Flux. ## Structure ``` oai-5g-core/ ├── manifests/ │ ├── gitlab-oci-repo.yaml # HelmRepository → GitLab OCI │ ├── oai-5g-core-hr.yaml # HelmRelease │ └── oai-5g-core-values-cm.yaml # ConfigMap con valores ├── templates/ │ ├── oai-5g-core-ns.yaml # Namespace │ └── oai-5g-core-ks.yaml # Kustomization ├── oai-5g-core-params.yaml # Parametros default └── README.md ``` ## Parametros | Parametro | Default | Descripcion | |-----------|---------|-------------| | namespace | oai-5g-basic | Namespace destino | | MCC | 001 | Mobile Country Code | | MNC | 01 | Mobile Network Code | | TAC | 0x0001 | Tracking Area Code | | SLICE_SD_DEC | 16777215 | Slice SD (decimal, FFFFFF hex) | | SLICE_SD_HEX | FFFFFF | Slice SD (formato hex para smf_info) | | DNN | oai | Data Network Name | | UE_IP_POOL | 12.1.1.0/24 | Pool IPs UE | | UE_IP_ROUTE | 12.1.1.0/24 | Ruta trafico UPF | | UE_IMSI | 001010000000100 | IMSI para IMS | | IMS_USER_NAME | test-user | Nombre usuario IMS | | RELEASE_NAME | oai-5g-basic | Nombre Helm release | | CHART_VERSION | 2.2.0 | Version del chart OAI | | DEPLOY_LMF | true | Desplegar LMF | | DEPLOY_TRAFFIC_SERVER | true | Desplegar generador trafico | | DEPLOY_IMS | false | Desplegar IMS | ## Servicios (NodePort) | Servicio | Tipo | Puerto | NodePort | |---------|------|--------|----------| | oai-amf | NodePort | 38412/SCTP, 80/TCP | 30355 | | oai-upf-n3 | NodePort | 2152/GTP-U | 31002 | | oai-upf-n4 | NodePort | 8805/PFCP | 31907 | ## Uso ```bash # Anadir OKA a OSM osm oka-add oai-5g-core <path>/oka/apps/oai-5g-core --description "OAI 5G Core Network" --profile-type app-profile # Crear KSU desde OKA osm ksu-create --ksu oai-5g-core --profile <cluster> --profile-type app-profile --oka oai-5g-core --params oai-5g-core-params.yaml ``` ## Chart Source - Helm Chart: `oai-5g-basic` v2.2.0 - Repository: `oci://gitlab.com/gctio-projects/demoeucnc-2026/oai-5g-basic` ## Componentes - NRF, AMF, SMF, UPF, UDM, AUSF, UDR, NSSF, PCF - MySQL (persistido en local-path) - Traffic Server (iperf3) - LMF (Location Management Function) oka/apps/oai-5g-core/manifests/gitlab-oci-repo.yaml 0 → 100644 +26 −0 Original line number Diff line number Diff line ####################################################################################### # Copyright ETSI Contributors and Others. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. ####################################################################################### --- apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: gitlab-oci namespace: oai-5g-basic spec: interval: 10m0s type: oci url: oci://gitlab.com/gctio-projects/demoeucnc-2026/oai-5g-basic oka/apps/oai-5g-core/manifests/oai-5g-core-hr.yaml 0 → 100644 +38 −0 Original line number Diff line number Diff line ####################################################################################### # Copyright ETSI Contributors and Others. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. ####################################################################################### --- apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: name: oai-5g-basic namespace: oai-5g-basic spec: chart: spec: chart: oai-5g-basic version: '2.2.0' reconcileStrategy: ChartVersion sourceRef: kind: HelmRepository name: gitlab-oci namespace: oai-5g-basic interval: 3m0s targetNamespace: oai-5g-basic valuesFrom: - kind: ConfigMap name: oai-5g-core-values valuesKey: values.yaml oka/apps/oai-5g-core/manifests/oai-5g-core-values-cm.yaml 0 → 100644 +189 −0 Original line number Diff line number Diff line ####################################################################################### # Copyright ETSI Contributors and Others. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. ####################################################################################### --- apiVersion: v1 kind: ConfigMap metadata: name: oai-5g-core-values namespace: oai-5g-basic labels: app: oai-5g-core component: config data: values.yaml: | global: kubernetesDistribution: Vanilla coreNetworkConfigMap: oai-5g-basic clusterIpServiceIpAllocation: true waitForNRF: true waitForUDR: true http2Param: "--http2-prior-knowledge" timeout: 1 mysql: enabled: true imagePullPolicy: IfNotPresent oai5gdatabase: basic persistence: enabled: true storageClass: "local-path" oai-nrf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-nrf version: v2.2.1 pullPolicy: IfNotPresent start: nrf: true tcpdump: false oai-udr: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-udr version: v2.2.1 pullPolicy: IfNotPresent start: udr: true tcpdump: false oai-udm: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-udm version: v2.2.1 pullPolicy: IfNotPresent start: udm: true tcpdump: false oai-ausf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-ausf version: v2.2.1 pullPolicy: IfNotPresent start: ausf: true tcpdump: false oai-amf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-amf version: v2.2.1 pullPolicy: IfNotPresent start: amf: true tcpdump: false multus: enabled: false service: type: NodePort nodePort: 30355 config: plmn_support_list: - mcc: "${MCC}" mnc: "${MNC}" tac: ${TAC} snssaiList: - sst: 1 oai-smf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-smf version: v2.2.1 pullPolicy: IfNotPresent config: imsHost: ims smf_info: sNssaiSmfInfoList: - sNssai: sst: 1 dnnSmfInfoList: - dnn: "${DNN}" start: smf: true tcpdump: false multus: enabled: false oai-upf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-upf version: v2.2.1 pullPolicy: IfNotPresent start: upf: true tcpdump: false multus: enabled: false service: n3: type: NodePort nodePort: 31002 config: dnn: - name: "${DNN}" pduSessionType: IPv4 ipv4_subnet: ${UE_IP_POOL} upfIf: n3If: teidRangeIndication: 1 teidRange: 32 mtu: 1460 dstInterface: 0 networkInstance: "${DNN}" n4If: dstInterface: 0 networkInstance: "${DNN}" oai-traffic-server: enabled: ${DEPLOY_TRAFFIC_SERVER} nfimage: repository: docker.io/oaisoftwarealliance/trf-gen-cn5g version: latest pullPolicy: IfNotPresent multus: enabled: false config: ueroute: ${UE_IP_ROUTE} upfHost: oai-upf noOfIperf3Server: 2 oai-lmf: enabled: ${DEPLOY_LMF} nfimage: repository: docker.io/oaisoftwarealliance/oai-lmf version: v2.2.1 pullPolicy: IfNotPresent start: lmf: true tcpdump: false ims: enabled: ${DEPLOY_IMS} imsUsers: - id: "${UE_IMSI}" fullname: ${IMS_USER_NAME} hassip: yes context: users host: dynamic transport: tcp,udp oka/apps/oai-5g-core/oai-5g-core-params.yaml 0 → 100644 +13 −0 Original line number Diff line number Diff line namespace: oai-5g-basic custom_env_vars: MCC: "001" MNC: "01" TAC: "1" DNN: "oai" UE_IP_POOL: "12.1.1.0/24" UE_IP_ROUTE: "12.1.1.0/24" UE_IMSI: "001010000000100" IMS_USER_NAME: "test-user" DEPLOY_LMF: "true" DEPLOY_TRAFFIC_SERVER: "true" DEPLOY_IMS: "false" Loading
oka/apps/oai-5g-core/README.md 0 → 100644 +67 −0 Original line number Diff line number Diff line # OAI 5G Core OKA - OSM Kubernetes Application ## Description OKA to deploy OAI 5G Core (NRF, AMF, SMF, UPF, UDM, AUSF, UDR, NSSF, PCF) via GitOps/Flux. ## Structure ``` oai-5g-core/ ├── manifests/ │ ├── gitlab-oci-repo.yaml # HelmRepository → GitLab OCI │ ├── oai-5g-core-hr.yaml # HelmRelease │ └── oai-5g-core-values-cm.yaml # ConfigMap con valores ├── templates/ │ ├── oai-5g-core-ns.yaml # Namespace │ └── oai-5g-core-ks.yaml # Kustomization ├── oai-5g-core-params.yaml # Parametros default └── README.md ``` ## Parametros | Parametro | Default | Descripcion | |-----------|---------|-------------| | namespace | oai-5g-basic | Namespace destino | | MCC | 001 | Mobile Country Code | | MNC | 01 | Mobile Network Code | | TAC | 0x0001 | Tracking Area Code | | SLICE_SD_DEC | 16777215 | Slice SD (decimal, FFFFFF hex) | | SLICE_SD_HEX | FFFFFF | Slice SD (formato hex para smf_info) | | DNN | oai | Data Network Name | | UE_IP_POOL | 12.1.1.0/24 | Pool IPs UE | | UE_IP_ROUTE | 12.1.1.0/24 | Ruta trafico UPF | | UE_IMSI | 001010000000100 | IMSI para IMS | | IMS_USER_NAME | test-user | Nombre usuario IMS | | RELEASE_NAME | oai-5g-basic | Nombre Helm release | | CHART_VERSION | 2.2.0 | Version del chart OAI | | DEPLOY_LMF | true | Desplegar LMF | | DEPLOY_TRAFFIC_SERVER | true | Desplegar generador trafico | | DEPLOY_IMS | false | Desplegar IMS | ## Servicios (NodePort) | Servicio | Tipo | Puerto | NodePort | |---------|------|--------|----------| | oai-amf | NodePort | 38412/SCTP, 80/TCP | 30355 | | oai-upf-n3 | NodePort | 2152/GTP-U | 31002 | | oai-upf-n4 | NodePort | 8805/PFCP | 31907 | ## Uso ```bash # Anadir OKA a OSM osm oka-add oai-5g-core <path>/oka/apps/oai-5g-core --description "OAI 5G Core Network" --profile-type app-profile # Crear KSU desde OKA osm ksu-create --ksu oai-5g-core --profile <cluster> --profile-type app-profile --oka oai-5g-core --params oai-5g-core-params.yaml ``` ## Chart Source - Helm Chart: `oai-5g-basic` v2.2.0 - Repository: `oci://gitlab.com/gctio-projects/demoeucnc-2026/oai-5g-basic` ## Componentes - NRF, AMF, SMF, UPF, UDM, AUSF, UDR, NSSF, PCF - MySQL (persistido en local-path) - Traffic Server (iperf3) - LMF (Location Management Function)
oka/apps/oai-5g-core/manifests/gitlab-oci-repo.yaml 0 → 100644 +26 −0 Original line number Diff line number Diff line ####################################################################################### # Copyright ETSI Contributors and Others. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. ####################################################################################### --- apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: gitlab-oci namespace: oai-5g-basic spec: interval: 10m0s type: oci url: oci://gitlab.com/gctio-projects/demoeucnc-2026/oai-5g-basic
oka/apps/oai-5g-core/manifests/oai-5g-core-hr.yaml 0 → 100644 +38 −0 Original line number Diff line number Diff line ####################################################################################### # Copyright ETSI Contributors and Others. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. ####################################################################################### --- apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: name: oai-5g-basic namespace: oai-5g-basic spec: chart: spec: chart: oai-5g-basic version: '2.2.0' reconcileStrategy: ChartVersion sourceRef: kind: HelmRepository name: gitlab-oci namespace: oai-5g-basic interval: 3m0s targetNamespace: oai-5g-basic valuesFrom: - kind: ConfigMap name: oai-5g-core-values valuesKey: values.yaml
oka/apps/oai-5g-core/manifests/oai-5g-core-values-cm.yaml 0 → 100644 +189 −0 Original line number Diff line number Diff line ####################################################################################### # Copyright ETSI Contributors and Others. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. ####################################################################################### --- apiVersion: v1 kind: ConfigMap metadata: name: oai-5g-core-values namespace: oai-5g-basic labels: app: oai-5g-core component: config data: values.yaml: | global: kubernetesDistribution: Vanilla coreNetworkConfigMap: oai-5g-basic clusterIpServiceIpAllocation: true waitForNRF: true waitForUDR: true http2Param: "--http2-prior-knowledge" timeout: 1 mysql: enabled: true imagePullPolicy: IfNotPresent oai5gdatabase: basic persistence: enabled: true storageClass: "local-path" oai-nrf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-nrf version: v2.2.1 pullPolicy: IfNotPresent start: nrf: true tcpdump: false oai-udr: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-udr version: v2.2.1 pullPolicy: IfNotPresent start: udr: true tcpdump: false oai-udm: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-udm version: v2.2.1 pullPolicy: IfNotPresent start: udm: true tcpdump: false oai-ausf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-ausf version: v2.2.1 pullPolicy: IfNotPresent start: ausf: true tcpdump: false oai-amf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-amf version: v2.2.1 pullPolicy: IfNotPresent start: amf: true tcpdump: false multus: enabled: false service: type: NodePort nodePort: 30355 config: plmn_support_list: - mcc: "${MCC}" mnc: "${MNC}" tac: ${TAC} snssaiList: - sst: 1 oai-smf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-smf version: v2.2.1 pullPolicy: IfNotPresent config: imsHost: ims smf_info: sNssaiSmfInfoList: - sNssai: sst: 1 dnnSmfInfoList: - dnn: "${DNN}" start: smf: true tcpdump: false multus: enabled: false oai-upf: enabled: true nfimage: repository: docker.io/oaisoftwarealliance/oai-upf version: v2.2.1 pullPolicy: IfNotPresent start: upf: true tcpdump: false multus: enabled: false service: n3: type: NodePort nodePort: 31002 config: dnn: - name: "${DNN}" pduSessionType: IPv4 ipv4_subnet: ${UE_IP_POOL} upfIf: n3If: teidRangeIndication: 1 teidRange: 32 mtu: 1460 dstInterface: 0 networkInstance: "${DNN}" n4If: dstInterface: 0 networkInstance: "${DNN}" oai-traffic-server: enabled: ${DEPLOY_TRAFFIC_SERVER} nfimage: repository: docker.io/oaisoftwarealliance/trf-gen-cn5g version: latest pullPolicy: IfNotPresent multus: enabled: false config: ueroute: ${UE_IP_ROUTE} upfHost: oai-upf noOfIperf3Server: 2 oai-lmf: enabled: ${DEPLOY_LMF} nfimage: repository: docker.io/oaisoftwarealliance/oai-lmf version: v2.2.1 pullPolicy: IfNotPresent start: lmf: true tcpdump: false ims: enabled: ${DEPLOY_IMS} imsUsers: - id: "${UE_IMSI}" fullname: ${IMS_USER_NAME} hassip: yes context: users host: dynamic transport: tcp,udp
oka/apps/oai-5g-core/oai-5g-core-params.yaml 0 → 100644 +13 −0 Original line number Diff line number Diff line namespace: oai-5g-basic custom_env_vars: MCC: "001" MNC: "01" TAC: "1" DNN: "oai" UE_IP_POOL: "12.1.1.0/24" UE_IP_ROUTE: "12.1.1.0/24" UE_IMSI: "001010000000100" IMS_USER_NAME: "test-user" DEPLOY_LMF: "true" DEPLOY_TRAFFIC_SERVER: "true" DEPLOY_IMS: "false"