- Add comprehensive database migrations (001-024) for schema evolution - Enhance API schema with expanded type definitions and resolvers - Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth - Implement new services: AI optimization, billing, blockchain, compliance, marketplace - Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage) - Update Crossplane provider with enhanced VM management capabilities - Add comprehensive test suite for API endpoints and services - Update frontend components with improved GraphQL subscriptions and real-time updates - Enhance security configurations and headers (CSP, CORS, etc.) - Update documentation and configuration files - Add new CI/CD workflows and validation scripts - Implement design system improvements and UI enhancements
23 KiB
Proxmox Deployment Task List
Generated: 2024-12-19
Overview
This document contains the comprehensive task list for connecting, reviewing, and deploying Proxmox infrastructure across both instances.
Immediate Tasks (Priority: High)
Connection and Authentication
-
TASK-001: Verify network connectivity to Proxmox Instance 1
- URL: https://192.168.11.10:8006
- Command:
curl -k https://192.168.11.10:8006/api2/json/version - Expected: JSON response with Proxmox version information
- Status: Pending
- Assignee: TBD
- Due Date: TBD
-
TASK-002: Verify network connectivity to Proxmox Instance 2
- URL: https://192.168.11.11:8006
- Command:
curl -k https://192.168.11.11:8006/api2/json/version - Expected: JSON response with Proxmox version information
- Status: Pending
- Assignee: TBD
- Due Date: TBD
-
TASK-003: Test authentication to Instance 1
- Action: ✅ Verify credentials or create API token
- Location: Proxmox Web UI -> Datacenter -> Permissions -> API Tokens
- Token Name:
sankofa-instance-1-api-token - User:
root@pam - Permissions: Administrator
- Status: Completed
- Completed: 2024-12-19
- Note: API token created and verified, authentication working
-
TASK-004: Test authentication to Instance 2
- Action: ✅ Verify credentials or create API token
- Location: Proxmox Web UI -> Datacenter -> Permissions -> API Tokens
- Token Name:
sankofa-instance-2-api-token - User:
root@pam - Permissions: Administrator
- Status: Completed
- Completed: 2024-12-19
- Note: API token created and verified, authentication working
Configuration Review
-
TASK-005: Review current provider-config.yaml
- File:
crossplane-provider-proxmox/examples/provider-config.yaml - Actions:
- Verify endpoints match actual Proxmox instances
- Update site mappings if necessary
- Verify node names match actual cluster nodes
- Check TLS verification settings
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- File:
-
TASK-006: Review Cloudflare tunnel configurations
- Files:
cloudflare/tunnel-configs/proxmox-site-1.yamlcloudflare/tunnel-configs/proxmox-site-2.yamlcloudflare/tunnel-configs/proxmox-site-3.yaml
- Actions:
- Verify hostnames match actual domain configuration
- Update
.localaddresses to actual IPs or hostnames - Verify tunnel credentials are configured
- Check ingress rules for all nodes
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Files:
-
TASK-007: Map Proxmox instances to sites
- Current Configuration:
- us-sfvalley: https://ml110-01.sankofa.nexus:8006 (node: ML110-01)
- us-sfvalley-2: https://r630-01.sankofa.nexus:8006 (node: R630-01)
- Actions:
- ✅ Determine which physical instance (192.168.11.10 or 192.168.11.11) corresponds to which site
- ✅ Update provider-config.yaml with correct mappings
- ✅ Document mapping in architecture docs
- Status: Completed
- Mapping:
- Instance 1 (192.168.11.10) = ML110-01 → us-sfvalley (ml110-01.sankofa.nexus)
- Instance 2 (192.168.11.11) = R630-01 → us-sfvalley-2 (r630-01.sankofa.nexus)
- Instance 2 (192.168.11.11) = R630-01 → eu-west-1, apac-1
- Assignee: TBD
- Due Date: TBD
- Current Configuration:
Short-term Tasks (Priority: Medium)
Crossplane Provider
-
TASK-008: Complete Proxmox API client implementation
- File:
crossplane-provider-proxmox/pkg/proxmox/client.go - Current Status: ✅ All methods implemented
- Actions:
- ✅ Implement actual HTTP client with authentication (
pkg/proxmox/http_client.go) - ✅ Implement
createVM()method - ✅ Implement
updateVM()method - ✅ Implement
deleteVM()method - ✅ Implement
getVMStatus()method - ✅ Implement
ListNodes()with actual API calls - ✅ Implement
ListVMs()with actual API calls - ✅ Implement
ListStorages()with actual API calls - ✅ Implement
ListNetworks()with actual API calls - ✅ Implement
GetClusterInfo()with actual API calls - ✅ Add proper error handling
- ✅ Add request/response logging
- ✅ Implement actual HTTP client with authentication (
- Status: Completed
- Assignee: TBD
- Due Date: TBD
- File:
-
TASK-009: Build and test Crossplane provider
- Actions:
- Run
cd crossplane-provider-proxmox && make build - Fix any build errors
- Run unit tests
- Test provider locally with kind/minikube
- Verify CRDs are generated correctly
- Run
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-010: Deploy Crossplane provider to Kubernetes
- Actions:
- Apply CRDs:
kubectl apply -f crossplane-provider-proxmox/config/crd/bases/ - Deploy provider:
kubectl apply -f crossplane-provider-proxmox/config/provider.yaml - Verify provider pod is running
- Check provider logs for errors
- Verify provider is registered with Crossplane
- Apply CRDs:
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-011: Create ProviderConfig resource
- Actions:
- Update
crossplane-provider-proxmox/examples/provider-config.yamlwith actual values - Create Kubernetes secret with credentials:
kubectl create secret generic proxmox-credentials \ --from-literal=credentials.json='{"username":"root@pam","password":"..."}' \ -n crossplane-system - Apply ProviderConfig:
kubectl apply -f crossplane-provider-proxmox/examples/provider-config.yaml - Verify ProviderConfig status is Ready
- Test provider connectivity to both Proxmox instances
- Update
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Infrastructure Setup
-
TASK-012: Deploy Prometheus exporters to Proxmox nodes
- Script:
scripts/setup-proxmox-agents.sh - Actions:
- Run script on each Proxmox node:
SITE=us-sfvalley NODE=ML110-01 ./scripts/setup-proxmox-agents.sh - Verify pve_exporter is installed and running
- Test metrics endpoint:
curl http://localhost:9221/metrics - Configure Prometheus to scrape metrics
- Verify metrics are being collected
- Run script on each Proxmox node:
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Script:
-
TASK-013: Configure Cloudflare tunnels
- Actions:
- Deploy tunnel configs to Proxmox nodes
- Install cloudflared on each node
- Configure tunnel credentials
- Start tunnel service:
systemctl start cloudflared-tunnel - Verify tunnel is connected:
systemctl status cloudflared-tunnel - Test access via Cloudflare hostnames
- Verify all ingress rules are working
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-014: Set up monitoring dashboards
- Actions:
- Import Grafana dashboards for Proxmox
- Configure data sources (Prometheus)
- Set up alerts for:
- Node down
- High CPU usage
- High memory usage
- Storage full
- VM failures
- Test alert notifications
- Document dashboard access
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Long-term Tasks (Priority: Low)
Testing and Validation
-
TASK-015: Deploy test VMs via Crossplane
- Actions:
- Create test VM manifest for Instance 1
- Apply manifest:
kubectl apply -f test-vm-instance-1.yaml - Verify VM is created in Proxmox
- Verify VM status in Kubernetes
- Repeat for Instance 2
- Test VM lifecycle operations (start, stop, delete)
- Verify VM IP address is reported correctly
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-016: End-to-end testing
- Actions:
- Test VM creation from portal UI
- Test VM management operations (start, stop, restart, delete)
- Test multi-site deployments
- Test VM migration between nodes
- Test storage operations
- Test network configuration
- Verify all operations are logged
- Test error handling and recovery
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-017: Performance testing
- Actions:
- Load test API endpoints
- Test concurrent VM operations
- Measure response times for:
- VM creation
- VM status queries
- VM operations (start/stop)
- Test with multiple concurrent users
- Identify bottlenecks
- Optimize slow operations
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Documentation and Operations
-
TASK-018: Create operational runbooks
- Actions:
- ✅ Create VM provisioning runbook (
docs/runbooks/PROXMOX_VM_PROVISIONING.md) - ✅ Create troubleshooting guide (
docs/runbooks/PROXMOX_TROUBLESHOOTING.md) - ✅ Create disaster recovery procedures (
docs/runbooks/PROXMOX_DISASTER_RECOVERY.md) - ✅ Document common issues and solutions
- ✅ Create escalation procedures
- ✅ Document maintenance windows
- ✅ Create VM provisioning runbook (
- Status: Completed
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-019: Set up backup procedures
- Actions:
- Configure automated VM backups
- Set up backup schedules
- Test backup procedures
- Test restore procedures
- Document backup retention policies
- Set up backup monitoring and alerts
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-020: Security audit
- Actions:
- Review access controls
- Enable TLS certificate validation
- Rotate API tokens
- Review firewall rules
- Audit user permissions
- Review audit logs
- Implement security best practices
- Document security procedures
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Additional Gap and Placeholder Tasks
Configuration Placeholders
-
TASK-021: Replace
yourdomain.complaceholders in Cloudflare tunnel configs- Files:
cloudflare/tunnel-configs/proxmox-site-1.yaml(lines 9, 19, 29, 39, 49)cloudflare/tunnel-configs/proxmox-site-2.yaml(lines 9, 19, 29, 39, 49)cloudflare/tunnel-configs/proxmox-site-3.yaml(lines 9, 19, 29, 39)
- Actions:
- Replace all
yourdomain.comwith actual domain (e.g.,sankofa.nexus) - Update DNS records to point to Cloudflare
- Verify hostnames are accessible
- Replace all
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Files:
-
TASK-022: Replace
.localplaceholders in Cloudflare tunnel configs- Files: All
proxmox-site-*.yamlfiles - Actions:
- Replace
pve*.localwith actual IP addresses or hostnames - Update
httpHostHeadervalues - Test connectivity to actual Proxmox nodes
- Replace
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Files: All
-
TASK-023: Replace
your-proxmox-passwordplaceholder in provider-config.yaml- File:
crossplane-provider-proxmox/examples/provider-config.yaml(line 11) - Actions:
- Update with actual password or use API token
- Ensure credentials are stored securely in Kubernetes secret
- Never commit actual passwords to git
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- File:
-
TASK-024: Replace
yourregistryplaceholder in provider.yaml- File:
crossplane-provider-proxmox/config/provider.yaml(line 24) - Actions:
- Update image path to actual container registry
- Build and push provider image to registry
- Update imagePullPolicy if using specific tags
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- File:
-
TASK-025: Replace
yourorg.ioplaceholders in GitOps files- Files:
gitops/infrastructure/claims/vm-claim-example.yaml(line 1)gitops/infrastructure/xrds/virtualmachine.yaml(lines 4, 6)
- Actions:
- Replace with actual organization/namespace (e.g.,
proxmox.sankofa.nexus) - Update all references consistently
- Verify CRDs match updated namespace
- Replace with actual organization/namespace (e.g.,
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Files:
Implementation Gaps
-
TASK-026: Implement HTTP client in Proxmox API client
- File:
crossplane-provider-proxmox/pkg/proxmox/client.go - Actions:
- Add HTTP client with proper TLS configuration
- Implement authentication (ticket and token support)
- Add request/response logging
- Handle CSRF tokens properly
- Add connection pooling and timeouts
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- File:
-
TASK-027: Replace placeholder metrics collector in controller
- File:
crossplane-provider-proxmox/pkg/controller/vmscaleset/controller.go(line 49) - Actions:
- Implement actual metrics collection
- Add Prometheus metrics for VM operations
- Track VM creation/deletion/update metrics
- Add error rate metrics
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- File:
-
TASK-028: Verify and update Proxmox resource names
- Actions:
- ✅ Connected to both instances via API
- ✅ Gathered storage pool information
- ✅ Gathered network interface information
- ✅ Documented available resources in INSTANCE_INVENTORY.md
- ⚠️ Some endpoints require Sys.Audit permission (token may need additional permissions)
- Status: Completed (with limitations)
- Completed: 2024-12-19
- Note: Resource inventory gathered via API, documented in INSTANCE_INVENTORY.md
- Actions:
DNS and Network Configuration
-
TASK-029: Configure DNS records for Proxmox hostnames
- Actions:
- ✅ Create DNS A records for:
ml110-01.sankofa.nexus→ 192.168.11.10 (Instance 1)r630-01.sankofa.nexus→ 192.168.11.11 (Instance 2)
- ✅ Create CNAME records for API endpoints:
ml110-01-api.sankofa.nexus→ml110-01.sankofa.nexusr630-01-api.sankofa.nexus→r630-01.sankofa.nexus
- ✅ Create CNAME records for metrics:
ml110-01-metrics.sankofa.nexus→ml110-01.sankofa.nexusr630-01-metrics.sankofa.nexus→r630-01.sankofa.nexus
- ✅ DNS records created via Cloudflare API
- ✅ DNS configuration files and scripts created
- ✅ DNS propagation verified
- ✅ Create DNS A records for:
- Status: Completed
- Completed: 2024-12-19
- Files Created:
cloudflare/dns/sankofa.nexus-records.yaml- DNS record definitionscloudflare/terraform/dns.tf- Terraform DNS configurationscripts/setup-dns-records.sh- Automated DNS setup scriptscripts/hosts-entries.txt- Local /etc/hosts entriesdocs/proxmox/DNS_CONFIGURATION.md- Complete DNS guide
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-030: Generate Cloudflare tunnel credentials
- Status: Pending
- Note: Requires SSH access to nodes
-
TASK-040: Create Proxmox cluster
- Actions:
- ✅ Create cluster on ML110-01 (first node)
- ✅ Add R630-01 to cluster (second node)
- ⚠️ Configure quorum for 2-node cluster (verify via Web UI/SSH)
- ✅ Verify cluster status (ML110-01 sees 2 nodes - cluster likely exists)
- Status: Completed (pending final verification)
- Cluster Name: sankofa-sfv-01
- Evidence: ML110-01 nodes list shows both r630-01 and ml110-01
- Completed: 2024-12-19
- Note: Cluster appears to exist based on node visibility. Final verification recommended via Web UI.
- Methods Available:
- Web UI (Recommended): Datacenter → Cluster → Create/Join
- SSH: Use
pvecm createandpvecm addcommands - Script:
./scripts/create-proxmox-cluster-ssh.sh(requires SSH)
- Documentation:
docs/proxmox/CLUSTER_SETUP.md - Note: API-based cluster creation is limited; requires SSH or Web UI
- Actions:
- Create tunnel for each site via Cloudflare dashboard or API
- Generate tunnel credentials for:
proxmox-site-1-tunnelproxmox-site-2-tunnelproxmox-site-3-tunnel
- Store credentials securely (not in git)
- Deploy credentials to Proxmox nodes
- Test tunnel connectivity
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Test Resources
-
TASK-031: Create test VM manifests for both instances
- Actions:
- Create
test-vm-instance-1.yamlwith actual values - Create
test-vm-instance-2.yamlwith actual values - Use verified storage pool names
- Use verified network bridge names
- Use verified OS template names
- Include valid SSH keys (not placeholders)
- Test manifests before deployment
- Create
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-032: Replace placeholder SSH keys in examples
- Files:
crossplane-provider-proxmox/examples/vm-example.yaml(lines 21, 23)gitops/infrastructure/claims/vm-claim-example.yaml(line 22)
- Actions:
- Replace with actual SSH public keys or remove if not needed
- Document how to add SSH keys
- Consider using secrets for SSH keys
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Files:
Module and Build Configuration
-
TASK-033: Verify and update Go module paths
- File:
crossplane-provider-proxmox/go.mod - Actions:
- Verify module path matches actual repository
- Update imports if module path changed
- Ensure all dependencies are correct
- Run
go mod tidyto clean up
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- File:
-
TASK-034: Create Makefile for Crossplane provider
- Actions:
- Create
Makefilewith build targets - Add targets for:
build- Build provider binarytest- Run testsgenerate- Generate CRDsdocker-build- Build container imagedocker-push- Push to registry
- Document build process
- Create
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Documentation Gaps
-
TASK-035: Create Grafana dashboard JSON files
- Actions:
- Create Proxmox cluster dashboard
- Create Proxmox node dashboard
- Create VM metrics dashboard
- Export dashboards as JSON
- Store in
infrastructure/monitoring/dashboards/ - Document dashboard import process
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-036: Create operational runbooks
- Actions:
- VM provisioning runbook
- Troubleshooting guide with common issues
- Disaster recovery procedures
- Maintenance procedures
- Escalation procedures
- Store in
docs/runbooks/
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-037: Document actual Proxmox resources
- Actions:
- Document available storage pools
- Document available network bridges
- Document available OS templates/images
- Document node names and roles
- Create resource inventory document
- Update examples with actual values
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Security and Compliance
-
TASK-038: Review and update TLS configuration
- Actions:
- Enable TLS certificate validation (set
insecureSkipTLSVerify: false) - Obtain proper SSL certificates for Proxmox nodes
- Configure certificate rotation
- Document certificate management
- Test TLS connections
- Enable TLS certificate validation (set
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
-
TASK-039: Audit and secure API tokens
- Actions:
- Review token permissions (principle of least privilege)
- Set token expiration dates
- Rotate tokens regularly
- Document token management procedures
- Store tokens securely (Kubernetes secrets, not in code)
- Status: Pending
- Assignee: TBD
- Due Date: TBD
- Actions:
Multi-Tenancy Tasks (NEW - Sovereign, Superior to Azure)
Database & Schema
-
TASK-041: Create multi-tenant database schema with tenants, tenant_users, and billing tables
- Status: Completed
- Completed: Current session
- Note: Migration 012_tenants_and_billing.ts created
-
TASK-042: Add tenant_id to resources, sites, and resource_inventory tables
- Status: Completed
- Completed: Current session
Identity & Access Management
-
TASK-043: Implement Keycloak-based sovereign identity service
- Status: Completed
- Completed: Current session
- Note: NO Azure dependencies - fully sovereign
-
TASK-044: Create tenant-aware authentication middleware
- Status: Completed
- Completed: Current session
-
TASK-045: Configure Keycloak multi-realm support
- Status: Pending
- Note: Requires Keycloak deployment
GraphQL & API
-
TASK-046: Add Tenant types and queries to GraphQL schema
- Status: Completed
- Completed: Current session
-
TASK-047: Add billing queries and mutations to GraphQL schema
- Status: Completed
- Completed: Current session
-
TASK-048: Update resource queries to be tenant-aware
- Status: Completed
- Completed: Current session
Billing (Superior to Azure Cost Management)
-
TASK-049: Implement billing service with per-second granularity
- Status: Completed
- Completed: Current session
- Note: Per-second vs Azure's hourly
-
TASK-050: Create cost breakdown and forecasting
- Status: Completed
- Completed: Current session
-
TASK-051: Implement invoice generation
- Status: Partial (createInvoice method exists, needs full implementation)
- Note: Basic structure complete
Documentation
-
TASK-052: Create tenant management documentation
- Status: Completed
- Completed: Current session
-
TASK-053: Create billing guide documentation
- Status: Completed
- Completed: Current session
-
TASK-054: Create identity setup documentation
- Status: Completed
- Completed: Current session
-
TASK-055: Create Azure migration guide
- Status: Completed
- Completed: Current session
Task Summary
- Total Tasks: 55 (39 original + 16 new multi-tenancy tasks)
- High Priority: 7
- Medium Priority: 7
- Low Priority: 6
- Gap/Placeholder Tasks: 19
- Multi-Tenancy Tasks: 16
- Completed: 45 (82%)
- In Progress: 0
- Pending: 10 (18%)
- Configuration Ready: 3 (DNS, ProviderConfig, Scripts)
Next Steps
-
For Multi-Tenancy Deployment: See REMAINING_TASKS.md for complete task list including deployment procedures
-
Run the review script to gather current status:
./scripts/proxmox-review-and-plan.sh # or python3 ./scripts/proxmox-review-and-plan.py -
Review the generated status reports in
docs/proxmox-review/ -
Start with TASK-001 and TASK-002 to verify connectivity
-
For quick deployment: See QUICK_START_DEPLOYMENT.md
-
Update this document as tasks are completed
Notes
- All tasks should be updated with actual status, assignee, and due dates
- Use the review scripts to gather current state before starting tasks
- Document any issues or blockers encountered
- Update configuration files as mappings are determined