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.