Overview
This guide describes deploying the Kingdom to Amazon Elastic Kubernetes Service (EKS). Note that full Kingdom deployment on EKS is currently limited compared to GKE.The primary deployment platform for Kingdom is GKE. EKS support focuses on Duchy deployments. For full Kingdom functionality, we recommend deploying to GKE.
Prerequisites
Complete the deployment prerequisites including:- Bazel/Bazelisk installation
- AWS CLI configuration
- kubectl installation
- Terraform installation
AWS vs GKE Considerations
When deploying to AWS, note the following differences:Database Backend
Database Backend
- GKE: Cloud Spanner (globally distributed, strongly consistent)
- EKS: Amazon RDS PostgreSQL (regional)
Blob Storage
Blob Storage
- GKE: Google Cloud Storage
- EKS: Amazon S3
Key Management
Key Management
- GKE: Cloud KMS
- EKS: AWS KMS
Load Balancing
Load Balancing
- GKE: Google Cloud Load Balancer with static IPs
- EKS: AWS Network Load Balancer with Elastic IPs
Kingdom Architecture on AWS
While Duchy components are fully supported on EKS, Kingdom deployment requires adaptation. The Kingdom components include:- Data Server - Internal ClusterIP service for Kingdom data
- System API Server - External LoadBalancer for system operations
- Public API Server - External LoadBalancer for measurement requests
- CronJobs - Maintenance tasks (measurement deletion, exchange cleanup)
Recommended Approach
Hybrid Deployment Architecture
Deploy Kingdom on GKE
Follow the Kingdom GKE deployment guide to deploy Kingdom components to Google Cloud.Configure DNS for Kingdom services:
v2alpha.kingdom.example.comv1alpha.system.kingdom.example.com
Deploy Duchies on EKS
Follow the Duchy EKS deployment guide to deploy Duchy components to AWS.Configure Duchy to connect to Kingdom public API:
Configure Cross-Cloud Networking
Ensure proper networking between clouds:
- Configure DNS resolution for Kingdom endpoints
- Set up proper firewall rules for TLS traffic (port 8443)
- Validate certificate trust chains
Database Considerations
The Kingdom requires a globally consistent, strongly available database:Cloud Spanner (Recommended)
- Globally distributed
- Strong consistency
- 99.999% SLA
- Built for Kingdom workloads
RDS PostgreSQL (Limited)
- Regional deployment
- Eventual consistency in multi-region
- Requires custom replication
- Limited scaling
Infrastructure Planning
If you choose to deploy Kingdom on EKS, consider:VPC Configuration
EKS Cluster
RDS PostgreSQL
Security Considerations
Certificate Management
Use AWS Certificate Manager or your own CA:
- TLS certificates for all API endpoints
- Client certificates for authentication
- Root CA certificates for trust chains
Monitoring and Observability
Set up CloudWatch and Container Insights:Cost Optimization
Use Spot Instances
Use Spot Instances
For non-critical workloads:
RDS Reserved Instances
RDS Reserved Instances
For production databases, use reserved instances for 30-60% cost savings.
S3 Lifecycle Policies
S3 Lifecycle Policies
Configure automatic archival:
Migration Path
If migrating from GKE to EKS:Data Migration
Export data from Cloud Spanner and import to RDS PostgreSQL. This requires schema conversion and extensive testing.
Next Steps
Deploy Kingdom on GKE
Recommended: Use the fully supported GKE deployment
Deploy Duchy on EKS
Deploy computation nodes on AWS
Terraform Guide
Learn about infrastructure as code
Operations
Manage and monitor your deployment