Aller au contenu principal

Deployment Prerequisites

This document provides the complete list of infrastructure, network, and authentication requirements for deploying STOA Platform. Share this with your IT, network, and security teams before deployment.

Which deployment model?

See Hybrid Deployment to choose between Hybrid, Full On-Premises, or Multi-Cloud models. This page covers the technical prerequisites for all models.


1. Infrastructure Requirements

Kubernetes Cluster

RequirementMinimumRecommended
Kubernetes version1.28+1.30+
Worker nodes23+
CPU per node4 vCPU8 vCPU
RAM per node8 GB16 GB
Disk per node40 GB SSD100 GB NVMe
Container runtimecontainerd 1.7+containerd 1.7+
Ingress controllerAny (nginx, Traefik, Envoy)nginx-ingress
cert-managerv1.12+v1.14+
Helmv3.12+v3.14+

Supported distributions: EKS, GKE, AKS, OVH MKS, K3s, RKE2, OpenShift 4.12+.

Resource Budget per Component

ComponentReplicasCPU RequestCPU LimitRAM RequestRAM LimitDisk
Control Plane API2250m1000m256Mi1Gi
Console UI1100m500m128Mi256Mi
Developer Portal1100m500m128Mi256Mi
Stoa Gateway2250m1000m128Mi512Mi
Keycloak1500m2000m512Mi2Gi
PostgreSQL1 (HA: 2)250m1000m512Mi2Gi20Gi PVC
Total (minimum)8 pods1.8 CPU7 CPU2 Gi6.5 Gi20 Gi

External Dependencies (Full On-Premises only)

These are only required for the Full On-Premises model. In Hybrid mode, STOA Cloud provides them.

ComponentVersionPurposeAlternative
PostgreSQL16+Control Plane databaseAny managed PG (RDS, Cloud SQL, Azure DB)
Redis7+Gateway caching (optional)
OpenSearch2.11+Logs and search (optional)Elasticsearch 8.x

2. Network Flow Matrix

Overview

Detailed Port Matrix

Inbound Flows (into your cluster)

SourceDestinationPortProtocolPurposeRequired?
Users / BrowsersIngress Controller443HTTPS/TLSConsole, Portal, API accessYes
Users / BrowsersIngress Controller80HTTPRedirect to HTTPSRecommended
AI Agents (Claude, GPT, etc.)Ingress Controller443HTTPS/TLSMCP Gateway (tool discovery + calls)Yes
AI AgentsIngress Controller443HTTPS/TLSOAuth 2.1 discovery + token exchangeYes
Monitoring (Uptime Kuma, etc.)Ingress Controller443HTTPS/TLSHealth check endpointsRecommended

Outbound Flows (from your cluster)

SourceDestinationPortProtocolPurposeRequired?
Gateway podsBackend APIsvariesHTTP/HTTPSAPI traffic routingYes
Gateway podsIdentity Provider443HTTPSOIDC token validation (JWKS)Yes
Gateway podsSTOA Cloud API443HTTPSConfig sync, metrics push (Hybrid only)Hybrid only
Control Plane APIIdentity Provider443HTTPSUser federation, token introspectionYes
Control Plane APIPostgreSQL5432TCP/TLSDatabase queriesYes
K8s nodesContainer Registry443HTTPSPull container images (GHCR)Yes
cert-managerLet's Encrypt443HTTPSTLS certificate issuance (ACME)If using LE
Gateway podsLLM Provider APIs443HTTPSAI routing (if LLM features enabled)Optional

Internal Flows (within your cluster)

SourceDestinationPortProtocolPurpose
Ingress ControllerConsole UI pods8080HTTPFrontend serving
Ingress ControllerPortal pods8080HTTPPortal serving
Ingress ControllerControl Plane API pods8000HTTPREST API
Ingress ControllerGateway pods8080HTTPMCP + proxy traffic
Ingress ControllerKeycloak pods8080HTTPAuth UI + OIDC endpoints
Control Plane APIKeycloak8080HTTPToken validation, user sync
Control Plane APIPostgreSQL5432TCPDatabase
GatewayControl Plane API8000HTTPConfig loading, tool registry
GatewayKeycloak8080HTTPJWKS endpoint, token introspection
KeycloakPostgreSQL5432TCPAuth database

Firewall Rules Summary

Provide this to your network team:

# INBOUND (into K8s cluster)
ALLOW TCP/443 FROM 0.0.0.0/0 TO <INGRESS_LB_IP> # HTTPS traffic
ALLOW TCP/80 FROM 0.0.0.0/0 TO <INGRESS_LB_IP> # HTTP→HTTPS redirect

# OUTBOUND (from K8s cluster)
ALLOW TCP/443 TO ghcr.io # Container images
ALLOW TCP/443 TO acme-v02.api.letsencrypt.org # TLS certs (if using LE)
ALLOW TCP/443 TO <YOUR_IDP_DOMAIN> # OIDC (Keycloak, Okta, Azure AD)
ALLOW TCP/5432 TO <YOUR_PG_HOST> # PostgreSQL (if external)
ALLOW TCP/443 TO api.gostoa.dev # STOA Cloud (Hybrid only)

# OPTIONAL OUTBOUND
ALLOW TCP/443 TO api.anthropic.com # LLM routing (if enabled)
ALLOW TCP/443 TO api.openai.com # LLM routing (if enabled)

3. DNS Requirements

Subdomains

STOA requires 5 subdomains pointing to your ingress controller's external IP or load balancer.

SubdomainServicePurpose
console.<YOUR_DOMAIN>Console UIAdmin dashboard
portal.<YOUR_DOMAIN>Developer PortalAPI catalog, subscriptions
api.<YOUR_DOMAIN>Control Plane APIREST API + admin operations
mcp.<YOUR_DOMAIN>Stoa GatewayMCP protocol, AI agent access, API proxy
auth.<YOUR_DOMAIN>KeycloakSSO, OIDC provider

Optional subdomains:

SubdomainServiceWhen needed
grafana.<YOUR_DOMAIN>GrafanaIf deploying observability stack
vault.<YOUR_DOMAIN>Vault/InfisicalIf deploying secrets manager

DNS Configuration

# All subdomains point to the same ingress LB IP
console.<YOUR_DOMAIN> A <INGRESS_LB_IP>
portal.<YOUR_DOMAIN> A <INGRESS_LB_IP>
api.<YOUR_DOMAIN> A <INGRESS_LB_IP>
mcp.<YOUR_DOMAIN> A <INGRESS_LB_IP>
auth.<YOUR_DOMAIN> A <INGRESS_LB_IP>

TLS certificates are managed by cert-manager (ClusterIssuer with Let's Encrypt or your internal CA). No manual certificate management required.


4. Authentication Requirements

Identity Provider (IdP)

STOA uses Keycloak as its identity broker. Keycloak can federate with your existing IdP.

IdP TypeIntegrationProtocolWhat you provide
Keycloak (bundled)Included in Helm chartOIDCNothing — ready out of the box
Azure AD / Entra IDKeycloak identity brokerOIDC/SAMLTenant ID, Client ID, Client Secret
OktaKeycloak identity brokerOIDCIssuer URL, Client ID, Client Secret
Oracle OAMKeycloak identity brokerSAML 2.0Metadata XML, Entity ID
LDAP/Active DirectoryKeycloak user federationLDAPConnection URL, Bind DN, Search Base
Any OIDC providerKeycloak identity brokerOIDCIssuer, Client ID, Secret

RBAC Roles

STOA ships with 4 predefined roles. Map them to your IdP groups:

STOA RolePermissionsTypical Mapping
cpi-adminFull platform administrationIT Admin group
tenant-adminManage own tenant (APIs, apps, users)API Team Lead
devopsDeploy and promote APIsDevOps / SRE team
viewerRead-only accessAuditors, stakeholders

MCP OAuth 2.1 (AI Agent Access)

AI agents (Claude, GPT, custom) authenticate via OAuth 2.1 with PKCE:

RequirementDetail
ProtocolOAuth 2.1 (RFC 9728 discovery + RFC 8414 metadata)
Grant typeAuthorization Code with PKCE (S256)
Client typePublic (no client_secret)
RegistrationDynamic Client Registration (DCR) — automatic
Scopesstoa:read, stoa:write, stoa:admin

No manual configuration needed for AI agents — the Gateway handles OAuth discovery, DCR, and PKCE automatically.


5. Container Images

All STOA images are published to GitHub Container Registry (GHCR).

ImageTag PolicySize
ghcr.io/stoa-platform/control-plane-apilatest, semver~250 MB
ghcr.io/stoa-platform/control-plane-uilatest, semver~50 MB
ghcr.io/stoa-platform/portallatest, semver~50 MB
ghcr.io/stoa-platform/stoa-gatewaylatest, semver~30 MB
ghcr.io/stoa-platform/keycloaklatest~500 MB

Air-Gapped / Private Registry

For environments without internet access:

# Pull and re-tag for your private registry
for img in control-plane-api control-plane-ui portal stoa-gateway keycloak; do
docker pull ghcr.io/stoa-platform/$img:latest
docker tag ghcr.io/stoa-platform/$img:latest your-registry.internal/$img:latest
docker push your-registry.internal/$img:latest
done

Then override in Helm values:

global:
imageRegistry: your-registry.internal
imagePullSecrets:
- name: your-registry-secret

6. Deployment Topology Comparison

Your Responsibility                    STOA Cloud (EU)
┌─────────────────────────┐ ┌────────────────────┐
│ K8s Cluster │ │ Control Plane │
│ ├── Stoa Gateway (2) │───HTTPS───▶│ ├── Console UI │
│ ├── Your Backend APIs │ outbound │ ├── Portal │
│ └── Identity Provider │ only │ ├── API │
│ │ │ ├── Keycloak │
│ Firewall: TCP/443 OUT │ │ └── PostgreSQL │
└─────────────────────────┘ └────────────────────┘

You manage: K8s cluster, gateway pods, backend APIs, IdP federation. STOA manages: Control Plane, database, updates, monitoring. Network: Outbound HTTPS only (no inbound from STOA Cloud).

Full On-Premises

Your Responsibility (everything)
┌──────────────────────────────────────┐
│ K8s Cluster │
│ ├── Control Plane API (2) │
│ ├── Console UI (1) │
│ ├── Portal (1) │
│ ├── Stoa Gateway (2) │
│ ├── Keycloak (1) │
│ ├── PostgreSQL (1-2) │
│ └── [Optional] Grafana, OpenSearch │
│ │
│ Firewall: TCP/443 IN (users/agents) │
│ TCP/443 OUT (GHCR, LE) │
└──────────────────────────────────────┘

You manage: Everything. STOA provides: Helm chart, container images, documentation, support. Network: Inbound HTTPS for users + outbound for image pulls and TLS certs.


7. Pre-Deployment Checklist

Hand this to your IT team. All items must be confirmed before deployment day.

Infrastructure

  • Kubernetes cluster provisioned (version 1.28+)
  • Minimum 2 worker nodes (4 vCPU, 8 GB each)
  • Ingress controller installed (nginx-ingress, Traefik, or equivalent)
  • cert-manager installed (v1.12+)
  • Helm v3.12+ available
  • kubectl access confirmed from deployment machine
  • Storage class available for PVCs (20 Gi minimum)

Network

  • Ingress load balancer IP assigned
  • 5 DNS records created (console, portal, api, mcp, auth)
  • DNS propagation verified (dig console.<YOUR_DOMAIN>)
  • Firewall rules applied (see Section 2)
  • Outbound HTTPS to ghcr.io confirmed
  • Outbound HTTPS to acme-v02.api.letsencrypt.org confirmed (if using LE)
  • Outbound HTTPS to your IdP confirmed

Authentication

  • IdP federation details collected (type, endpoint, client ID/secret)
  • RBAC role mapping defined (4 STOA roles → your IdP groups)
  • Admin user identified for initial setup

Database (Full On-Premises only)

  • PostgreSQL 16+ provisioned
  • Two databases created: stoa_production, keycloak
  • Connection string available (host, port, user, password)
  • SSL/TLS enabled for DB connections

Container Images

  • Pull from ghcr.io confirmed, OR
  • Images mirrored to private registry + Helm values updated

8. Support Matrix

ItemHybridFull On-Premises
Control Plane updatesAutomaticHelm upgrade (manual)
Security patchesAutomaticImage pull + rollout
Database backupsSTOA-managedYour responsibility
TLS certificatescert-manager (auto)cert-manager or your CA
MonitoringIncluded (Grafana)Optional (Helm addon)
SLA99.9% (Control Plane)Depends on your infra
Support channelsEmail + SlackEmail + Slack

Next Steps

  1. Choose your modelHybrid Deployment
  2. Quick startQuick Start Guide
  3. Security reviewSecurity & Compliance
  4. MigrationMigration Guides (Kong, Apigee, webMethods, etc.)

Questions about prerequisites? Contact us — we help enterprise teams with architecture reviews and deployment planning.