Comprehensive guides and references for the OpenFrame platform
Before installing and using OpenFrame CLI, ensure your system meets the following requirements and has the necessary dependencies installed.
| Resource | Minimum | Recommended |
|---|---|---|
| RAM | 24GB | 32GB |
| CPU Cores | 6 cores | 12 cores |
| Disk Space | 50GB free | 100GB free |
| Architecture | x86_64, ARM64 | x86_64, ARM64 |
| OS | Version | Status |
|---|---|---|
| Linux | Ubuntu 20.04+, CentOS 8+, RHEL 8+ | ✅ Fully Supported |
| macOS | 11+ (Big Sur and later) | ✅ Fully Supported |
| Windows | Windows 10/11 with WSL2 | ⚠️ Supported via WSL2 |
Windows Users: OpenFrame CLI requires WSL2 for proper Kubernetes integration. Native Windows support is not currently available.
These tools must be installed before using OpenFrame CLI:
| Tool | Version | Purpose | Installation |
|---|---|---|---|
| Docker | 20.10+ | Container runtime for K3D clusters | Docker Install Guide |
| kubectl | 1.25+ | Kubernetes command-line tool | kubectl Install Guide |
| Helm | 3.10+ | Kubernetes package manager | Helm Install Guide |
| K3D | 5.0+ | Lightweight Kubernetes clusters | K3D Install Guide |
Required only if using development features (openframe dev commands):
| Tool | Version | Purpose | Installation |
|---|---|---|---|
| Telepresence | 2.10+ | Service intercepts for local development | Telepresence Install |
| jq | 1.6+ | JSON processing for dev scripts | jq Install Guide |
docker --version
docker ps
Expected output:
Docker version 20.10.0 or higher
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
kubectl version --client
Expected output:
Client Version: version.Info{Major:"1", Minor:"25"+...}
helm version
Expected output:
version.BuildInfo{Version:"v3.10.0"+...}
k3d version
Expected output:
k3d version v5.0.0+
telepresence version
Expected output:
Client: v2.10.0+
jq --version
Expected output:
jq-1.6+
OpenFrame CLI requires internet access for:
| Port Range | Protocol | Purpose |
|---|---|---|
| 80, 443 | TCP | HTTPS/HTTP for downloads |
| 6443 | TCP | Kubernetes API server |
| 30000-32767 | TCP | Kubernetes NodePort range |
| 2376, 2377 | TCP | Docker daemon (if remote) |
Ensure your firewall allows:
Set these environment variables for optimal experience:
# Docker daemon configuration
export DOCKER_HOST="unix:///var/run/docker.sock"
# Kubernetes configuration
export KUBECONFIG="$HOME/.kube/config"
# OpenFrame CLI configuration
export OPENFRAME_LOG_LEVEL="info"
export OPENFRAME_CONFIG_DIR="$HOME/.openframe"
# Development tools
export TELEPRESENCE_LOGIN_DOMAIN="auth.datawire.io"
For convenience, here's a script to verify all prerequisites:
#!/bin/bash
# prerequisites-check.sh
echo "🔍 Checking OpenFrame CLI prerequisites..."
# Function to check if command exists
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Function to check version
check_version() {
local tool="$1"
local min_version="$2"
local current_version="$3"
echo " $tool: $current_version (required: $min_version+)"
}
errors=0
# Check Docker
if command_exists docker; then
docker_version=$(docker --version | cut -d' ' -f3 | cut -d',' -f1)
check_version "Docker" "20.10.0" "$docker_version"
if ! docker ps >/dev/null 2>&1; then
echo " ❌ Docker daemon is not running or accessible"
((errors++))
fi
else
echo " ❌ Docker not found"
((errors++))
fi
# Check kubectl
if command_exists kubectl; then
kubectl_version=$(kubectl version --client -o json 2>/dev/null | jq -r '.clientVersion.gitVersion' 2>/dev/null || echo "unknown")
check_version "kubectl" "1.25.0" "$kubectl_version"
else
echo " ❌ kubectl not found"
((errors++))
fi
# Check Helm
if command_exists helm; then
helm_version=$(helm version --short | cut -d'+' -f1)
check_version "Helm" "3.10.0" "$helm_version"
else
echo " ❌ Helm not found"
((errors++))
fi
# Check K3D
if command_exists k3d; then
k3d_version=$(k3d version | grep k3d | cut -d' ' -f2)
check_version "K3D" "5.0.0" "$k3d_version"
else
echo " ❌ K3D not found"
((errors++))
fi
# Check optional tools
echo ""
echo "📋 Optional development tools:"
if command_exists telepresence; then
telepresence_version=$(telepresence version --output=json 2>/dev/null | jq -r '.client.version' 2>/dev/null || "unknown")
check_version "Telepresence" "2.10.0" "$telepresence_version"
else
echo " ⚠️ Telepresence not found (optional for dev workflows)"
fi
if command_exists jq; then
jq_version=$(jq --version | cut -d'-' -f2)
check_version "jq" "1.6" "$jq_version"
else
echo " ⚠️ jq not found (optional for dev scripts)"
fi
echo ""
if [ $errors -eq 0 ]; then
echo "✅ All required prerequisites are installed!"
echo "🚀 You're ready to install OpenFrame CLI"
else
echo "❌ $errors required dependencies are missing"
echo "📖 Please install missing dependencies before proceeding"
exit 1
fi
Save this as prerequisites-check.sh, make it executable, and run:
chmod +x prerequisites-check.sh
./prerequisites-check.sh
If you get permission denied errors:
# Add your user to the docker group
sudo usermod -aG docker $USER
# Log out and back in, or run:
newgrp docker
# Create kubeconfig directory
mkdir -p ~/.kube
# Verify KUBECONFIG environment variable
echo `$KUBECONFIG`
# If using Homebrew
brew install k3d
# If using curl
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
wsl --installOnce all prerequisites are installed and verified:
Need help? Join our community: