DEPLOYMENT
🚀 Deployment Patterns
Common deployment patterns and best practices for Aether workloads.
📑 Table of Contents¶
- Single Workload Deployment
- Directory Batch Deploy
- Compose Multi-Workload Stacks
- Template-Based Deployment
- Environment Promotion
- CI/CD Pipeline Deployment
- Watch Mode (Hot Reload)
📦 Single Workload Deployment¶
The simplest pattern: one workload spec, one deployment.
# Validate → Build → Deploy
aether validate
aether build
aether run
# Or with runtime override
aether run --runtime kubernetes
# Dry-run to preview
aether --dry-run run --runtime kube
Lifecycle¶
aether status my-app # Check status
aether logs my-app # View logs
aether logs my-app -f # Follow logs
aether exec my-app # Shell into container
aether stop my-app # Stop
aether delete my-app # Remove completely
📁 Directory Batch Deploy¶
Deploy all workload specs from a directory at once.
# Deploy all YAML files in specs/
aether deploy ./specs/
# With runtime override
aether deploy ./specs/ --runtime kubernetes
# Stop on first failure
aether deploy ./specs/ --fail-fast
# Preview without deploying
aether deploy ./specs/ --dry-run
The deploy command:
1. Discovers all *.yaml files in the directory
2. Validates each spec
3. Deploys in parallel (or sequentially with --fail-fast)
4. Reports results summary
🎼 Compose Multi-Workload Stacks¶
For applications with multiple services and dependencies.
Compose File¶
# aether-compose.yaml
version: "1"
workloads:
frontend:
spec: ./frontend/workload.yaml
runtime: podman
depends_on:
- backend
environment:
API_URL: http://backend:8080
backend:
spec: ./backend/workload.yaml
runtime: kubernetes
depends_on:
- database
database:
spec: ./database/workload.yaml
runtime: kubernetes
Commands¶
aether compose validate # Validate compose file
aether compose up # Deploy all (respects dependency order)
aether compose up --runtime kube # Override runtime for all
aether compose up --dry-run # Preview
aether compose down # Stop all
📝 Template-Based Deployment¶
Generate workload specs from 8 built-in templates.
# List available templates
aether template --list
# Generate from template
aether template web-app --workload-name my-site --owner team --project demo
# Save to file
aether template rest-api --workload-name api-svc -o api.yaml
# Then deploy
aether -s api.yaml run
Available Templates¶
| Template | Ports | Use Case |
|---|---|---|
web-app |
80, 443 | Web frontends |
rest-api |
8080 | API backends |
database |
5432 | PostgreSQL, MySQL |
cache |
6379 | Redis, Memcached |
worker |
— | Background jobs |
cron-job |
— | Scheduled tasks |
ml-training |
— | GPU workloads |
microservice |
8080 | Generic microservice |
🔄 Environment Promotion¶
Promote workloads through environments (dev → staging → production).
# Create environments
aether env create dev --tier development
aether env create staging --tier staging
aether env create prod --tier production
# Promote
aether env promote my-app dev staging
aether env promote my-app staging prod
# Check parity
aether env parity staging prod
🔁 CI/CD Pipeline Deployment¶
GitHub Actions¶
- name: Deploy
run: |
aether validate -s workload.yaml
aether policy-check -s workload.yaml --policy production
aether --yes run -s workload.yaml --runtime kubernetes
Key Flags for CI¶
| Flag | Purpose |
|---|---|
--yes |
Auto-confirm prompts |
--json |
Machine-readable output |
--quiet |
Suppress non-error output |
--dry-run |
Preview without executing |
--output json |
JSON output format |
👁 Watch Mode (Hot Reload)¶
Auto-redeploy when spec file changes (development).
aether watch
aether watch --runtime podman
Watch mode: 1. Polls the spec file every 500ms 2. Debounces changes (waits 1s after last change) 3. Reads file atomically to prevent partial reads 4. Validates, then redeploys
🔗 Related Documentation¶
| Document | Description |
|---|---|
| Quick Start | 5-minute getting started |
| Compose Guide | Multi-workload deployment details |
| CI/CD Guide | Pipeline integration |
| Templates | Template catalog |