> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nx1cloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deployed images

> List of images deployed by NexusOne

When you deploy NexusOne, the `nx1-deployer` image installs the container images listed on this
page into your cluster. NexusOne pulls each one from the registry set in the
[`image_repo` variable](./deployment-variables#container-registry), except for one `busybox` image
noted after the table.

For example, the following table in the next section shows Airflow's image as `airflow`, but NexusOne
actually pulls `<image_repo>/airflow:3.2.2-nx1.2`.

## Installed container image list

The following table lists each image and its default tag, grouped by the component that uses it.

| Component name | Image | Tag |
| - | - | - |
| Airflow | `airflow` | `3.2.2-nx1.2` |
| DataHub | `datahub-actions` | `v1.4.0.3-nx1` |
| | `datahub-elasticsearch-setup` | `v1.4.0.3-nx1` |
| | `datahub-frontend-react` | `v1.4.0.3-nx1` |
| | `datahub-gms` | `v1.4.0.3-nx1` |
| | `datahub-kafka-setup` | `v1.4.0.3-nx1` |
| | `datahub-mae-consumer` | `v1.4.0.3-nx1` |
| | `datahub-mce-consumer` | `v1.4.0.3-nx1` |
| | `datahub-postgres-setup` | `v1.4.0.3-nx1` |
| | `datahub-upgrade` | `v1.4.0.3-nx1` |
| | `kafka` | `3.7.0` |
| | `ollama-embeddings` | `0.16.2` |
| | `opensearch` | `2.19.2-2` |
| Gravitino | `gravitino-rest` | `1.2.9` |
| JupyterHub | `jupyterhub` | `5.4-nx1.10.1` |
| | `jupyterhub-configurable-http-proxy` | `4.6.3.1` |
| | `jupyterhub-k8s-hub` | `4.2.0.1` |
| | `spark-web-proxy` | `0.2.1` |
| Keycloak | `keycloak` | `26.5.6.1` |
| Kyuubi | `etcd` | `v3.5.21` |
| | `kyuubi` | `1.11.18` |
| LLM Router | `envoy` | `v1.32-latest` |
| | `semantic-router-extproc` | `v0.2.0-nx1-1` |
| Metastore | `jmx-exporter` | `1.4.0` |
| | `metastore` | `3.1.7` |
| MLflow | `mlflow` | `3.11.1` |
| | `oauth2-proxy` | `v7.15.1` |
| NLP | `ai-api` | `1.642` |
| | `redis` | `8.4.0.1` |
| Observability | `grafana/alloy` | `v1.16.1-1` |
| | `grafana/loki` | `3.6.10-1` |
| | `grafana/mimir` | `2.17.10-1` |
| | `grafana/tempo` | `2.10.5-1` |
| | `kube-state-metrics` | `v2.13.0` |
| | `nx1-grafana` | `12.4.3-nx1` |
| | `observability-router` | `1.0.9` |
| | `observability-webhook` | `0.1` |
| Ollama | `ollama` | `0.16.2` |
| Portal | `client-portal` | `1.642` |
| PostgreSQL | `postgres` | `17.1` |
| | `postgres` | `16` |
| | `postgres-exporter` | `v0.19.1` |
| Ranger | `nginx-unprivileged` | `1.28-alpine-perl.2` |
| | `nx1-ranger-authz-api` | `0.17` |
| | `oauth2-proxy` | `v7.15.2` |
| | `ranger` | `2.8.0` |
| | `ranger-sync` | `0.9.5` |
| S3 Gateway | `nx1-s3-gateway` | `0.17` |
| Spark | `spark` | `3.5.6-nx1.32` |
| Superset | `superset` | `6.1.0-1` |
| Tenant Manager | `nx1-tenant-api` | `0.16` |
| | `nx1-tenant-web` | `0.16` |
| Trino | `nginx-unprivileged` | `1.28-alpine-perl.2` |
| | `trino` | `nx1-479.4.8` |
| Trino Gateway | `trino-gateway` | `18` |
| YuniKorn | `oauth2-proxy` | `v7.15.2` |
| | `yunikorn` | `web-1.7.0` |
| | `yunikorn-scheduler` | `1.7.0-keycloak-9` |

You can change the Keycloak and Tenant Manager tags with the `keycloak_tag` and `tenant_tag`
[deployment variables](./deployment-variables#versions-sizing-and-multi-site).

A few rows need the following extra context:

* **`busybox`**: JupyterHub pulls `busybox` from Docker Hub instead of the registry set in the
  `image_repo` variable. JupyterHub only does this on a non-OpenShift cluster when you set the
  `storage_type_jupyterhub` variable to `static`. If your cluster can't reach Docker Hub, then
  complete the following steps before you deploy:
  1. Set up a registry your cluster can reach that mirrors Docker Hub, such as a pull-through
     cache that fetches images on demand.
  2. Configure every node's container runtime to redirect Docker Hub pulls to that registry.
  3. Bake that redirect into how new nodes get provisioned, so it survives node replacement or
     autoscaling.
* **Observability**: Every image in this row is opt-in and off by default.
  * The following images deploy only when you set the `obs_router_enabled` variable to `true`:
    * `observability-router`
    * `observability-webhook`
    * `grafana/alloy`
    * `kube-state-metrics`
  * The following images deploy only when you set the `monitoring_type` variable to `embedded`:
    * `nx1-grafana`
    * `grafana/loki`
    * `grafana/mimir`
    * `grafana/tempo`
* **`postgres:16`**: Runs short setup jobs that create each component's database schema. A separate
  deployment runs the actual PostgreSQL server on `postgres:17.1`.
* **`spark`**: JupyterHub's Spark History Server, Spark jobs started from notebooks, and Spark
  jobs started by the Portal's backend API all use this image. Changing the `spark_image_tag`
  variable affects all three at once. Keep that in mind when troubleshooting unexpected behavior
  in just one of them.

## Additional resources

* For what each component does and which tier it deploys in, refer to
  [Deployment architecture](./deployment-architecture).
* For the variables that control these components, refer to
  [Deployment variables](./deployment-variables).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.