See also: JIRA link:
Jira Legacy | ||||||
---|---|---|---|---|---|---|
|
...
- Data producer API: Information Type and Information Producer
- Producer CALLBACKS: GET healthcheck (supervision); Information Job Creation/Modification/Delete.
- Data consumer API: Information Type Subscription Creation/Modification/Delete (REGISTERED/UNREGISTERED); Information Job (Creation/Modification/Delete) and GET Information Type
- Consumer CALLBACKS: POST Information Type Status: REGISTERED/UNREGISTERED invoked when a Information type status has been changed
- Service status API: Returns statistics such as Number of Producers Types and Jobs
...
1. Authorization check: POST to the Authentication Agent (from the starting config config/application.yaml )
2. Validation: The URLs are used only for URI validation
3. Consumer starts a job on the Producer POST producerCallbacks.startInfoSubscriptionJob->restClient.post(producer.getJobCallbackUrl(), jobCallbackBody(infoJob))
ICS Callbacks Flow
...
bash start.sh
...
- Kafka(localhost:9092)
- ICS(localhost:8083)
- Producer(localhost:8080)
- Consumer(localhost:8081)
...
The Consumer implements these callbacks in order to work with ICS:
...
- Check the system for dependencies such as Maven, Java, Docker and docker-compose
- Package the demo application for a producer and a consumer and build the docker images
- Start the docker container in the same docker network with docker-compose
- After Strimzi kafka is up and running the user can run manually ./runproducer.sh and ./runconsumer.sh in different shells or use demo.sh to start the producer and consumer
- The script will send type1 to ICS, which is already predefined in the demo application
- The script will send the producer info to ICS
- The script will send the consumer job info to ICS
- ICS will trigger the demo application based on its callbacks
- Data is produced on the demo application
- The script sends docker logs of the Producer Callback function of ICS
- The script sends docker logs of the Demo applications
Code Block | ||
---|---|---|
| ||
Demo Producer Docker logs
2024-04-02 12:48:05 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"ygHwxXSIxW","key":"f8f1a7a7-a78e-4c7d-9b8d-108bb0cc9e2c"}
2024-04-02 12:48:06 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"KNIbP10zfN","key":"b058d00f-bbcd-4d2c-936b-6327847d4c2a"}
2024-04-02 12:48:07 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"V6fH1NkdeH","key":"ae1a83a3-d8a7-40c8-9d98-529230f8b585"}
2024-04-02 12:48:08 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"m76qvRFh6f","key":"abccde52-fa72-4fd4-99ab-5bc21514d825"}
2024-04-02 12:48:09 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"t7FJYnFr43","key":"0602239e-34e9-45a6-a04a-3c67b4c7d9e4"}
++++++++++++++++++++++++++++++++++++++++++++++++++++
Demo Consumer Docker logs
2024-04-02 12:48:05 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: ygHwxXSIxW"}
2024-04-02 12:48:06 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: KNIbP10zfN"}
2024-04-02 12:48:07 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: V6fH1NkdeH"}
2024-04-02 12:48:08 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: m76qvRFh6f"}
2024-04-02 12:48:09 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: t7FJYnFr43"}
++++++++++++++++++++++++++++++++++++++++++++++++++++
ICS logs
2024-04-02T12:48:05.615Z DEBUG 1 --- [or-http-epoll-2] o.o.i.c.r1producer.ProducerCallbacks : Job subscription 1 started OK 1
2024-04-02T12:48:05.820Z DEBUG 1 --- [io-8083-exec-10] o.o.i.repository.InfoTypeSubscriptions : Added type status subscription 1 |
GUI Consoles and Panels
Automatic
Running the script : red.sh will
- Bring the sandbox setup (Kafka and ICS)
- Build the local images for the producer and consumer
- Redpanda console (visual monitor kafka data flow) and the NONRTRIC control panel (visual data type job subscriptions).
...
bash red.sh --skip-build --no-console
Manual
Redpanda Console:
...
Redpanda console available at: http://localhost:8888
...
Manual NONRTRIC-controlpanel:
...
Code Block | ||||
---|---|---|---|---|
| ||||
/nonrtric-controlpanel$ git diff ./docker-compose/
diff --git a/docker-compose/.env b/docker-compose/.env
index 69fdd12..257ac73 100644
--- a/docker-compose/.env
+++ b/docker-compose/.env
@@ -16,9 +16,9 @@
#
#CONTROL_PANEL
-CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel"
+CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-controlpanel"
CONTROL_PANEL_IMAGE_TAG="2.5.0"
#NONRTRIC_GATEWAY
-NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-gateway"
+NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-gateway"
NONRTRIC_GATEWAY_IMAGE_TAG="1.2.0"
\ No newline at end of file
diff --git a/docker-compose/control-panel/docker-compose.yaml b/docker-compose/control-panel/docker-compose.yaml
index 2716ed8..a42b7a8 100644
--- a/docker-compose/control-panel/docker-compose.yaml
+++ b/docker-compose/control-panel/docker-compose.yaml
@@ -16,18 +16,17 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
+ kafka:
:...skipping...
diff --git a/docker-compose/.env b/docker-compose/.env
index 69fdd12..257ac73 100644
--- a/docker-compose/.env
+++ b/docker-compose/.env
@@ -16,9 +16,9 @@
#
#CONTROL_PANEL
-CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel"
+CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-controlpanel"
CONTROL_PANEL_IMAGE_TAG="2.5.0"
#NONRTRIC_GATEWAY
-NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-gateway"
+NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-gateway"
NONRTRIC_GATEWAY_IMAGE_TAG="1.2.0"
\ No newline at end of file
diff --git a/docker-compose/control-panel/docker-compose.yaml b/docker-compose/control-panel/docker-compose.yaml
index 2716ed8..a42b7a8 100644
--- a/docker-compose/control-panel/docker-compose.yaml
+++ b/docker-compose/control-panel/docker-compose.yaml
@@ -16,18 +16,17 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
+ kafka:
+ external: true
services:
policy-control-panel:
image: "${CONTROL_PANEL_IMAGE_BASE}:${CONTROL_PANEL_IMAGE_TAG}"
container_name: policy-control-panel
networks:
- - default
+ - kafka
ports:
- - 8080:8080
- - 8082:8082
+ - 8181:8080
+ - 8282:8082
volumes:
- ./control-panel/config/nginx.conf:/etc/nginx/nginx.conf:ro
diff --git a/docker-compose/docker-compose.yaml b/docker-compose/docker-compose.yaml
index 64bcbb9..c30aa2c 100644
--- a/docker-compose/docker-compose.yaml
+++ b/docker-compose/docker-compose.yaml
@@ -16,6 +16,5 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
\ No newline at end of file
+ kafka:
+ external: true
diff --git a/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml b/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml
index 7230175..c620b03 100644
--- a/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml
+++ b/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml
@@ -26,12 +26,8 @@ spring:
httpserver:
wiretap: true
routes:
- - id: A1-Policy
- uri: https://policy-agent:8433
- predicates:
- - Path=/a1-policy/**
- id: A1-EI
- uri: https://ics:8434
+ uri: http://informationcoordinatorservice:8083
predicates:
- Path=/data-producer/**,/data-consumer/**
management:
diff --git a/docker-compose/nonrtric-gateway/docker-compose.yaml b/docker-compose/nonrtric-gateway/docker-compose.yaml
index fbf3d9b..138229d 100644
--- a/docker-compose/nonrtric-gateway/docker-compose.yaml
+++ b/docker-compose/nonrtric-gateway/docker-compose.yaml
@@ -16,16 +16,15 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
+ kafka:
+ external: true
services:
nonrtric-gateway:
image: "${NONRTRIC_GATEWAY_IMAGE_BASE}:${NONRTRIC_GATEWAY_IMAGE_TAG}"
container_name: nonrtric-gateway
networks:
- default:
+ kafka:
aliases:
- nonrtric-gateway-container
ports:
(END) |
...
ICS-PRODUCER AND CONSUMER onboard and deploy with RAPPMANAGER
Overview
This documentation outlines the steps for testing the installation of the rAppManager on a remote Kubernetes deployment. The setup is conducted on an OpenStack Kubernetes v1.24 cluster on AKS (Azure Kubernetes Service).
Prerequisites
- Access to a Kubernetes cluster (OpenStack Kubernetes v1.24 on AKS).
- Git installed on your local machine.
- Postman installed on your local machine.
Installation Steps
Step 1: Clone the Repository on your k8s cluster
Clone the RappManager repository using the following command:
git clone "https://gerrit.o-ran-sc.org/r/nonrtric/plt/rappmanager"
Step 2: Run Installation Scripts
Navigate to the rappmanager/scripts
directory and run the installation script (the parameter dev will install the latest snapshot images):
cd ~/rappmanager/scripts
sudo ./install-all.sh dev
Step 3: Generate Sample Rapp Files
Navigate to the sample-rapp-generator
directory and run the generation scripts:
cd ~/rappmanager/sample-rapp-generator
bash generate.sh rapp-sample-ics-producer/
bash generate.sh rapp-sample-ics-consumer/
Step 4: Retrieve Generated Files
After running the generation scripts, retrieve the following generated files, and download them onto your machine:
rapp-sample-ics-producer.csar
rapp-sample-ics-consumer.csar
Step 5: Onboard and Deploy Rapps using Postman
Use the provided Postman collection to manage the RappManager. The following actions can be performed:
- Onboard the Rapp
- Prime the Rapp
- Create an Instance
- Deploy the App Instance
...
View file | ||||
---|---|---|---|---|
|
Make sure to change the IP and to point at the correct rapp csar package.
Step 6: Start Producer and Consumer
You can use this endpoint to start the app to produce/consume
sudo kubectl run curlpod -n nonrtric --image=radial/busyboxplus:curl --rm -it -- /bin/sh -c "curl -X GET http://producer-service:8080/startProducer/mytopic"
sudo kubectl run curlpod -n nonrtric --image=radial/busyboxplus:curl --rm -it -- /bin/sh -c "curl -X GET http://consumer-service:8081/startConsumer/mytopic"
Conclusion
Following the above steps will allow you to install and test the rAppManager on a Kubernetes cluster. Ensure you have all necessary permissions and prerequisites before beginning the installation process.