> For the complete documentation index, see [llms.txt](https://docs.openiam.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openiam.com/installation/choose-your-route.md).

# Choose your route

Pick the deployment route that matches your infrastructure, and see the pages it uses in order.

**In a hurry, and building an evaluation?** [*Quick start — one host*](/installation/one-host.md) and [*Quick start — Kubernetes*](/installation/cluster.md) are the same procedures with the decisions made for you, on one page each. Come back here when you build for production.

Eleven routes are supported in this release. Find yours, then follow the pages in the order listed. Each route uses shared pages — the procedures are not duplicated per route.

## Which shape?

<table><thead><tr><th width="518.8000183105469">If</th><th>Choose</th></tr></thead><tbody><tr><td>You are evaluating, or a single host meets your availability requirement</td><td><strong>RPM, single node</strong></td></tr><tr><td>The platform must keep serving when one application host is lost</td><td><strong>RPM, three nodes</strong></td></tr><tr><td>You already run Kubernetes and want OpenIAM to share its pipeline and monitoring</td><td><strong>Kubernetes</strong></td></tr></tbody></table>

Then find your infrastructure in the table below.

## The eleven routes

### RPM, single node

<table><thead><tr><th width="48.20000457763672">#</th><th width="171.4000244140625">Route</th><th>Pages, in order</th></tr></thead><tbody><tr><td>1</td><td><strong>Your own infrastructure</strong></td><td><a href="/installation/what-you-need.md">What you need</a> → <a href="/installation/obtain-the-software.md">Obtain the software</a> → <a href="/installation/rpm/rpm-single-node/prepare-the-host.md">Prepare the host</a> → <a href="/installation/rpm/rpm-single-node/use-a-remote-database.md">Use a remote database</a> <em>(if not using the bundled database)</em> → <a href="/installation/rpm/rpm-single-node/install.md">Install</a> → <a href="/installation/rpm/rpm-single-node/start-and-verify.md">Start and verify</a> → <a href="/installation/rpm/rpm-single-node/enable-https.md">Enable HTTPS</a> → <a href="/installation/rpm/rpm-single-node/first-sign-in.md">First sign-in</a> → <a href="/installation/rpm/rpm-single-node/configure.md">Configure</a></td></tr><tr><td>2</td><td><strong>AWS</strong></td><td><a href="/installation/rpm/cloud/aws.md">AWS</a> → <a href="/installation/rpm/cloud/managed-databases.md">Managed databases</a> → then route 1 from <em>Prepare the host</em></td></tr><tr><td>3</td><td><strong>Azure</strong></td><td><a href="/installation/rpm/cloud/azure.md">Azure</a> → <a href="/installation/rpm/cloud/managed-databases.md">Managed databases</a> → then route 1 from <em>Prepare the host</em></td></tr></tbody></table>

### RPM, three nodes

<table><thead><tr><th width="43.399993896484375">#</th><th width="146.39999389648438">Route</th><th>Pages, in order</th></tr></thead><tbody><tr><td>4</td><td><strong>Your own infrastructure</strong></td><td><a href="/installation/what-you-need.md">What you need</a> → <a href="/installation/obtain-the-software.md">Obtain the software</a> → <a href="/installation/rpm/rpm-ha/prepare-the-hosts.md">Prepare the hosts</a> → <a href="/installation/rpm/cloud/managed-databases.md">Managed databases</a> <em>or your own server</em> → <a href="/installation/rpm/rpm-ha/install.md">Install</a> → <a href="/installation/rpm/rpm-ha/form-the-clusters.md">The clustered tiers</a> → <a href="/installation/rpm/rpm-ha/start-and-verify.md">Start and verify</a> <em>(steps 1–5)</em> → <a href="/installation/rpm/rpm-ha/load-balancer.md">Configure the load balancer</a> → <a href="/installation/rpm/rpm-single-node/enable-https.md">Enable HTTPS</a> → <a href="/installation/rpm/rpm-single-node/first-sign-in.md">First sign-in</a> → <a href="/installation/rpm/rpm-ha/start-and-verify.md">Start and verify</a> <em>(node-loss test)</em></td></tr><tr><td>5</td><td><strong>AWS</strong></td><td><a href="/installation/rpm/cloud/aws.md">AWS</a> → <a href="/installation/rpm/cloud/managed-databases.md">Managed databases</a> → then route 4 from <em>Prepare the hosts</em></td></tr><tr><td>6</td><td><strong>Azure</strong></td><td><a href="/installation/rpm/cloud/azure.md">Azure</a> → <a href="/installation/rpm/cloud/managed-databases.md">Managed databases</a> → then route 4 from <em>Prepare the hosts</em></td></tr></tbody></table>

### Kubernetes

<table><thead><tr><th width="51.399986267089844">#</th><th width="229.60000610351562">Route</th><th>Pages, in order</th></tr></thead><tbody><tr><td>7</td><td><strong>Amazon EKS, new environment — Terraform</strong></td><td><a href="/installation/kubernetes.md">Kubernetes overview</a> → <a href="/installation/kubernetes/terraform-eks.md">EKS with Terraform</a> → <a href="/installation/kubernetes/verify.md">Verify a Kubernetes deployment</a> → <a href="/installation/rpm/rpm-single-node/first-sign-in.md">First sign-in</a></td></tr><tr><td>8</td><td><strong>Azure AKS, new environment — Terraform</strong></td><td><a href="/installation/kubernetes.md">Kubernetes overview</a> → <a href="/installation/kubernetes/terraform-aks.md">AKS with Terraform</a> → <a href="/installation/kubernetes/verify.md">Verify a Kubernetes deployment</a> → <a href="/installation/rpm/rpm-single-node/first-sign-in.md">First sign-in</a></td></tr><tr><td>9</td><td><strong>An existing EKS cluster — Helm</strong></td><td><a href="/installation/kubernetes.md">Kubernetes overview</a> → <a href="/installation/kubernetes/prepare-the-cluster.md">Prepare the cluster</a> → <a href="/installation/kubernetes/amazon-eks.md">Amazon EKS</a> → <a href="/installation/kubernetes/deploy-with-helm.md">Deploy with Helm</a> → <a href="/installation/kubernetes/verify.md">Verify a Kubernetes deployment</a> → <a href="/installation/rpm/rpm-single-node/first-sign-in.md">First sign-in</a></td></tr><tr><td>10</td><td><strong>An existing AKS cluster — Helm</strong></td><td><a href="/installation/kubernetes.md">Kubernetes overview</a> → <a href="/installation/kubernetes/prepare-the-cluster.md">Prepare the cluster</a> → <a href="/installation/kubernetes/azure-aks.md">Azure AKS</a> → <a href="/installation/kubernetes/deploy-with-helm.md">Deploy with Helm</a> → <a href="/installation/kubernetes/verify.md">Verify a Kubernetes deployment</a> → <a href="/installation/rpm/rpm-single-node/first-sign-in.md">First sign-in</a></td></tr><tr><td>11</td><td><strong>A conformant cluster you run — Helm</strong></td><td><a href="/installation/kubernetes.md">Kubernetes overview</a> → <a href="/installation/kubernetes/prepare-the-cluster.md">Prepare the cluster</a> → <a href="/installation/kubernetes/deploy-with-helm.md">Deploy with Helm</a> → <a href="/installation/kubernetes/verify.md">Verify a Kubernetes deployment</a> → <a href="/installation/rpm/rpm-single-node/first-sign-in.md">First sign-in</a></td></tr></tbody></table>

**Terraform is the recommended route when you are creating a new AWS or Azure environment.** It provisions the network, the cluster, the managed database and the OpenIAM releases in one operation.

**Helm is the route for a cluster that already exists**, and the only route for a conformant cluster you run yourself. [*Deploy with Helm*](/installation/kubernetes/deploy-with-helm.md) is the procedure end to end.

## What each route gives you

<table><thead><tr><th width="152.59999084472656"></th><th>RPM single node</th><th>RPM three nodes</th><th>Kubernetes</th></tr></thead><tbody><tr><td><strong>You provision</strong></td><td>One host</td><td>Three hosts, one load balancer</td><td>A cluster, or Terraform provisions one</td></tr><tr><td><strong>OpenIAM installs</strong></td><td>Every tier on the host</td><td>Every tier on all three hosts</td><td>Every tier as Helm releases</td></tr><tr><td><strong>Database</strong></td><td>Bundled, your own, or managed</td><td>Your own, managed, or clustered across the three hosts</td><td>Managed on AWS and Azure; your own on other clusters</td></tr><tr><td><strong>Storage</strong></td><td>Local disk</td><td>Local disk plus a shared export</td><td>Cluster storage classes, including one supporting <code>ReadWriteMany</code></td></tr><tr><td><strong>Entry point</strong></td><td>The host, on 80 and 443</td><td>Your load balancer, on 80 and 443</td><td>A service in front of the reverse proxy</td></tr><tr><td><strong>TLS terminates</strong></td><td>On the host, or at a load balancer you add</td><td>At your load balancer, or on each host</td><td>At the load balancer or ingress, or in the cluster</td></tr><tr><td><strong>Time to first sign-in</strong></td><td>About 3 hours</td><td>Most of a day</td><td>Half a day to a day</td></tr><tr><td><strong>Survives losing</strong></td><td>Nothing — rebuild from backup</td><td>One application host, within limits set out in <a href="/installation/scope-and-availability.md"><em>Scope and availability</em></a></td><td>A worker node, with interruption while pods reschedule</td></tr><tr><td><strong>Verify with</strong></td><td><a href="/installation/rpm/rpm-single-node/start-and-verify.md"><em>Start and verify</em></a></td><td><a href="/installation/rpm/rpm-ha/start-and-verify.md"><em>Start and verify</em></a></td><td><a href="/installation/kubernetes/verify.md"><em>Verify a Kubernetes deployment</em></a></td></tr><tr><td><strong>Then</strong></td><td><a href="/installation/rpm/rpm-single-node/configure.md"><em>Configure</em></a>, then the <a href="/administration-guide/admin.md">Administration Guide</a></td><td>The same</td><td>The same</td></tr></tbody></table>

## Before you commit to a route

Read [*Scope and availability*](/installation/scope-and-availability.md). It sets out what this release covers, and what each shape does and does not protect against. Choosing a shape on an incorrect availability assumption is the most expensive mistake available here.

## Related

* [*Scope and availability*](/installation/scope-and-availability.md) — read before committing to a shape
* [*What you need*](/installation/what-you-need.md) — provisioning for any route
* [*System requirements*](/installation/system-requirements.md)

*Applies to OpenIAM 2026.8.1.*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.openiam.com/installation/choose-your-route.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
