Additional Application Features#
Using the Same Microservice Component Multiple Times in an App#
Since UCS 2.5.0, you can specify the same microservice multiple times in an application manifest. The example below shows 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 uses Helm Chart aliasing. The resulting Chart.yaml looks 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
Current limitation: Parameters specified in the first instance of MicroserviceA also apply to the second instance (and third, fourth, etc.). To avoid this behavior, specify the same parameters for all instances of the same microservice with your 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 called ucf.svc.rag-operator-external
is available. This component represents the NVIDIA K8s Operator. It allows microservices in a UCS Application to connect to NeMo microservices managed by the RAG Operator. This simplifies RAG application development in UCS Tools.
You must deploy the RAG Operator to your target K8s platform before deploying your UCS App. The NVIDIA GPU Operator is a dependency and must be running before you install the RAG Operator. Find deployment instructions on the project’s home page.
To deploy the RAG Operator, run these commands:
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 can optionally configure GPU time-slicing.
See an example UCS RAG Application in our UCS-Tools GitLab repository.