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

# Production deployment

## Checklist

* The API is reachable only through something that authenticates callers.
* Only `/parse`, `/jobs/`, and `/batch/` are routed to ingest.
* `ingest.maxUploadSize` and `ingest.scratchSize` fit your largest request.
* `scaling.maxWorkers` and your node capacity match peak load.
* Workers run on their own nodes, and every component runs on `amd64` nodes.
* `orchestrator.workLeaseSeconds` is longer than your slowest unit takes.
* Results are collected within `orchestrator.jobRetentionSeconds`, or read from the output volume.
* The output storage expires old results, if they should not be kept forever.

## Exposing the API

The chart creates a `ClusterIP` Service, `fineparser-ingest`, on port 8080, and no Ingress. In-cluster clients can call `http://fineparser-ingest.fineparser.svc.cluster.local:8080`.

To expose it outside the cluster, put your own Ingress, Gateway, or load balancer in front of it:

* **Authenticate callers.** Ingest has no authentication. Anyone who reaches it can submit documents and download results.
* **Route only** `/parse` and the `/jobs/` and `/batch/` prefixes.
* **Allow large bodies,** at least `ingest.maxUploadSize`.
* **Allow long requests.** Set timeouts long enough for your largest upload to finish.

## Sizing uploads

A request needs about twice its size in ingest scratch space.

| Value | Default | Set it to |
| - | - | - |
| `ingest.maxUploadSize` | `512Mi` | Your largest request. Larger ones get `413`. |
| `ingest.scratchSize` | `2Gi` | About twice `maxUploadSize`. The node needs this much free ephemeral storage per ingest pod. |

## Results and retention

A finished job's status is kept for `orchestrator.jobRetentionSeconds` (`86400`). `"infinity"` keeps it forever. Results on the output volume are never deleted by FineParser and stay downloadable after the status expires.
