Files
Sankofa/docs/BUILD_AND_DEPLOY_INSTRUCTIONS.md
defiQUG 9daf1fd378 Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements
- 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
2025-12-12 18:01:35 -08:00

3.3 KiB

Build and Deploy Instructions

Date: 2025-12-11
Status: CODE FIXED - NEEDS IMAGE LOADING


Build Status

Provider code fixed and built successfully

  • Fixed compilation errors
  • Added findVMNode function
  • Fixed variable scoping issue
  • Image built: crossplane-provider-proxmox:latest

Deployment Steps

1. Build Provider Image

cd crossplane-provider-proxmox
docker build -t crossplane-provider-proxmox:latest .

COMPLETE

2. Load Image into Kind Cluster

Required: kind command must be installed

kind load docker-image crossplane-provider-proxmox:latest --name sankofa

⚠️ PENDING: kind command not available in current environment

Alternative Methods:

Option A: Install kind

# Install kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

# Then load image
kind load docker-image crossplane-provider-proxmox:latest --name sankofa

Option B: Use Registry

# Tag and push to registry
docker tag crossplane-provider-proxmox:latest <registry>/crossplane-provider-proxmox:latest
docker push <registry>/crossplane-provider-proxmox:latest

# Update provider.yaml to use registry image
# Change imagePullPolicy from "Never" to "Always" or "IfNotPresent"

Option C: Manual Copy (Advanced)

# Save image to file
docker save crossplane-provider-proxmox:latest -o provider-image.tar

# Copy to kind node and load
docker cp provider-image.tar kind-sankofa-control-plane:/tmp/
docker exec kind-sankofa-control-plane ctr -n=k8s.io images import /tmp/provider-image.tar

3. Restart Provider

kubectl rollout restart deployment/crossplane-provider-proxmox -n crossplane-system
kubectl rollout status deployment/crossplane-provider-proxmox -n crossplane-system

COMPLETE (but using old image until step 2 is done)

4. Verify Deployment

kubectl get pods -n crossplane-system -l app=crossplane-provider-proxmox
kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox --tail=20

Current Status

Completed

  1. Code fixes applied
  2. Provider image built
  3. Templates updated to cloud image format
  4. Provider deployment restarted

Pending

  1. Load image into kind cluster (requires kind command)
  2. Test VM creation with new provider

Next Steps

  1. Install kind or use alternative image loading method
  2. Load image into cluster
  3. Restart provider (if not already done)
  4. Test VM 100 creation
  5. Verify task monitoring works

Verification

After loading image and restarting:

  1. Check provider logs for task monitoring:

    kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox | grep -i "task\|importdisk\|upid"
    
  2. Deploy VM 100:

    kubectl apply -f examples/production/vm-100.yaml
    
  3. Monitor creation:

    kubectl get proxmoxvm vm-100 -w
    
  4. Check Proxmox:

    qm status 100
    qm config 100
    

Expected Behavior

With the fixed provider:

  • Provider waits for importdisk task to complete
  • No lock timeouts
  • VM configured correctly after import
  • Boot disk attached properly

Status: AWAITING IMAGE LOAD INTO CLUSTER