- Deleted outdated files related to repository audit and deployment status, including AUDIT_COMPLETE.md, AUDIT_FIXES_APPLIED.md, FINAL_DEPLOYMENT_STATUS.md, and others. - Cleaned up documentation to streamline the repository and improve clarity for future maintenance. - Updated README and other relevant documentation to reflect the removal of these files.
5.0 KiB
Proxmox Provider Deployment Guide
This guide provides step-by-step instructions for deploying the Proxmox Crossplane provider.
Prerequisites
Required
- Kubernetes cluster with Crossplane installed
- kubectl configured to access the cluster
- Proxmox VE cluster with API access
- Credentials for Proxmox (username/password or API token)
Optional
- Go 1.21+ (for building from source)
- Docker (for building container images)
- Make (for using Makefile)
Step 1: Build Provider (Optional)
If building from source:
cd crossplane-provider-proxmox
make build
Or build Docker image:
make docker-build
docker tag crossplane-provider-proxmox:latest ghcr.io/sankofa/crossplane-provider-proxmox:latest
docker push ghcr.io/sankofa/crossplane-provider-proxmox:latest
Step 2: Deploy CRDs
# Generate CRDs (if not already generated)
cd crossplane-provider-proxmox
make manifests
# Apply CRDs
kubectl apply -f config/crd/bases/
Or use the deployment script:
./scripts/deploy-proxmox-provider.sh
Step 3: Deploy Provider
kubectl apply -f crossplane-provider-proxmox/config/provider.yaml
Verify deployment:
kubectl get deployment -n crossplane-system crossplane-provider-proxmox
kubectl get pods -n crossplane-system -l app=crossplane-provider-proxmox
Step 4: Create Credentials Secret
Option 1: Username/Password
kubectl create secret generic proxmox-credentials \
--from-literal=credentials.json='{"username":"root@pam","password":"your-password"}' \
-n crossplane-system
Option 2: API Token (Recommended)
kubectl create secret generic proxmox-credentials \
--from-literal=credentials.json='{"username":"root@pam","token":"root@pam!token-name=token-secret"}' \
-n crossplane-system
Step 5: Create ProviderConfig
Update crossplane-provider-proxmox/examples/provider-config.yaml with your actual endpoints and sites, then apply:
kubectl apply -f crossplane-provider-proxmox/examples/provider-config.yaml
Verify ProviderConfig:
kubectl get providerconfig -n crossplane-system
kubectl describe providerconfig proxmox-provider-config -n crossplane-system
Step 6: Verify Provider Connectivity
Check provider logs:
kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox --tail=50
Look for:
- Successful authentication messages
- No connection errors
- Provider ready status
Step 7: Test VM Creation
Create a test VM:
kubectl apply -f crossplane-provider-proxmox/examples/test-vm-instance-1.yaml
Check VM status:
kubectl get proxmoxvm test-vm-instance-1
kubectl describe proxmoxvm test-vm-instance-1
Verify in Proxmox:
- Log into Proxmox Web UI
- Check if VM was created
- Verify VM configuration
Troubleshooting
Provider Not Starting
-
Check pod status:
kubectl describe pod -n crossplane-system -l app=crossplane-provider-proxmox -
Check logs:
kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox -
Verify image exists:
kubectl get deployment -n crossplane-system crossplane-provider-proxmox -o yaml | grep image
Authentication Failures
-
Verify credentials secret:
kubectl get secret proxmox-credentials -n crossplane-system -o yaml -
Test credentials manually:
curl -k -X POST \ -d "username=root@pam&password=your-password" \ https://your-proxmox:8006/api2/json/access/ticket -
Check ProviderConfig:
kubectl get providerconfig proxmox-provider-config -n crossplane-system -o yaml
VM Creation Failures
-
Check VM resource status:
kubectl describe proxmoxvm <vm-name> -
Verify site configuration:
- Check if site exists in ProviderConfig
- Verify endpoint is reachable
- Check node name matches actual Proxmox node
-
Check Proxmox logs:
- Log into Proxmox Web UI
- Check system logs for errors
- Verify storage pools and networks exist
Verification Checklist
- CRDs deployed successfully
- Provider pod is running
- Provider logs show no errors
- Credentials secret created
- ProviderConfig created and ready
- Test VM creation successful
- VM appears in Proxmox Web UI
- VM status updates correctly
Next Steps
After successful deployment:
-
Deploy Prometheus Exporters (TASK-012)
./scripts/setup-proxmox-agents.sh --site us-sfvalley --node ML110-01 -
Configure Cloudflare Tunnels (TASK-013)
- Generate tunnel credentials
- Deploy tunnel configs to nodes
-
Set Up Monitoring (TASK-014)
- Import Grafana dashboards
- Configure alerts
-
Test Multi-Site (TASK-016)
- Deploy VMs to different sites
- Verify cross-site operations