#!/bin/bash # Demo 2: Kubernetes Taskserv Deployment # Time: ~1 minute # Shows: KCL schema validation, dependency resolution, parallel execution set -e echo "╔════════════════════════════════════════════════════════╗" echo "║ Demo 2: Kubernetes Taskserv Deployment ║" echo "║ Time: ~1 minute ║" echo "╚════════════════════════════════════════════════════════╝" echo "" # Step 1: Show command echo "Step 1️⃣ Deploy Kubernetes taskserv" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "$ provisioning taskserv create kubernetes \\" echo " --infra demo \\" echo " --check" echo "" sleep 2 # Step 2: KCL Schema Validation echo "Step 2️⃣ KCL Schema Validation (Type-Safe!)" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "Validating KCL configuration..." echo "" echo "✓ Taskserv type: 'kubernetes' (valid)" echo "✓ Version: '1.28.0' (compatible)" echo "✓ Requirements: [cilium, containerd] (valid)" echo "✓ Infrastructure 'demo': exists and accessible" echo "✓ Compute capacity: sufficient" echo "✓ KCL schema validation: PASSED" echo "" sleep 2 # Step 3: Dependency Resolution echo "Step 3️⃣ Dependency Resolution (Automatic)" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "Resolving taskserv dependencies..." echo "" echo "kubernetes (1.28.0)" echo " ├─ containerd (1.7.0) ← required" echo " ├─ cilium (1.14.0) ← required (CNI)" echo " ├─ etcd (3.5.0) ← internal (auto)" echo " └─ core-utils ← base deps" echo "" echo "Execution Plan:" echo " 1. containerd (in parallel)" echo " 2. cilium (in parallel)" echo " 3. etcd (sequential)" echo " 4. kubernetes (after etcd)" echo "" echo "Parallel efficiency: 75% (4 tasks, 3 in parallel)" echo "" sleep 2 # Step 4: Pre-flight checks echo "Step 4️⃣ Pre-flight Checks" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "Checking deployment readiness..." echo "" echo "✓ Target server exists (web-01)" echo "✓ Server reachable (SSH OK)" echo "✓ Disk space: 48GB available (needs 12GB)" echo "✓ Memory available: 3.2GB (needs 2GB)" echo "✓ Network connectivity: OK" echo "✓ Port availability: 6443 (K8s API), 10250 (kubelet) free" echo "✓ Required binaries available" echo "" echo "All pre-flight checks: PASSED ✓" echo "" sleep 2 # Step 5: Dry-run output echo "Step 5️⃣ Deployment Plan (Dry-Run Preview)" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "┌─────────────────────────────────────────────────────┐" echo "│ Kubernetes Deployment Plan (Dry-Run) │" echo "├─────────────────────────────────────────────────────┤" echo "│ │" echo "│ Phase 1: Dependency Installation (2 min) │" echo "│ • containerd + cilium (parallel) ~90 sec │" echo "│ • etcd initialization ~30 sec │" echo "│ │" echo "│ Phase 2: Kubernetes Setup (3 min) │" echo "│ • Control plane initialization ~100 sec │" echo "│ • API server startup ~30 sec │" echo "│ • Core add-ons deployment ~20 sec │" echo "│ │" echo "│ Phase 3: Verification (30 sec) │" echo "│ • Cluster health check ~15 sec │" echo "│ • Pod readiness verification ~15 sec │" echo "│ │" echo "│ ESTIMATED TOTAL TIME: ~5 minutes │" echo "│ │" echo "│ Status: ✓ Ready to deploy │" echo "│ (No changes made - dry-run mode) │" echo "│ │" echo "└─────────────────────────────────────────────────────┘" echo "" sleep 2 # Step 6: Configuration details echo "Step 6️⃣ Kubernetes Configuration Details" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "API Server:" echo " • Address: 0.0.0.0:6443" echo " • TLS: enabled (auto-generated certs)" echo " • RBAC: enabled" echo " • Audit logging: enabled" echo "" echo "Network:" echo " • Pod CIDR: 10.244.0.0/16" echo " • Service CIDR: 10.96.0.0/12" echo " • DNS: CoreDNS" echo "" echo "Storage:" echo " • Default StorageClass: provisioned" echo " • Monitoring: prometheus enabled" echo "" sleep 2 # Step 7: Summary echo "Step 7️⃣ Summary" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "✓ KCL schema validated (type-safe)" echo "✓ Dependencies resolved automatically" echo "✓ Pre-flight checks passed" echo "✓ Deployment plan verified" echo "✓ Dry-run successful" echo "" echo "To actually deploy Kubernetes, run:" echo " $ provisioning taskserv create kubernetes --infra demo" echo "" echo "Then access with:" echo " $ kubectl --kubeconfig ~/.provisioning/kubeconfig get nodes" echo "" echo "╔════════════════════════════════════════════════════════╗" echo "║ Key Insight: Parallel execution = 75% faster ║" echo "║ vs sequential (Ansible, Terraform) ║" echo "╚════════════════════════════════════════════════════════╝"