diff --git a/charts/oai-5g-core/oai-5g-basic/values.yaml b/charts/oai-5g-core/oai-5g-basic/values.yaml index 6bb496c959f7b3e7ee515f03f50ee0c319c435a4..4202eb6838dcf9c9dc201d00a86b9118b528727e 100644 --- a/charts/oai-5g-core/oai-5g-basic/values.yaml +++ b/charts/oai-5g-core/oai-5g-basic/values.yaml @@ -3,6 +3,8 @@ mysql: weight: 0 imagePullPolicy: IfNotPresent oai5gdatabase: basic + imagePullSecrets: + - name: "regcred" persistence: enabled: false oai-nrf: diff --git a/charts/oai-5g-core/oai-5g-mini/Chart.lock b/charts/oai-5g-core/oai-5g-mini/Chart.lock deleted file mode 100644 index 7f6cf5c7cc9b04adbcd981b04dce205da489a5a6..0000000000000000000000000000000000000000 --- a/charts/oai-5g-core/oai-5g-mini/Chart.lock +++ /dev/null @@ -1,18 +0,0 @@ -dependencies: -- name: mysql - repository: file://../mysql - version: 1.6.9 -- name: oai-nrf - repository: file://../oai-nrf - version: 1.4.0 -- name: oai-amf - repository: file://../oai-amf - version: 1.4.0 -- name: oai-smf - repository: file://../oai-smf - version: 1.4.0 -- name: oai-spgwu-tiny - repository: file://../oai-spgwu-tiny - version: 1.1.5 -digest: sha256:0c4437bfc7c2132cd795c76883f80693abf34f02c4488780b495efc49b3aee3f -generated: "2022-04-08T10:20:55.932316179+02:00" diff --git a/charts/oai-5g-core/oai-5g-mini/charts/mysql-1.6.9.tgz b/charts/oai-5g-core/oai-5g-mini/charts/mysql-1.6.9.tgz deleted file mode 100644 index 3db2e6dbee36f9e35b03607a527cce0d4afb9f37..0000000000000000000000000000000000000000 Binary files a/charts/oai-5g-core/oai-5g-mini/charts/mysql-1.6.9.tgz and /dev/null differ diff --git a/charts/oai-5g-core/oai-5g-mini/charts/oai-amf-1.4.0.tgz b/charts/oai-5g-core/oai-5g-mini/charts/oai-amf-1.4.0.tgz deleted file mode 100644 index 5e19104467a026efd834fdbad7bbe2ede64fdfc8..0000000000000000000000000000000000000000 Binary files a/charts/oai-5g-core/oai-5g-mini/charts/oai-amf-1.4.0.tgz and /dev/null differ diff --git a/charts/oai-5g-core/oai-5g-mini/charts/oai-nrf-1.4.0.tgz b/charts/oai-5g-core/oai-5g-mini/charts/oai-nrf-1.4.0.tgz deleted file mode 100644 index 821c4adf74a066060ce0d8f019162780d13e40cf..0000000000000000000000000000000000000000 Binary files a/charts/oai-5g-core/oai-5g-mini/charts/oai-nrf-1.4.0.tgz and /dev/null differ diff --git a/charts/oai-5g-core/oai-5g-mini/charts/oai-smf-1.4.0.tgz b/charts/oai-5g-core/oai-5g-mini/charts/oai-smf-1.4.0.tgz deleted file mode 100644 index 9eb3bf995d7286287cadbbb71c192e2e1fc28360..0000000000000000000000000000000000000000 Binary files a/charts/oai-5g-core/oai-5g-mini/charts/oai-smf-1.4.0.tgz and /dev/null differ diff --git a/charts/oai-5g-core/oai-5g-mini/charts/oai-spgwu-tiny-1.1.5.tgz b/charts/oai-5g-core/oai-5g-mini/charts/oai-spgwu-tiny-1.1.5.tgz deleted file mode 100644 index 0d9b02e39f6ff8b48a2633e01efb2c1e57ec044c..0000000000000000000000000000000000000000 Binary files a/charts/oai-5g-core/oai-5g-mini/charts/oai-spgwu-tiny-1.1.5.tgz and /dev/null differ diff --git a/docs/DEPLOY_SA5G_HC.md b/docs/DEPLOY_SA5G_HC.md index d3c7b0972bc5bfc41b502ddcac581d1fde398a34..07306b83d7e4b562032f9b1f7d03eee4d11be5b2 100644 --- a/docs/DEPLOY_SA5G_HC.md +++ b/docs/DEPLOY_SA5G_HC.md @@ -171,9 +171,9 @@ In case of pulling images from docker-hub it will be good to configure an image ```console #kubernetes -$: kubectl create secret docker-registry personalkey --docker-server=https://index.docker.io/v1/ --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> +$: kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> #openshift -$: oc create secret docker-registry personalkey --docker-server=https://index.docker.io/v1/ --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> +$: oc create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> ``` There are more ways to make docker secrete you can follow this [link](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). After creating the secrete mention it in the `values.yaml` @@ -245,6 +245,48 @@ Once the configuration is finished the charts can be deployed with a user who ha ``` shell $: helm spray . +[spray] processing chart from local file or directory "."... +[spray] deploying solution chart "." in namespace "default" +[spray] processing sub-charts of weight 0 +[spray] > upgrading release "mysql": deploying first revision (appVersion 5.7.30)... +[spray] o release: "mysql" upgraded +[spray] > waiting for liveness and readiness... +[spray] processing sub-charts of weight 1 +[spray] > upgrading release "oai-nrf": deploying first revision (appVersion 1.4.0)... +[spray] o release: "oai-nrf" upgraded +[spray] > waiting for liveness and readiness... +[spray] processing sub-charts of weight 2 +[spray] > upgrading release "oai-udr": deploying first revision (appVersion 1.4.0)... +[spray] o release: "oai-udr" upgraded +[spray] > waiting for liveness and readiness... +[spray] processing sub-charts of weight 3 +[spray] > upgrading release "oai-udm": deploying first revision (appVersion 1.4.0)... +[spray] o release: "oai-udm" upgraded +[spray] > waiting for liveness and readiness... +[spray] processing sub-charts of weight 4 +[spray] > upgrading release "oai-ausf": deploying first revision (appVersion 1.4.0)... +[spray] o release: "oai-ausf" upgraded +[spray] > waiting for liveness and readiness... +[spray] processing sub-charts of weight 5 +[spray] > upgrading release "oai-amf": deploying first revision (appVersion 1.4.0)... +[spray] o release: "oai-amf" upgraded +[spray] > waiting for liveness and readiness... +[spray] processing sub-charts of weight 6 +[spray] > upgrading release "oai-spgwu-tiny": deploying first revision (appVersion 1.1.5)... +[spray] o release: "oai-spgwu-tiny" upgraded +[spray] > waiting for liveness and readiness... +[spray] processing sub-charts of weight 7 +[spray] > upgrading release "oai-smf": deploying first revision (appVersion 1.4.0)... +[spray] o release: "oai-smf" upgraded +[spray] > waiting for liveness and readiness... +[spray] upgrade of solution chart "." completed in 3m23s +$: export AMF_POD_NAME=$(kubectl get pods --namespace oai -l "app.kubernetes.io/name=oai-amf" -o jsonpath="{.items[0].metadata.name}") +$: export SMF_POD_NAME=$(kubectl get pods --namespace oai -l "app.kubernetes.io/name=oai-smf" -o jsonpath="{.items[0].metadata.name}") +$: export SPGWU_TINY_POD_NAME=$(kubectl get pods --namespace oai -l "app.kubernetes.io/name=oai-spgwu-tiny" -o jsonpath="{.items[0].metadata.name}" +$: export AMF_eth0_POD_IP=$(kubectl get pods --namespace oai -l "app.kubernetes.io/name=oai-amf" -o jsonpath="{.items[0].status.podIP}") +$: kubectl logs -c spgwu $SPGWU_TINY_POD_NAME | grep 'Received SX HEARTBEAT REQUEST' | wc -l +$: kubectl logs -c smf $SMF_POD_NAME | grep 'handle_receive(16 bytes)' | wc -l + ``` This command can take around 5-7 mins depending on your network speed and cluster configuration (computational capacity) @@ -301,6 +343,32 @@ config: ### 5.3 Deploy OAI-gNB RFSimulator +```shell +$: helm install gnb oai-gnb +helm install gnb oai-gnb/ +NAME: gnb +LAST DEPLOYED: Fri Apr 22 17:42:38 2022 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +1. Get the application name by running these commands: + export GNB_POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=oai-gnb,app.kubernetes.io/instance=gnb" -o jsonpath="{.items[0].metadata.name}") + export GNB_eth0_IP=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=oai-gnb,app.kubernetes.io/instance=gnb" -o jsonpath="{.items[*].status.podIP}") +2. Note: This helm chart of OAI-gNB is only tested in RF-simulator mode not tested with hardware on Openshift/Kubernetes Cluster +$: export GNB_POD_NAME=$(kubectl get pods --namespace oa -l "app.kubernetes.io/name=oai-gnb,app.kubernetes.io/instance=gnb" -o jsonpath="{.items[0].metadata.name}") +$: export GNB_eth0_IP=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=oai-gnb,app.kubernetes.io/instance=gnb" -o jsonpath="{.items[*].status.podIP}") +``` + + +To check if gnB is connected, read the logs of amf and check N2 setup procedure was correct or not, + +```shell +$: kubectl logs -c amf $AMF_POD_NAME | grep 'Sending NG_SETUP_RESPONSE Ok' +[2022-04-22T15:42:45.370382] [AMF] [amf_n2 ] [debug] Sending NG_SETUP_RESPONSE Ok +``` + ### 5.4 Configure OAI-NR-UE RFSimulator NR-UE requires the ip-address of the gNB which you have acquired earlier, use that ip-address and configure it in `config.rfSimulator`. We are not using multus here just for similicity, generally there should be two interfaces. @@ -322,23 +390,33 @@ config: ### 5.5 Deploy OAI-NR-UE RFSimulator -```bash +```shell +$: sed -i 's/rfSimulator: "172.17.0.9"/rfSimulator: '"$GNB_eth0_IP"'/g' oai-nr-ue/values.yaml +$: helm install nrue oai-nr-ue/ +NAME: nrue +LAST DEPLOYED: Fri Apr 22 17:52:39 2022 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +1. Get the application name by running these commands: + export NR_UE_POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=oai-nr-ue,app.kubernetes.io/instance=nrue" -o jsonpath="{.items[0].metadata.name}") +2. Note: This helm chart of OAI-NR-UE is only tested in RF-simulator mode not tested with hardware on Openshift/Kubernetes Cluster +$: export NR_UE_POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=oai-nr-ue,app.kubernetes.io/instance=nrue" -o jsonpath="{.items[0].metadata.name}") +``` + +Now at this time you would have received an ip-address, you can confirm that ue properly got attached via AMF logs or SMF logs. We recommend that you read the logs to understand the message exchanges between different entities. + +### 5.6 Performing some traffic testing + +Inside the nr-ue pod there is an extra tcdump container which can be use to perform traffic testing via iperf3 or + +```shell $ oc rsh -c nr-ue oai-nr-ue-6dd669d78f-ktttg or $ kubectl exec -it nr-ue oai-nr-ue-6dd669d78f-ktttg bash -$ route -n -sh-4.4# route -n -Kernel IP routing table -Destination Gateway Genmask Flags Metric Ref Use Iface -0.0.0.0 192.168.18.129 0.0.0.0 UG 0 0 0 net1 -10.128.0.0 0.0.0.0 255.252.0.0 U 0 0 0 eth0 -10.130.4.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0 -12.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 oaitun_ue1 -172.30.0.0 10.130.4.1 255.255.0.0 UG 0 0 0 eth0 -192.168.18.0 0.0.0.0 255.255.255.0 U 0 0 0 net1 -224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0 - $ ping -I oaitun_ue1 -c4 google.fr PING google.fr (172.217.19.131) 56(84) bytes of data. 64 bytes from par03s12-in-f131.1e100.net (172.217.19.131): icmp_seq=1 ttl=116 time=27.4 ms