Deployment (Docker & Kubernetes)
Relevant source files
The following files were used as context for generating this wiki page:
FixOps provides a flexible, enterprise-grade deployment architecture designed to support a variety of environments ranging from local development to production-scale cloud clusters. The deployment system leverages containerization through Docker and orchestration via Kubernetes (K8s), with automated provisioning supported by Backstage templates and Terraform infrastructure-as-code.
The project supports multi-cloud deployment strategies (AWS, Azure, GCP) and standalone Docker Compose setups. It emphasizes high availability through replica management, persistent storage for the "Evidence Lake," and integrated security via automated secret management and RBAC configurations.
Docker Deployment
The Docker deployment model is primarily intended for standalone servers, edge deployments, and development environments. It utilizes Docker Compose to orchestrate the core FixOps services and supporting infrastructure.
Docker Architecture and Components
The Docker ecosystem consists of core backend and frontend containers supported by database and caching layers.
The diagram shows the service interdependencies within a Docker Compose environment, including the optional monitoring and proxy layers.
Sources: deployment-packs/docker/backstage/template.yaml:148-230
Configuration Profiles
Docker Compose utilizes profiles to enable or disable specific stacks based on the deployment type:
- frontend: Deploys the React-based UI.
- nginx: Deploys an Nginx reverse proxy for SSL termination and request routing.
- monitoring: Deploys Prometheus and Grafana for observability.
Sources: deployment-packs/docker/backstage/template.yaml:81-95, 203-214
| Parameter | Default Value | Description |
|---|---|---|
BACKEND_PORT | 8001 | Host port for the Backend API. |
FRONTEND_PORT | 3000 | Host port for the Frontend UI. |
BACKEND_REPLICAS | 1 | Number of backend container instances. |
WORKERS | 4 | Uvicorn worker processes per container. |
| Sources: deployment-packs/docker/backstage/template.yaml:104-140 |
Kubernetes Deployment
FixOps supports "Vanilla" Kubernetes distributions (k3s, k8s, OpenShift, Rancher) as well as managed cloud offerings like AWS EKS, Azure AKS, and GCP GKE.
Kubernetes Logic and Resource Flow
The deployment process involves creating isolated namespaces, configuring persistent volume claims (PVC) for the Evidence Lake, and deploying the application via Kustomize or Helm.
This sequence illustrates the standard order of operations when deploying FixOps to a cluster.
Sources: deployment-packs/kubernetes/backstage/template.yaml:118-164, archive/enterprise_legacy/deploy-production.sh:64-100
Key Deployment Manifests
The Kubernetes infrastructure is defined through several key resource types:
- Deployments: Manages the
fixops-backend,mongodb, andredispods. Replicas for the backend are typically set between 3 and 10 for production HA. - Services: Exposes the backend at
fixops-backend-service:8001. - Ingress: Routes external traffic via hostnames like
fixops.example.comusing Ingress Classes such as Nginx or Traefik. - Secrets: Stores sensitive data including
EMERGENT_LLM_KEY,MONGO_INITDB_ROOT_PASSWORD, andREDIS_PASSWORD.
Sources: deployment-packs/kubernetes/backstage/template.yaml:45-80, 143-155, archive/enterprise_legacy/deploy-bank.sh:58-75
Cloud-Specific Provisioning (Terraform)
For enterprise cloud environments, FixOps utilizes Terraform to provision both the underlying infrastructure (EKS/AKS/GKE) and the application layer.
Deployment Workflow
Cloud deployments follow a structured pipeline that validates prerequisites, plans infrastructure, and executes the deployment.
- Validation: Checks for
kubectl,terraform, and cloud CLI availability. - Infrastructure Plan: Generates a Terraform plan using variables for region, cluster name, and storage size.
- Apply: Provisions VPCs, subnets, node groups, and the Kubernetes workloads.
- Verification: Waits for pods to reach
Readystatus and executes health checks against the/healthand/readyendpoints.
Sources: archive/enterprise_legacy/deploy-complete.sh:30-100, deployment-packs/aws/backstage/template.yaml:112-160, scripts/deploy-gcp.sh:75-120
Multi-Cloud Support
The project contains specialized templates for major providers:
| Provider | Components Managed | Storage Type |
|---|---|---|
| AWS | EKS Cluster, ALB Ingress, EBS Volumes | EBS (gp3) |
| Azure | AKS Cluster, App Gateway, Azure Disks | Azure Managed Disk |
| GCP | GKE Cluster, Google Cloud Load Balancer | Standard/SSD PD |
| Sources: deployment-packs/aws/backstage/template.yaml:15-50, deployment-packs/azure/backstage/template.yaml:15-50, scripts/deploy-gcp.sh:30-60 |
Secret Management and Environment
The scripts/docker-entrypoint.sh and various deployment scripts handle the injection of critical runtime variables.
# Example Secret Creation in Kubernetes
kubectl create secret generic fixops-secrets \
--from-literal=EMERGENT_LLM_KEY="${EMERGENT_LLM_KEY}" \
--from-literal=SECRET_KEY="${SECRET_KEY}" \
--from-literal=MONGO_URL="mongodb://fixops:${MONGO_PASSWORD}@mongodb:27017" \
--namespace ${NAMESPACE}
Sources: archive/enterprise_legacy/deploy-production.sh:75-92, deployment-packs/kubernetes/backstage/template.yaml:135-148
Summary
The FixOps deployment system provides a robust path from development to production. By supporting Docker Compose for light environments and a comprehensive Kubernetes/Terraform stack for cloud-native enterprise needs, the project ensures that the Decision Engine and Evidence Lake remain scalable, highly available, and secure across different infrastructure providers. Key operational features include automated health verification, persistent storage scaling up to 1Ti, and modular monitoring profiles.