Local Container Usage (Podman + NoETL Playbooks)
This page replaces legacy Docker/Make workflows with the current local development approach:
- Podman as the container runtime
- kind for local Kubernetes
- noetl playbooks for build, load, deploy, and status
Overview
For local development, run NoETL through automation playbooks in repos/ops:
- Build container image with Podman
- Load image into kind cluster
- Deploy server and workers with Kubernetes manifests
- Verify health and iterate with a single redeploy command
Prerequisites
- Podman machine running (recommended name: noetl-dev)
- kind
- kubectl
- noetl CLI
- repos/ops and repos/noetl checked out
Quick Start
From ai-meta root:
# Full local cycle (build -> load -> deploy -> status)
noetl run repos/ops/automation/development/noetl.yaml --runtime local \
--set action=redeploy --set noetl_repo_dir=repos/noetl
# Verify health
curl -s http://localhost:8082/api/health
Expected output includes:
- NoETL API at http://localhost:8082
- noetl-server deployment ready
- noetl-worker deployment ready
Common Actions
# Build image only
noetl run repos/ops/automation/development/noetl.yaml --runtime local \
--set action=build --set noetl_repo_dir=repos/noetl
# Load image to kind only
noetl run repos/ops/automation/development/noetl.yaml --runtime local \
--set action=load --set noetl_repo_dir=repos/noetl
# Deploy only
noetl run repos/ops/automation/development/noetl.yaml --runtime local \
--set action=deploy --set noetl_repo_dir=repos/noetl
# Status
noetl run repos/ops/automation/development/noetl.yaml --runtime local \
--set action=status --set noetl_repo_dir=repos/noetl
Podman Notes
- The playbook handles local image naming differences between local/... and localhost/local/... automatically.
- If kind was created before port mapping changes, recreate the cluster to apply new mappings.
Run Playbooks (No Containers Required)
For DSL/playbook development and tests, use local runtime directly:
# Run a file-based playbook locally
noetl run repos/noetl/tests/fixtures/playbooks/hello_world/hello_world.yaml -r local -v
# Register fixtures for distributed runtime
noetl register playbook --directory repos/noetl/tests/fixtures/playbooks
Troubleshooting
ErrImageNeverPull
Root cause is usually image name mismatch or missing kind load.
# Re-run load and deploy
noetl run repos/ops/automation/development/noetl.yaml --runtime local --set action=load --set noetl_repo_dir=repos/noetl
noetl run repos/ops/automation/development/noetl.yaml --runtime local --set action=deploy --set noetl_repo_dir=repos/noetl
Podman machine is not running
podman machine start noetl-dev
API not reachable
kubectl -n noetl get pods
kubectl -n noetl get svc
curl -s http://localhost:8082/api/health