Loading xApp Helm Charts
------------------------
-The RIC Platform App Manager deploys RIC applications (a.k.a. xApps) using Helm charts stored in a private Helm repo.
-In the dev testing deployment described in this documentation, this private Helm repo is the Chart Museum pod that is deployed within the ric infrastructure group into the RIC cluster.
+The RIC Platform App Manager deploys RIC applications (a.k.a. xApps) using Helm charts stored in a private local Helm repo.
+The Helm local repo is deployed as a sidecar of the App Manager pod, and its APIs are exposed using an ingress controller with TLS enabled.
+You can use both HTTP and HTTPS to access it.
-The Helm repo location and credential for access the repo are specified in both the infrastructure and platform recipe files.
+Before any xApp can be deployed, its Helm chart must be loaded into this private Helm repo.
+The example below shows the command sequences that upload and delete the xApp Helm charts:
-Before any xApp can be deployed, its Helm chart must be loaded into this private Helm repo before the App manager can deploy them.
-The example below show a command sequence that completes:
-
-#. Add the Helm repo at the Helm client running on the RIC cluster host VM (via Kong Ingress Controller);
-#. Load the xApp Helm chart into the Helm repo;
-#. Update the local cache for the Helm repo and check the Helm chart is loaded;
-#. Calling App Manager to deploy the xApp;
-#. Calling App Manager to delete the xApp;
+#. Load the xApp Helm charts into the Helm repo;
+#. Verify the xApp Helm charts;
+#. Call App Manager to deploy the xApp;
+#. Call App Manager to delete the xApp;
#. Delete the xApp helm chart from the private Helm repo.
-.. code:: bash
+In the following example, the <INGRESS_CONTROLLER_IP> is the IP address that the RIC cluster ingress controller is listening to.
+If you are using a VM, it is the IP address of the main interface.
+If you are using REC clusters, it is the DANM network IP address you assigned in the recipe.
+If the commands are executed inside the host machine, you can use "localhost" as the <INGRESS_CONTROLLER_IP>.
- # add the Chart Museum as repo cm
- helm repo add cm http://10.0.2.100:32080/helm
- # load admin-xapp Helm chart to the Chart Museum
- curl -L -u helm:helm --data-binary "@admin-xapp-1.0.7.tgz" \
- http://10.0.2.100:32080/helm/api/charts
+.. code:: bash
+
+ # load admin-xapp Helm chart to the Helm repo
+ curl -L --data-binary "@admin-xapp-1.0.7.tgz" http://<INGRESS_CONTROLLER_IP>:32080/helmrepo
- # check the local cache of repo cm
- helm repo update cm
- # verify that the Helm chart is loaded and accessible
- helm search cm/
- # the new admin-app chart should show up here.
+ # verify the xApp Helm charts
+ curl -L http://<INGRESS_CONTROLLER_IP>:32080/helmrepo/index.yaml
# test App Manager health check API
- curl -v http://10.0.2.100:32080/appmgr/ric/v1/health/ready
+ curl -v http://<INGRESS_CONTROLLER_IP>:32080/appmgr/ric/v1/health/ready
# expecting a 200 response
# list deployed xApps
- curl http://10.0.2.100:32080/appmgr/ric/v1/xapps
+ curl http://<INGRESS_CONTROLLER_IP>:32080/appmgr/ric/v1/xapps
# expecting a []
-
- # deploy xApp
- curl -X POST http://10.0.2.100:32080/appmgr/ric/v1/xapps -d '{"name": "admin-xapp"}'
+
+ # deploy xApp, the xApp name has to be the same as the xApp Helm chart name
+ curl -X POST http://<INGRESS_CONTROLLER_IP>/appmgr/ric/v1/xapps -d '{"name": "admin-xapp"}'
# expecting: {"name":"admin-app","status":"deployed","version":"1.0","instances":null}
-
+
# check again deployed xApp
- curl http://10.0.2.10:32080/appmgr/ric/v1/xapps
+ curl http://<INGRESS_CONTROLLER_IP>:32080/appmgr/ric/v1/xapps
# expecting a JSON array with an entry for admin-app
-
+
# check pods using kubectl
kubectl get pods --all-namespaces
# expecting the admin-xapp pod showing up
-
+
# underlay the xapp
- curl -X DELETE http://10.0.2.100:32080/appmgr/ric/v1/xapps/admin-xapp
+ curl -X DELETE http://<INGRESS_CONTROLLER_IP>:32080/appmgr/ric/v1/xapps/admin-xapp
# check pods using kubectl
kubectl get pods --all-namespaces
# expecting the admin-xapp pod gone or shown as terminating
# to delete a chart
- curl -L -X DELETE -u helm:helm http://10.0.2.100:32080/api/charts/admin-xapp/0.0.5
+ curl -L -X DELETE -u helm:helm http://<INGRESS_CONTROLLER_IP>:32080/api/charts/admin-xapp/0.0.5
For more xApp deployment and usage examples, please see the documentation for the it/test repository.