Skip to main content

Deployment Overview

Optimal Platform supports multiple deployment targets to meet your infrastructure requirements.

Deployment Options

OptionBest ForComplexity
Local (Kind)Development, demosLow
Cloud (AWS/GCP/Azure)Production, enterpriseMedium
On-PremisePrivate infrastructureMedium-High
Airgap (Outpost)Disconnected environmentsHigh

Local Development

Deploy to a local Kind cluster for development and testing.

# Create cluster
kind create cluster --name optimal-local --config k8s/kind-config.yaml

# Deploy platform
make deploy-local

# Access at http://localhost:3000

Requirements:

  • Docker Desktop
  • 8GB RAM minimum
  • 20GB disk space

See Local Development for details.

Cloud Deployment

AWS (EKS)

# Deploy infrastructure
cd infra/terraform/aws
terraform init && terraform apply

# Deploy platform
make deploy-prod-aws

Features:

  • EKS managed Kubernetes
  • RDS PostgreSQL
  • ElastiCache Redis
  • S3 storage
  • Route53 DNS

See AWS Deployment for details.

GCP (GKE)

# Deploy infrastructure
cd infra/terraform/gcp
terraform init && terraform apply

# Deploy platform
make deploy-prod-gcp

Features:

  • GKE Autopilot or Standard
  • CloudSQL PostgreSQL
  • Memorystore Redis
  • Cloud Storage
  • Cloud DNS

See GCP Deployment for details.

Azure (AKS)

# Deploy infrastructure
cd infra/terraform/azure
terraform init && terraform apply

# Deploy platform
make deploy-prod-azure

Features:

  • AKS managed Kubernetes
  • Azure PostgreSQL
  • Azure Cache for Redis
  • Blob Storage
  • Azure DNS

See Azure Deployment for details.

On-Premise

Deploy to your own Kubernetes cluster.

Requirements:

  • Kubernetes 1.27+
  • Storage provisioner
  • LoadBalancer (or MetalLB)
  • DNS resolution
# Configure kubeconfig
export KUBECONFIG=/path/to/kubeconfig

# Deploy with Helm
helm upgrade --install optimal-platform k8s/helm-charts/optimal-platform \
--namespace optimal-system \
--create-namespace \
-f values-production.yaml

See On-Premise Deployment for details.

Airgap (Outpost)

For disconnected environments without internet access.

Package Creation (Connected)

# Create bundle with all dependencies
outpost package create \
--config outpost.yaml \
--output optimal-v1.0.0.tar.gz

Deployment (Disconnected)

# Load into local registry
outpost deploy init --bundle optimal-v1.0.0.tar.gz

# Deploy to cluster
outpost deploy run --bundle optimal-v1.0.0.tar.gz

See Outpost Overview for details.

Architecture Comparison

┌─────────────────────────────────────────────────────────────────────────────┐
│ DEPLOYMENT ARCHITECTURES │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ LOCAL (Kind) CLOUD (AWS/GCP/Azure) │
│ ┌─────────────────┐ ┌─────────────────────────────────────┐ │
│ │ Single Node │ │ Multi-AZ / Region │ │
│ │ Docker │ │ Managed Services │ │
│ │ Local Storage │ │ Auto-scaling │ │
│ │ Port Forwarding │ │ Load Balancer │ │
│ └─────────────────┘ └─────────────────────────────────────┘ │
│ │
│ ON-PREMISE AIRGAP (Outpost) │
│ ┌─────────────────┐ ┌─────────────────────────────────────┐ │
│ │ Your K8s │ │ Bundled Dependencies │ │
│ │ Your Storage │ │ Local Registry │ │
│ │ Your Network │ │ No Internet Required │ │
│ │ Full Control │ │ SBOM Included │ │
│ └─────────────────┘ └─────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Resource Requirements

Minimum (Development)

ResourceRequirement
Nodes1
CPU4 cores
Memory8 GB
Storage50 GB
ResourceRequirement
Nodes3+ (HA)
CPU8 cores per node
Memory16 GB per node
Storage100 GB SSD per node

Enterprise (High Availability)

ResourceRequirement
Control Plane3 nodes
Worker Nodes5-20 (auto-scaling)
CPU16 cores per worker
Memory32 GB per worker
Storage500 GB NVMe per node

Next Steps

Choose your deployment path: