Getting Started
Install Armada on your laptop, run your first job, and see it in the web UI.
This guide installs Armada on your laptop and runs your first job. You'll use Kind, which runs a small Kubernetes cluster inside Docker; and the Armada Operator, which installs Armada into that cluster with one command.
By the end, you'll have Armada running, a job that has finished, and its output on your screen.
Time needed: about 10 minutes, most of it waiting for the install.
What you'll be working with
- Armada — a batch job scheduler that runs jobs across many Kubernetes clusters. You give it jobs, and it decides which cluster and node each one runs on, and when, sharing the machines fairly between teams.
- Job — a Kubernetes pod that runs to completion. The pod can have more than one container.
- Queue — where jobs wait, and what controls each team's access to the cluster: Armada shares resources fairly between queues and can limit how much each one runs at once. Each team usually has one.
armadactl— the command-line tool you use to talk to Armada.- Lookout — Armada's web interface for finding, following and managing jobs.
Before you start
Prerequisites
Make sure you have these running on your machine:
- Docker Desktop - or another Docker engine
- kubectl - Command-line tool for Kubernetes
- Helm - Package manager for Kubernetes
- Kind - For creating a local Kubernetes cluster
- Make - Build automation tool
- Go (v1.21 or later) - Required for the quickstart automation script
Start Docker and give it enough memory
Armada runs inside Docker, so Docker must be running the whole time you use Armada. Armada's supporting services use about 6 GB of memory before you run anything.
In Docker Desktop, open Settings → Resources and set memory to at least 8 GB, then make sure Docker is running.
Check everything at once:
docker info > /dev/null && echo "Docker is running"
kubectl version --client
helm version
kind version
go versionReady when: you see Docker is running and a version for each tool, with
Go at 1.21 or later.
Make sure no old install is in the way
The install creates a Kind cluster called armada (kubectl calls it kind-armada).
kind get clustersReady when: it prints No kind clusters found.
If it lists armada, delete the old install first. From the armada-operator folder you installed from before:
make kind-delete-clusterOr, from anywhere:
kind delete cluster --name armada1. Install Armada
Download the Armada Operator
mkdir -p ~/armada-guide
cd ~/armada-guide
git clone https://github.com/armadaproject/armada-operator.git
cd armada-operatorRun the install
make kind-allThis one command:
- Creates a Kind cluster called
armada - Installs the services Armada depends on (PostgreSQL, Pulsar, and Redis)
- Installs Armada
- Installs
armadactlinto~/bin - Writes
~/.armadactl.yaml, which pointsarmadactlat your new install (localhost:30002)
This takes about 10 minutes, longer the first time while images download.
It’s finished when a line ends in condition met and you get your prompt
back. If you already have a ~/.armadactl.yaml, back it up first — the
install replaces it.
2. Check Armada is running
kubectl get pods -n armadaSuccess: you see these pods, most of them Running:
armada-event-ingester-... 1/1 Running
armada-executor-... 1/1 Running
armada-lookout-... 1/1 Running
armada-lookout-ingester-... 1/1 Running
armada-lookout-migration-... 0/1 Completed
armada-scheduler-... 1/1 Running
armada-scheduler-ingester-... 1/1 Running
armada-scheduler-migration-... 0/1 Completed
armada-server-... 1/1 RunningNow check that armadactl can reach Armada:
armadactl get queuesSuccess: it prints no line containing error:
apiVersion: armadaproject.io/v1beta1
kind: Queue
[]Wait two minutes before Step 3. After its pods start, Armada takes a
little time to learn how much CPU and memory the cluster has. A job submitted
before then is rejected with exceeds the total limit.
3. Run your first job
Create a queue
armadactl create queue exampleResponse:
Created queue example
Wait about 10 seconds before submitting. Armada checks for new queues every 10
seconds — submitting to a brand-new queue straight away fails with could not find queue.
Submit a job
This command submits the example job and automatically captures its ID into a variable called JOB_ID so you can reference it in later commands.
JOB_ID=$(armadactl submit dev/quickstart/example-job.yaml | awk '{print $5}')
echo "Job ID: $JOB_ID"Response:
Job ID: <JOB_ID>
JOB_ID only lasts in this terminal window. If you open a new one, set it again: JOB_ID=<JOB-ID> (with your own ID). This job starts a small Linux container that prints Hello Armada and exits.
Watch the job
armadactl watch example job-set-1Response:
Watching job set job-set-1
Month day time | Queued: 0, Leased: 0, ... | JobSubmittedEvent, job id: <job-id>
Month day time | Queued: 1, Leased: 0, ... | JobQueuedEvent, job id: <job-id>
Month day time | Queued: 0, Leased: 1, ... | JobLeasedEvent, job id: <job-id>
Month day time | Queued: 0, Leased: 0, Pending: 1, ... | JobPendingEvent, job id: <job-id> pod: 0
Month day time | Queued: 0, Leased: 0, ..., Succeeded: 1, ... | JobSucceededEvent, job id: <job-id> pod: 0The job moves through: Queued → Leased → Pending → Running → Succeeded. A short job can finish before Armada reports it as Running, so you may not see that line.
watch keeps running after the job finishes. Press Ctrl-C to stop it.
4. See the job's output
kubectl logs -n default armada-$JOB_ID-0Response:
Hello Armada
Run this within a few minutes of the job succeeding. Armada deletes finished
pods about three minutes after the job ends, and their output goes with them.
If you see pods "armada-[job-id]-0" not found, the pod is already gone.
Submit a new job and run kubectl logs immediately after watch shows
JobSucceededEvent.
5. Open Lookout
Open http://localhost:30000 in your browser.
Success: your job appears in the list, in queue example. Click it to see its details, the YAML you submitted, and its run history.
On a laptop install, Lookout’s Logs tab shows TypeError: Failed to fetch. That’s expected — it needs a log service the laptop install doesn’t
include. Use kubectl logs from Step 4 instead.
Keeping your install working
- Keep Docker running. If Docker quits or restarts, the Kind cluster comes back but Armada doesn't recover. Reinstall it — see Troubleshooting.
- Your setup is reset by a reinstall. Queues and job history are lost, so recreate any queues you need.
Clean up
When you're done, delete the cluster and everything in it:
cd ~/armada-guide/armada-operator
make kind-delete-clusterResponse:
Deleted nodes: [...]
Troubleshooting
Still have questions?
Ask in the #armada channel on CNCF Slack or browse the community page.
Last updated on