Additional Application Features#
Using The Same Microservice Component Multiple Times In an App#
Since UCS 2.5.0, an application manifest may specify the same microservice multiple times. For example, below we have an app that uses microservice A twice and microservice B once:
specVersion: '2.5.0' version: 0.0.1 doc: README.md name: multiple-same-ms-example description: MS A is used twice dependencies: - ucf.svc.microserviceA:0.0.1 - ucf.svc.microserviceB:0.0.1 components: - name: microserviceA one type: ucf.service.microserviceA parameters: paramA1: 100 paramA2: - name: tango imagePullSecrets: - name: ngc-docker-reg-secret - name: microserviceA two type: ucf.service.microserviceA parameters: paramA1: 200 paramA2: - name: waltz imagePullSecrets: - name: ngc-docker-reg-secret - name: microserviceB type: ucf.service.microserviceB parameters: paramB1: false secrets: some-secret-name: some-secret connections: microserviceA one/http: microserviceB/http microserviceA two/http: microserviceB/http
This feature is implemented using Helm Chart aliasing, with the resuliting Chart.yaml looking like this:
apiVersion: v2 name: multiple-same-ms-example description: MS A is used twice type: application version: 0.1.0 appVersion: '' dependencies: - name: ucf.svc.microserviceB version: 0.0.1 - name: ucf.svc.microserviceA version: 0.0.1 alias: microserviceA one - name: ucf.svc.microserviceA version: 0.0.1 alias: microserviceA two
A current limitation is that any parameters specified in the first instance of MicrosrviceA will be also applied to the second instance (or third and fourth, etc.). If you don’t want this behavior, you’ll need to specify the same parameters for any instances of the same microservice with the desired values, otherwise the defaults won’t apply.
Interfacing with the NVIDIA K8s RAG Operator#
Since UCS Tools 2.5, a new built-in component named ucf.svc.rag-operator-external
is available, which represents the NVIDIA K8s Operator. This allows microservices in a UCS Application to implicitly connect to NeMo microservices that are managed and deployed by the RAG Operator, thereby easing the development of RAG applications in UCS Tools.
The RAG Operator needs to be deployed to the target K8s platform prior to deploying your UCS App that uses it. The NVIDIA GPU Operator is a dependency and must be running prior to installing the RAG Operator. Instructions for deploying the RAG Operator are on the project’s home page. In short, you need to do the following:
helm repo add nemollm-ea-rag-examples https://helm.ngc.nvidia.com/ohlfw0olaadg/ea-rag-examples
helm install rag-operator nemollm-ea-rag-examples/rag-operator -n rag-operator --create-namespace
You may also optionally configure GPU time-slicing
Please see an example UCS RAG Application in our UCS-Tools GitLab repository.