Automation orchestrator system requirements
Review the cluster requirements, external dependencies, and credentials you must prepare before you install automation orchestrator.
Supported platforms
Automation orchestrator requires Red Hat OpenShift Container Platform. The operator creates a Route for external access automatically.
Automation orchestrator supports both x86_64 and ARM64 architectures. No elevated cluster permissions are required.
Internal service communication
Automation orchestrator secures all internal communication between backend components using mutual TLS (mTLS). The operator generates a self-signed certificate authority (CA) and per-service certificates automatically during installation. No additional configuration is required for the default path.
If your organization requires certificates from a specific CA, you can provide your own CA certificate and per-service TLS certificates. For details, see Provide your own internal TLS certificates
Cluster requirements
- Red Hat OpenShift Container Platform 4.14 or later.
- Operator Lifecycle Manager (OLM) installed on the cluster.
- Sufficient cluster resources to run the automation orchestrator components. For default CPU and memory requirements per component, see Default resource requirements
| Topology | Worker nodes | CPU per node | RAM per node | Disk per node |
|---|---|---|---|---|
| Growth / Single Node OpenShift (non-production) | 1 | 8 | 32 GB | 128 GB, 3000 IOPS |
| Enterprise (co-located, independent, or air-gapped) | 2 | 8 | 16 GB | 128 GB, 3000 IOPS |
External dependencies
-
PostgreSQL 15 (required): Provide your own PostgreSQL 15 instance. This is the supported production configuration. Create the following databases:
- A database for the automation orchestrator backend (for example,
orchestrator). - A database for the Temporal workflow engine (for example,
temporal). The automation orchestrator operator automatically creates an additionaltemporal_visibilitydatabase using the same connection credentials. - A PostgreSQL user with permissions to create tables and run migrations on all three databases (backend, temporal, and temporal_visibility).
- Use TLS connections for production deployments. The default SSL mode is
require. - For high-availability setups, provide a single connection endpoint (for example, through Patroni VIP, PgBouncer, or a Kubernetes Service fronting an HA cluster).
-
If all databases share one PostgreSQL instance, increase
max_connectionsabove the default of 100. Each component replica opens up topoolSize + maxOverflowconnections (default: 30) across each database. The background worker also opens database connections and is included in the recommendations below. Setmax_connectionsbased on your total replica count:Table 2. Recommended max_connections by replica count Backend replicas Worker replicas Recommended max_connections2 2 230 2 4 330 4 8 530 These values assume 1 background worker replica and default pool settings (
poolSize=20,maxOverflow=10). The background worker scales automatically based on CPU usage, up to 5 replicas by default. Add 30 connections per additional background worker replica when you calculatemax_connectionsfor your peak load. With the default maximum of 5 replicas, plan for up to 150 background worker connections at peak load. If you increase pool settings in the custom resource, increasemax_connectionsproportionally. Each connection slot adds approximately 5-10 MB of memory overhead on the PostgreSQL server. If you host databases on separate PostgreSQL instances, adjust each instance'smax_connectionsaccordingly. - If you do not have an existing PostgreSQL provider, you can use the aapctl CLI to provision PostgreSQL with CloudNativePG. Red Hat does not provide support for CloudNativePG. The aapctl CloudNativePG template sets
max_connectionsto 200 by default, so no manual adjustment is required. See Alternative: Provision PostgreSQL with CloudNativePG.
- A database for the automation orchestrator backend (for example,
-
S3-compatible object storage (optional): Provide an S3-compatible endpoint for file uploads. Automation orchestrator stores uploaded files in S3-compatible object storage. If you do not configure S3, file upload requests return HTTP 503. Configure the endpoint and credentials in
spec.fileStorageon the AutomationOrchestrator custom resource. See File storage (S3) for the full field reference. -
Red Hat OpenTelemetry operator (optional): Install the Red Hat build of the OpenTelemetry operator to collect audit events and telemetry data from automation orchestrator. The aapctl CLI can install the OpenTelemetry operator and deploy a collector automatically. See Enable OpenTelemetry collection with aapctl.
-
Network connectivity: Outbound HTTPS access is required if you configure large language model (LLM) provider integrations. Inbound HTTPS is handled by the Route that exposes the application.
Secrets and credentials
Create the following Kubernetes Secrets in the target namespace and reference them in the AutomationOrchestrator custom resource. If you use aapctl with CloudNativePG enabled, aapctl creates the PostgreSQL secrets automatically (see Provision PostgreSQL with CloudNativePG).
Required secrets (customer-provided):
| Custom resource (CR) field | Secret keys | Required |
|---|---|---|
spec.postgres.backendDatabase.secretRef |
database,username,password |
Yes |
spec.postgres.temporalDatabase.secretRef |
database,username,password |
Yes (also used for the temporal_visibility database) |
spec.postgres.caCertSecretRef |
ca.crt |
Only whensslMode isverify-ca orverify-full |
spec.postgres.clientCertSecretRef |
tls.crt,tls.key |
Only for mutual TLS (mTLS) with PostgreSQL. RequiressslMode set torequire,verify-ca, orverify-full. |
spec.imagePullSecrets[].name |
.dockerconfigjson |
Only when pulling images from private registries |
spec.otel.apiKeySecretRef |
api-key |
Only when using API key authentication with the OpenTelemetry endpoint |
spec.otel.caCertSecretRef |
ca.crt |
Only when the OpenTelemetry endpoint uses a private CA |
spec.otel.clientCertSecretRef |
tls.crt,tls.key |
Only for mTLS authentication with the OpenTelemetry collector |
spec.tls.caSecretRef |
ca.crt |
Only when providing your own internal TLS certificates |
spec.tls.backendCertSecretRef |
tls.crt,tls.key |
Only when providing your own internal TLS certificates |
spec.tls.workerCertSecretRef |
tls.crt,tls.key |
Only when providing your own internal TLS certificates |
spec.tls.backgroundWorkerCertSecretRef |
tls.crt,tls.key |
Only when providing your own internal TLS certificates |
spec.tls.temporalCertSecretRef |
tls.crt,tls.key |
Only when providing your own internal TLS certificates |
spec.tls.uiCertSecretRef |
tls.crt,tls.key |
Only when providing your own internal TLS certificates |
spec.fileStorage.credentialSecretRef |
access-key-id,secret-access-key |
Only when S3 file storage requires authentication |
spec.fileStorage.caCertSecretRef |
ca.crt |
Only when the S3 endpoint uses a private CA |
Application secrets (auto-generated or customer-provided):
The automation orchestrator operator auto-generates the following secrets when you do not provide them. Auto-generated secrets are automatically deleted when you delete the custom resource.
| CR field | Secret keys | Default generated name | Description |
|---|---|---|---|
spec.secrets.jwtPrimaryKeySecretRef |
jwt-primary.pem |
{cr-name}-jwt-primary |
ES256 (ECDSA P-256) private key for JWT signing |
spec.secrets.jwtBackupKeySecretRef |
jwt-backup.pem |
{cr-name}-jwt-backup |
ES256 (ECDSA P-256) backup private key for JWT key rotation |
spec.secrets.secretEncryptionKeySecretRef |
secret-encryption-key |
{cr-name}-secret-encryption-key |
64-character hex string (32 bytes) for AES-256-GCM credential encryption |
spec.secrets.redisPasswordSecretRef |
password |
{cr-name}-redis-password |
Redis authentication password. Redis always runs with authentication enabled. |
spec.secrets.initialAdminPasswordSecretRef |
password |
{cr-name}-initial-admin-password |
Initial password for the built-in admin user account. |
spec.tls.caSecretRef |
ca.crt |
{cr-name}-internal-ca |
Internal CA certificate for service-to-service mTLS |
spec.tls.backendCertSecretRef |
tls.crt,tls.key |
{cr-name}-backend-tls |
Backend service TLS certificate |
spec.tls.workerCertSecretRef |
tls.crt,tls.key |
{cr-name}-worker-tls |
Worker service TLS certificate |
spec.tls.backgroundWorkerCertSecretRef |
tls.crt,tls.key |
{cr-name}-background-worker-tls |
Background worker service TLS certificate |
spec.tls.temporalCertSecretRef |
tls.crt,tls.key |
{cr-name}-temporal-tls |
Temporal server TLS certificate |
spec.tls.uiCertSecretRef |
tls.crt,tls.key |
{cr-name}-ui-tls |
UI service TLS certificate |
For details on how internal TLS works and certificate requirements, see Understand internal TLS. For the full spec.tls field reference, see Installation reference.