Managing NeMo Entity Store#
About NeMo Entity Store#
NVIDIA NeMo Entity Store manages the registration objects, or pointers, of the model data in your cluster. It serves as the central registry for the organizational entities, like namespaces and projects, that the rest of the NeMo microservices rely on to lookup model information.
Refer to the NeMo Platform documentation for more details on the entity concept and managing entities. The NeMo Entity Store and NeMo Data Store work together to store entity and dataset information about your models and should be deployed together.
Prerequisites#
All the common NeMo microservice prerequisites.
A NeMo Data Store deployed on your cluster. The NeMo Entity Store and NeMo Data Store work closely together to hold information about the model entities on your cluster. Include your NeMo Data Store as the
spec.datastore.endpoint
in your NeMo Entity Store custom resource.
Note
You can use the NeMo Dependencies Ansible Playbook to deploy all the following NeMo Entity Store microservice dependencies.
Storage
A PostgreSQL database. This is used to store entities and metadata. Refer to the Helm installation guide for more information on installing PostgreSQL.
Kubernetes
Create a secret for your database user by creating a file called
nemo-entitystore-secrets.yaml
, with inputs like the following example:apiVersion: v1 stringData: password: <nespass> kind: Secret metadata: name: entity-store-pg-existing-secret namespace: nemo type: Opaque
Apply the manifest:
$ kubectl apply -n nemo -f nemo-entitystore-secrets.yaml
Deploying a NeMo Entiy Store#
Update the following sample scripts <inputs>
with values for your cluster configuration.
Create a file, such as
nemo-entitystore.yaml
, with your NeMo Entity Store custom resource configuration, like the following example.--- apiVersion: apps.nvidia.com/v1alpha1 kind: NemoEntitystore metadata: name: nemoentitystore-sample namespace: nemo spec: image: repository: nvcr.io/nvidia/nemo-microservices/entity-store tag: "25.04" pullPolicy: IfNotPresent pullSecrets: - ngc-secret expose: service: type: ClusterIP port: 8000 databaseConfig: databaseName: <nesdb> host: <entity-store-pg-postgresql>.<nemo>.svc.cluster.local port: 5432 credentials: user: <nesuser> secretName: <entity-store-pg-existing-secret> passwordKey: <password> datastore: endpoint: http://<nemodatastore-sample>.<nemo>.svc.cluster.local:8000
Refer to the Configuring a NeMo Entity Store section for more details on configuration options.
Apply the manifest:
$ kubectl apply -n nemo -f nemo-entitystore.yaml
Optional: View information about the NeMo Entity Stores:
$ kubectl describe nemoentitystore.apps.nvidia.com -n nemo
Partial Output
... Conditions: Last Transition Time: 2025-02-09T12:41:27Z Message: deployment "nemoentitystore-sample" successfully rolled out Reason: Ready Status: True Type: Ready Last Transition Time: 2025-02-09T12:40:37Z Message: Reason: Ready Status: False Type: Failed State: Ready
Verify NeMo Entity Store#
List the NeMo Entity Store services.
$ kubectl get services -n nemo
Example output
nemoentitystore-sample ClusterIP XX.XXX.XXX.XXX <none> 8000/TCP 31m
Start a pod that has access to the
curl
command. Substitute any pod that has the command and meets your organization’s security requirements:$ kubectl run --rm -it -n default curl --image=curlimages/curl:latest -- ash
After the pod starts, you are connected to the
ash
shell in the pod.Verify NeMo Entity Store.
curl -X GET "http://nemoentitystore-sample.nemo:8000/v1/base-urls"
Configuring a NeMo Entity Store#
Using the NIM Operator, an Entity Store is deployed as a custom resource, nemoentitystores.apps.nvidia.com
.
The following table shows more information about the commonly modified fields for the NeMo Entity Store custom resource.
Field |
Description |
Default Value |
---|---|---|
|
Specifies to add the user-supplied annotations to the pod. |
None |
|
Specifies the external PostgreSQL configuration details. |
None |
|
Specifies the password key used in the database credentials secret. |
|
|
Specifies the secret name for the database credentials. |
None |
|
Specifies the user for the database. |
None |
|
Specifies the name for the database. |
None |
|
Specifies the host for the database. |
None |
|
Specifies the port for the database. |
|
|
Specifies the NeMo Data Store endpoint. |
None |
|
Specifies custom environment fields to be used for the NeMo Entity Store deployment. Use environment variables to set the internal DNS URL for a NeMo Data Store endpoint. Configuring a valid Data Store URL is required for the Entity Store to function correctly. - name: BASE_URL_DATASTORE
value: http://<DATASTORE-SERVICE-NAME>.<DATASTORE-NAMESPACE>.svc.cluster.local:3000
|
None |
|
Specifies attributes to expose a service for this NeMo microservice. |
None |
|
When set to If you have an ingress controller, values like the following sample configures an ingress for the ingress:
enabled: true
spec:
ingressClassName: nginx
host: nemo-entitystore.example.com
paths:
- path: /
pathType: Prefix
|
|
|
Specifies the network port number for the NeMo Entity Store microservice. |
|
|
Specifies the Kubernetes service type to create for the NeMo microservice. |
|
|
Specifies the group for the pods.
This value is used to set the security context of the pod in the |
|
|
Specifies repository, tag, and pull policy for the container image. |
None |
|
Specifies the user-supplied labels to add to the pod. |
None |
|
When set to |
|
|
Specifies the number of replicas to have on the cluster. |
None |
|
Specifies the memory and CPU request. |
None |
|
Specifies the memory and CPU limits. |
None |
Next Steps#
Refer to the NeMo microservices documentation for details on