DEPLOYMENT
Aether Deployment Guide
This guide covers all deployment options for Aether across different environments and use cases.
Deployment Options¶
Aether can be deployed in multiple ways:
- Container - Docker/Podman (recommended for quick start)
- Binary - Direct installation from GitHub releases
- Package Manager - DEB/RPM for Linux distributions
- Helm Chart - Kubernetes operator deployment
- From Source - Build from source code
1. Container Deployment¶
Prerequisites¶
- Docker or Podman installed
Quick Start¶
# Pull latest image
docker pull ghcr.io/zyvorai/aether:latest
# Create alias for convenience
alias aether='docker run --rm \
-v ~/.aether:/root/.aether \
-v ~/.kube:/root/.kube \
ghcr.io/zyvorai/aether:latest'
# Use normally
aether --help
aether -s workload.yaml validate
Persistent Data¶
Mount state directory for persistence:
docker run --rm \
-v ~/.aether:/root/.aether \
-v ~/.kube:/root/.kube \
-v $(pwd):/workspace \
-w /workspace \
ghcr.io/zyvorai/aether:latest \
run -s workload.yaml
Docker Compose¶
version: '3.8'
services:
aether:
image: ghcr.io/zyvorai/aether:latest
volumes:
- aether-state:/root/.aether
- ~/.kube:/root/.kube:ro
command: tail -f /dev/null # Keep running
volumes:
aether-state:
2. Binary Installation¶
Download from GitHub Releases¶
# Linux (amd64)
curl -L https://github.com/zyvorai/Aether/releases/latest/download/aether-linux-amd64 -o aether
# macOS (amd64)
curl -L https://github.com/zyvorai/Aether/releases/latest/download/aether-macos-amd64 -o aether
# macOS (ARM64)
curl -L https://github.com/zyvorai/Aether/releases/latest/download/aether-macos-arm64 -o aether
# Make executable
chmod +x aether
# Move to PATH
sudo mv aether /usr/local/bin/
Verify Installation¶
aether --version
aether --help
3. Package Manager Installation¶
Debian/Ubuntu (DEB)¶
Download and Install¶
# Download package
wget https://github.com/zyvorai/Aether/releases/download/v0.1.0/aether_0.1.0-1_amd64.deb
# Install
sudo apt install ./aether_0.1.0-1_amd64.deb
# Or use dpkg
sudo dpkg -i aether_0.1.0-1_amd64.deb
sudo apt install -f # Fix dependencies
Verify Installation¶
which aether
dpkg -L aether # List installed files
Shell Completions¶
Automatically installed to:
- Bash: /usr/share/bash-completion/completions/aether
- Zsh: /usr/share/zsh/site-functions/_aether
- Fish: /usr/share/fish/vendor_completions.d/aether.fish
Fedora/RHEL/CentOS (RPM)¶
Download and Install¶
# Download package
wget https://github.com/zyvorai/Aether/releases/download/v0.1.0/aether-0.1.0-1.x86_64.rpm
# Install with DNF (Fedora/RHEL 8+)
sudo dnf install aether-0.1.0-1.x86_64.rpm
# Or with YUM (RHEL 7)
sudo yum install aether-0.1.0-1.x86_64.rpm
# Or with RPM
sudo rpm -ivh aether-0.1.0-1.x86_64.rpm
Verify Installation¶
which aether
rpm -ql aether # List installed files
openSUSE (RPM)¶
# Download package
wget https://github.com/zyvorai/Aether/releases/download/v0.1.0/aether-0.1.0-1.x86_64.rpm
# Install
sudo zypper install aether-0.1.0-1.x86_64.rpm
4. Helm Chart Deployment¶
Prerequisites¶
- Kubernetes 1.20+
- Helm 3.0+
- (Optional) KubeVirt CRDs
Installation¶
Basic Installation¶
# From repository
git clone https://github.com/zyvorai/Aether
cd aether
# Install with default values
helm install aether ./helm/aether
Custom Values¶
# Install with custom configuration
helm install aether ./helm/aether -f - <<EOF
replicaCount: 1
persistence:
enabled: true
size: 10Gi
metrics:
enabled: true
serviceMonitor:
enabled: true
aether:
runtimes:
kubernetes:
enabled: true
kubevirt:
enabled: true
EOF
Production Configuration¶
helm install aether ./helm/aether \
--namespace aether-system \
--create-namespace \
--set replicaCount=3 \
--set autoscaling.enabled=true \
--set autoscaling.minReplicas=2 \
--set autoscaling.maxReplicas=10 \
--set persistence.enabled=true \
--set persistence.size=20Gi \
--set metrics.serviceMonitor.enabled=true \
--set ingress.enabled=true \
--set ingress.hosts[0].host=aether.example.com
Verification¶
# Check deployment
helm status aether
kubectl get pods -l app.kubernetes.io/name=aether
# View logs
kubectl logs -l app.kubernetes.io/name=aether
# Access metrics
kubectl port-forward service/aether 9090:9090
curl http://localhost:9090/metrics
Upgrade¶
helm upgrade aether ./helm/aether -f custom-values.yaml
Uninstall¶
helm uninstall aether
kubectl delete pvc -l app.kubernetes.io/instance=aether
5. Build from Source¶
Prerequisites¶
- Rust 1.70+
- Cargo
- Git
Build Steps¶
# Clone repository
git clone https://github.com/zyvorai/Aether
cd aether
# Build release binary
cargo build --release
# Run tests
cargo test --all
# Install
sudo cp target/release/aether /usr/local/bin/
# Generate shell completions
aether completions bash > aether.bash
aether completions zsh > _aether
aether completions fish > aether.fish
# Install completions
sudo cp aether.bash /etc/bash_completion.d/
sudo cp _aether /usr/share/zsh/site-functions/
sudo cp aether.fish /usr/share/fish/vendor_completions.d/
Monitoring Setup¶
Prometheus Integration¶
Node Exporter Textfile Collector¶
# Create metrics export script
sudo tee /usr/local/bin/aether-metrics.sh <<'EOF'
#!/bin/bash
METRICS_DIR="/var/lib/node_exporter/textfile_collector"
mkdir -p "${METRICS_DIR}"
aether metrics > "${METRICS_DIR}/aether.prom.$$"
mv "${METRICS_DIR}/aether.prom.$$" "${METRICS_DIR}/aether.prom"
EOF
sudo chmod +x /usr/local/bin/aether-metrics.sh
# Add to cron (every 5 minutes)
echo "*/5 * * * * /usr/local/bin/aether-metrics.sh" | sudo crontab -
Prometheus Configuration¶
scrape_configs:
- job_name: 'node-exporter'
static_configs:
- targets: ['localhost:9100']
Grafana Dashboard¶
# Import dashboard
# 1. Open Grafana
# 2. Navigate to Dashboards → Import
# 3. Upload grafana/dashboard.json
# 4. Select Prometheus datasource
# 5. Import
Networking¶
Podman Socket¶
Ensure Podman socket is available:
systemctl --user enable podman.socket
systemctl --user start podman.socket
# Verify
ls /var/run/podman/podman.sock
Kubernetes Access¶
Ensure kubeconfig is configured:
# Verify access
kubectl cluster-info
kubectl get nodes
# Copy to container (if using Docker)
docker run --rm \
-v ~/.kube:/root/.kube \
ghcr.io/zyvorai/aether:latest \
kubectl get nodes
Troubleshooting¶
Container Issues¶
Permission Denied:
# Add user to docker group
sudo usermod -aG docker $USER
newgrp docker
Cannot connect to Kubernetes:
# Verify kubeconfig
kubectl config view
kubectl cluster-info
# Check kubeconfig path
ls -la ~/.kube/config
Package Issues¶
Missing Dependencies (DEB):
sudo apt update
sudo apt install -f
Missing Dependencies (RPM):
sudo dnf install --allowerasing aether
Helm Issues¶
RBAC Errors:
# Verify RBAC is enabled
kubectl get clusterrole aether
kubectl get clusterrolebinding aether
# Check service account
kubectl get serviceaccount -n aether-system
Pod Not Starting:
kubectl describe pod -l app.kubernetes.io/name=aether
kubectl logs -l app.kubernetes.io/name=aether
Best Practices¶
- Use Container for Development: Quick setup, consistent environment
- Use Packages for Servers: System integration, automatic updates
- Use Helm for Kubernetes: Native integration, easy scaling
- Enable Metrics: Monitor workload operations and performance
- Configure Persistence: Preserve state across restarts
- Use RBAC: Proper permissions for Kubernetes operations
- Set Resource Limits: Prevent resource exhaustion
- Enable Autoscaling: Handle variable load automatically
Next Steps¶
After deployment:
-
Validate Installation:
aether --version aether --help -
Create First Workload:
aether -s examples/workload-full-featured.yaml validate aether -s examples/workload-full-featured.yaml run -
Monitor Operations:
aether list aether metrics -
Set Up Monitoring:
- Configure Prometheus scraping
- Import Grafana dashboard
-
Set up alerting rules
-
Explore Features:
- Try migrations between runtimes
- Use TUI dashboard
- Configure ConfigMaps and Secrets
Support¶
- Documentation: https://github.com/zyvorai/Aether
- Issues: https://github.com/zyvorai/Aether/issues
- Discussions: https://github.com/zyvorai/Aether/discussions