Custom User Defined Images

TileDB Cloud supports custom docker images for user defined functions when self hosted. This page outlines how to setup and configure these custom images.

Building Custom Docker Images

TileDB Cloud docker images for user defined functions have several required packages and entrypoint script. As a result your custom docker images must be based on the official TileDB Cloud docker image.

The following are the default image names available:

ImageImage Name

Base python image

tiledbenterprise/rest-python-udf-3.9

Geospatial packages

tiledbenterprise/rest-python-udf-geo-3.9

Biomedical Imaging

tiledbenterprise/rest-python-udf-imaging

Vector Search

tiledbenterprise/rest-python-udf-vectorsearch

The specific tag that is available depends on the version of TileDB Cloud you are deploying out. Your account representative can help you identify this.

Using the base image with

FROM tiledbenterprise/rest-python-udf-3.9:2.23.0

# mamba install custom packages
RUN mamba install -c conda-forge my_packages

Hosting Custom Docker Images

The images need to be hosted in a place that is accessible to the kubernetes cluster. For an example of hosting docker images using ECR see Configure AWS ECR Container Registry for UDF Images.

Configuring Custom Images

After you have build the docker images they can be added them to your values.yaml by adding a section.

tiledb-cloud-rest:
    restConfig:
        UDF:
            Images:
            # Make sure tiledb-rest.yaml.example and chart/tiledb-cloud-rest/values.yaml
            # stay in sync with each other.
            "python":
              # Python UDFs must be run with a version compatible with the one that
              # serialized ("pickled") the function, so images must be available
              # for all Python client versions you want to support.
              - Versions: ["3.8", "3.9"] # mutually function-pickle–compatible
                CustomImages:
                  "my_python_image": "custom_python_docker_image"
              - Versions: ["3.10"]
                CustomImages:
                  "my_python_image": "custom_python_docker_image"
              "r":
              # R is largely compatible across versions.
              # "*" denotes a fallback, i.e., it will be used for *any* version
              # not present in other ImageSets (which in this case is all versions).
              - Versions: ["*"]
                CustomImages:
                  "my_r_image": "custom_r_docker_image"

Last updated