Prerequisites
Before deploying the Deplate.io infrastructure, ensure you have all required tools and resources in place.
🔧 Required Tools
Section titled “🔧 Required Tools”Kubernetes Cluster
Section titled “Kubernetes Cluster”- Version: Kubernetes 1.19+
- Resources: Minimum 4 vCPUs, 8GB RAM, 100GB storage
- Access: kubectl configured with admin permissions
Supported Kubernetes Platforms
Section titled “Supported Kubernetes Platforms”- ✅ Google Kubernetes Engine (GKE)
- ✅ Amazon Elastic Kubernetes Service (EKS)
- ✅ Azure Kubernetes Service (AKS)
- ✅ DigitalOcean Kubernetes
- ✅ Self-managed clusters
Helm Package Manager
Section titled “Helm Package Manager”Version: Helm 3.8+
Installation:
Terminal window # macOSbrew install helm# Linuxcurl https://get.helm.sh/helm-v3.12.0-linux-amd64.tar.gz | tar xzsudo mv linux-amd64/helm /usr/local/bin/# Windowschoco install kubernetes-helm
kubectl CLI Tool
Section titled “kubectl CLI Tool”Version: kubectl 1.19+
Installation:
Terminal window # macOSbrew install kubectl# Linuxcurl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl# Windowschoco install kubernetes-cli
Terraform (for AWS resources)
Section titled “Terraform (for AWS resources)”Version: Terraform 1.5+
Installation:
Terminal window # macOSbrew install terraform# Linuxwget https://releases.hashicorp.com/terraform/1.5.0/terraform_1.5.0_linux_amd64.zipunzip terraform_1.5.0_linux_amd64.zipsudo mv terraform /usr/local/bin/# Windowschoco install terraform
AWS CLI (for cloud resources)
Section titled “AWS CLI (for cloud resources)”Version: AWS CLI 2.0+
Installation:
Terminal window # macOSbrew install awscli# Linuxcurl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/install# Windows# Download and run the AWS CLI MSI installer
Task Runner (Optional but Recommended)
Section titled “Task Runner (Optional but Recommended)”Installation:
Terminal window # macOSbrew install go-task/tap/go-task# Linuxsh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin# Windowschoco install go-task
☁️ Cloud Account Requirements
Section titled “☁️ Cloud Account Requirements”AWS Account Setup
Section titled “AWS Account Setup”- Account: AWS account with billing enabled
- IAM User: Administrator access (for initial setup)
- Region: Recommend
eu-west-1
(configurable) - Services: SES, IAM enabled
AWS Configuration
Section titled “AWS Configuration”# Configure AWS CLIaws configure
# Provide:# - AWS Access Key ID# - AWS Secret Access Key# - Default region: eu-west-1# - Default output format: json
# Verify accessaws sts get-caller-identity
🌐 Domain Requirements
Section titled “🌐 Domain Requirements”Domain Management
Section titled “Domain Management”- Domain ownership: Access to manage DNS records
- DNS provider: Cloudflare, Route53, or similar
- Subdomain strategy:
- Main app:
yourdomain.com
- API backend:
app.yourdomain.com
- Static assets:
static.yourdomain.com
(optional)
- Main app:
SSL Certificate Requirements
Section titled “SSL Certificate Requirements”- Let’s Encrypt: Automatic certificate generation (recommended)
- Custom certificates: Supported via Kubernetes secrets
- Wildcard support: Available for multiple subdomains
🛠️ Development Tools (Optional)
Section titled “🛠️ Development Tools (Optional)”Container Registry Access
Section titled “Container Registry Access”- GitHub Container Registry (default)
- Docker Hub
- AWS ECR
- Google Container Registry
Registry Authentication
Section titled “Registry Authentication”# GitHub Container Registryecho $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
# Create Kubernetes secretkubectl create secret docker-registry ghcr-creds \ --docker-server=ghcr.io \ --docker-username=your-username \ --docker-password=your-token \ --namespace=production
📊 Minimum Resource Requirements
Section titled “📊 Minimum Resource Requirements”Kubernetes Cluster
Section titled “Kubernetes Cluster”Minimum Configuration: Nodes: 3 CPU: 4 vCPUs per node Memory: 8GB per node Storage: 100GB per node
Recommended Production: Nodes: 5+ CPU: 8 vCPUs per node Memory: 16GB per node Storage: 500GB per node
Application Resource Allocation
Section titled “Application Resource Allocation”Backend: CPU: 2-6 cores total Memory: 4-12GB total Storage: 50GB for logs/cache
Frontend: CPU: 1-3 cores total Memory: 2-6GB total Storage: 20GB for build cache
Infrastructure: Database: 2 cores, 4GB memory, 100GB storage Cache: 1 core, 2GB memory Queue: 1 core, 2GB memory Storage: 50GB+ for files
🔒 Security Requirements
Section titled “🔒 Security Requirements”Network Security
Section titled “Network Security”- Firewall rules: Ingress controller access (ports 80, 443)
- VPN access: For cluster management (recommended)
- Network policies: Pod-to-pod communication control
Access Control
Section titled “Access Control”- RBAC: Kubernetes role-based access control
- Service accounts: Minimal required permissions
- Secrets management: Kubernetes secrets for sensitive data
Compliance
Section titled “Compliance”- GDPR compliance: EU data residency requirements
- SOC 2: Security controls documentation
- ISO 27001: Information security management
🧪 Verification Checklist
Section titled “🧪 Verification Checklist”Before proceeding with deployment, verify:
Tool Versions
Section titled “Tool Versions”# Check all required toolskubectl version --clienthelm versionterraform versionaws --versiontask --version
Cluster Access
Section titled “Cluster Access”# Verify cluster connectivitykubectl cluster-infokubectl get nodeskubectl get namespaces
Permissions
Section titled “Permissions”# Test administrative accesskubectl auth can-i create deployments --all-namespaceskubectl auth can-i create persistentvolumes
Storage Classes
Section titled “Storage Classes”# Verify storage classes existkubectl get storageclass
# Should show at least one storage class marked as (default)
Ingress Controller
Section titled “Ingress Controller”# Check for ingress controllerkubectl get pods --all-namespaces | grep -E "(nginx|traefik|istio)"
# If not present, install Traefikhelm repo add traefik https://helm.traefik.io/traefikhelm install traefik traefik/traefik --namespace kube-system
Container Registry
Section titled “Container Registry”# Test registry accessdocker login ghcr.io
# Verify Kubernetes secretkubectl get secret ghcr-creds -n production
🚨 Common Setup Issues
Section titled “🚨 Common Setup Issues”Issue: kubectl Access Denied
Section titled “Issue: kubectl Access Denied”Solution: Verify kubeconfig and RBAC permissions
kubectl config current-contextkubectl auth can-i get pods --all-namespaces
Issue: Helm Permission Errors
Section titled “Issue: Helm Permission Errors”Solution: Update Helm repositories
helm repo updatehelm list --all-namespaces
Issue: Storage Class Not Found
Section titled “Issue: Storage Class Not Found”Solution: Create or configure storage class
kubectl get storageclass# Install cluster-specific storage driver
Issue: Ingress Controller Missing
Section titled “Issue: Ingress Controller Missing”Solution: Install Traefik ingress controller
helm repo add traefik https://helm.traefik.io/traefikhelm install traefik traefik/traefik --namespace kube-system
📋 Pre-Deployment Checklist
Section titled “📋 Pre-Deployment Checklist”- Kubernetes cluster running (1.19+)
- kubectl configured and tested
- Helm 3.8+ installed
- Terraform 1.5+ installed (for AWS)
- AWS CLI configured (if using AWS)
- Domain ownership verified
- Container registry access configured
- Storage classes available
- Ingress controller installed
- Sufficient cluster resources
- Network connectivity tested
🔄 Next Steps
Section titled “🔄 Next Steps”Once all prerequisites are met:
- Quick Start - Deploy in 15 minutes
- Architecture Overview - Understand the system
- Configuration Guide - Detailed setup
Completing these prerequisites ensures a smooth deployment experience.