C3 - Testing 2025-07-07
7 minute read
|
C3
|
testing
|
The development testbed will consist of 2 different high availability Kubernetes cluster types, each running the same
kubernetes pods on different node types. Identical infrastructure (otel, metarex, prometheus, grafana) will be used to
extract, store and present the results.
Groups A cluster - Amazon EKS Using the native Amazon Kubernetes infrastructure to host the test environment - in theory, this should be the most
controllable running on AWSGroup R cluster - Rancher K3s Designed to run with the same definitions as Group A - in theory this should be portable across platfrom so that we
can measure a baseline infrastructure cost and isolate the executable code costs more accurately.TBD - GKE - Google’s Kubernetes Engine for native costs TBD - AKS - Microsoft Azure Kubernetes Service for native costs TBD - ACK - Alibaba Cloud for Kubernetes native costs I asked Claude (Anthropic Sonnet 4.0) to estimate the costs of the proposed comparison architecture
Quick Comparison Table Feature Group A (EKS) Group R (k3s) Management Fully managed control plane Self-managed Monthly Cost ~$248 ~$195 Setup Time ~15 minutes ~20 minutes Control Plane HA AWS managed (3 AZs) Self-managed etcd cluster Node Management Managed node groups Manual EC2 instances Networking VPC CNI Flannel CNI Load Balancing AWS LoadBalancer Service Caddy NodePort + NLB Storage EBS CSI Driver Local-path provisioner Monitoring CloudWatch integration Prometheus/Grafana Upgrades Managed Manual Scalability Auto-scaling groups Manual scaling Complexity Medium Low
Architecture Comparison Group A (EKS) Architecture Internet β AWS ALB β EKS Managed Nodes β Pods
β
VPC CNI β ENI per Pod
β
EBS CSI β Persistent Volumes
β
CloudWatch β Monitoring
Group R (k3s) Architecture Internet β NLB β NodePort (30080) β Caddy Pods β Apps
β
Flannel β VXLAN Overlay
β
Local Storage β Persistent Volumes
β
Prometheus β Monitoring
Detailed Feature Comparison 1. Control Plane Management Group A (EKS):
AWS manages etcd, API server, scheduler, controller manager Automatic backups and disaster recovery Multi-AZ deployment by default Managed security patches and updates 99.95% SLA Group R (k3s):
Self-managed embedded etcd cluster Manual backup strategy required HA through multiple controller nodes Manual security updates needed Depends on EC2 SLA (99.99%) 2. Networking Group A (EKS):
1
2
3
4
5
6
# VPC CNI provides:
- Native AWS networking
- Pod-to-pod communication via VPC
- Security groups per pod
- Multiple ENIs per node
- Direct integration with AWS services
Group R (k3s):
1
2
3
4
5
6
# Flannel provides:
- VXLAN overlay network
- Simpler networking model
- Less AWS integration
- Lower resource overhead
- Standard Kubernetes networking
3. Storage Options Group A (EKS):
EBS CSI driver for persistent volumes EFS CSI driver for shared storage FSx integration available Automatic volume provisioning Cross-AZ volume attachment Group R (k3s):
Local-path provisioner (default) Manual EBS integration possible Simpler storage model Node-local storage binding Manual backup strategies 4. Load Balancing Group A (EKS):
1
2
3
4
5
6
7
8
# AWS Load Balancer Controller
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
spec:
type: LoadBalancer # Creates AWS NLB automatically
Group R (k3s):
1
2
3
4
5
6
7
# Manual NLB + NodePort
apiVersion: v1
kind: Service
spec:
type: NodePort
ports:
- nodePort: 30080 # Fixed port on all nodes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
c3/
βββ π group-a-eks/ # EKS cluster deployment
β βββ π terraform/ # Infrastructure as code
β β βββ main.tf # Main Terraform configuration
β β βββ variables.tf # Input variables
β β βββ outputs.tf # Output values
β β βββ vpc.tf # VPC configuration
β β βββ eks.tf # EKS cluster configuration
β β βββ terraform.tfvars.example # Example variables
β βββ π k8s-manifests/ # Kubernetes manifests
β β βββ π caddy/ # Reverse proxy
β β βββ π khello/ # Hello application
β β βββ π mariadb/ # Database
β β βββ π pocketbase/ # Authentication service
β β βββ π prometheus/ # Monitoring
β β βββ π grafana/ # Dashboards
β βββ π scripts/ # Management scripts
β β βββ setup-eks.sh # Cluster setup
β β βββ deploy-apps.sh # Application deployment
β β βββ test-deployment.sh # Testing
β β βββ install-pod.sh # Pod installation
β β βββ backup-cluster.sh # Backup operations
β β βββ performance-tuning.sh # Optimization
β β βββ troubleshoot-cluster.sh # Diagnostics
β βββ configure-environment.sh # Environment configuration
β βββ README.md # EKS documentation
β
βββ π group-r-k3s/ # k3s cluster deployment
β βββ π terraform/ # Infrastructure as code
β β βββ main.tf # Main Terraform configuration
β β βββ variables.tf # Input variables
β β βββ outputs.tf # Output values
β β βββ vpc.tf # VPC configuration
β β βββ instances.tf # EC2 instances
β β βββ security-groups.tf # Security groups
β β βββ π user-data/ # Instance initialization
β β βββ terraform.tfvars.example # Example variables
β βββ π k8s-manifests/ # Kubernetes manifests
β β βββ [same structure as EKS] # Adapted for k3s
β βββ π scripts/ # Management scripts
β β βββ setup-k3s.sh # Cluster setup
β β βββ ssh-to-node.sh # Node access
β β βββ [same as EKS where applicable]
β βββ configure-environment.sh # Environment configuration
β βββ README.md # k3s documentation
β
βββ π gitops/ # GitOps configuration
β βββ argocd-install.sh # ArgoCD installation
β βββ app-of-apps.yaml # Application management
β βββ π applications/ # ArgoCD applications
β βββ khello-app.yaml
β βββ pocketbase.yaml
β βββ monitoring-stack.yaml
β
βββ π environments/ # Multi-environment configs
β βββ π base/ # Base configurations
β β βββ kustomization.yaml
β βββ π development/ # Development environment
β β βββ kustomization.yaml
β β βββ khello-dev.yaml
β βββ π staging/ # Staging environment
β β βββ kustomization.yaml
β β βββ khello-staging.yaml
β βββ π production/ # Production environment
β βββ kustomization.yaml
β βββ khello-production.yaml
β βββ monitoring-production.yaml
β
βββ π monitoring/ # Advanced monitoring
β βββ alertmanager-config.yaml # Alert management
β βββ prometheus-rules-advanced.yaml # Monitoring rules
β βββ grafana-dashboard-comparison.json
β
βββ π security-policies/ # Security configurations
β βββ pod-security-policy.yaml # Pod security
β βββ network-policies.yaml # Network security
β βββ policy-enforcement.yaml # OPA Gatekeeper
β
βββ π compliance/ # Compliance and audit
β βββ audit-report.sh # Audit automation
β βββ policy-enforcement.yaml # Compliance policies
β
βββ π scripts/ # Shared scripts
β βββ backup-cluster.sh # Universal backup
β βββ restore-cluster.sh # Universal restore
β βββ security-scan.sh # Security scanning
β βββ performance-tuning.sh # Performance optimization
β βββ cost-optimizer.sh # Cost optimization
β βββ troubleshoot-cluster.sh # Troubleshooting
β βββ schedule-backups.sh # Backup scheduling
β
βββ π test-suite/ # Comprehensive testing
β βββ run-all-tests.sh # Test automation
β βββ load-test.yml # Load testing config
β βββ curl-format.txt # HTTP testing
β βββ test-performance.sh # Performance testing
β
βββ π .github/workflows/ # CI/CD pipelines
β βββ cluster-deployment.yml # Main deployment pipeline
β βββ gitops-deployment.yml # GitOps pipeline
β βββ security-scan.yml # Security automation
β
βββ π docs/ # Documentation
β βββ comparison-guide.md # EKS vs k3s comparison
β βββ deployment-guide.md # Deployment instructions
β βββ troubleshooting-guide.md # Troubleshooting help
β βββ security-hardening.md # Security best practices
β βββ cost-optimization.md # Cost management
β βββ operational-runbooks.md # Operation procedures
β
βββ prerequisites-check.sh # Prerequisites validation
βββ deploy-comparison-environment.sh # Main deployment script
βββ manage-environments.sh # Environment management
βββ README.md # Main project documentation
βββ CONTRIBUTING.md # Contribution guidelines
βββ LICENSE # Project license
βββ .gitignore # Git ignore rules