Deploy to Cluster

Deploy the operator to a Kubernetes cluster and run your first agent in production mode.

Prerequisites:

  • Kubernetes 1.31+, kubectl configured
  • helm 3+
  • An LLM provider: Ollama (local), OpenAI, Anthropic, or any OpenAI-compatible endpoint

Local development cluster (Docker Desktop)

The fastest path for local testing uses Docker Desktop with Kubernetes enabled.

Enable Kubernetes: Settings → Kubernetes → Enable Kubernetes → Apply & Restart

Verify:

kubectl get nodes
# NAME             STATUS   ROLES           AGE
# docker-desktop   Ready    control-plane   1m

Or use make dev to create a kind cluster and set everything up in one step:

git clone https://github.com/arkonis-dev/ark-operator.git
cd ark-operator
make dev OPENAI_BASE_URL=http://host.docker.internal:11434/v1

1. Deploy Redis

ark-operator uses Redis Streams as the task queue between the operator and agent pods.

kubectl apply -f https://raw.githubusercontent.com/arkonis-dev/ark-operator/main/config/prereqs/redis.yaml
kubectl rollout status statefulset/redis -n ark-system

2. Install the operator

With Ollama (no API key needed):

helm repo add arkonis https://charts.arkonis.dev
helm repo update

helm install ark-operator arkonis/ark-operator \
  --namespace ark-system \
  --create-namespace \
  --set taskQueueURL=redis.ark-system.svc.cluster.local:6379 \
  --set triggerWebhook.url=http://ark-operator.ark-system.svc.cluster.local:8092 \
  --set agentExtraEnv[0].name=AGENT_PROVIDER,agentExtraEnv[0].value=openai \
  --set agentExtraEnv[1].name=OPENAI_BASE_URL,agentExtraEnv[1].value=http://ollama.ollama.svc.cluster.local:11434/v1 \
  --set agentExtraEnv[2].name=OPENAI_API_KEY,agentExtraEnv[2].value=ollama

With OpenAI:

helm install ark-operator arkonis/ark-operator \
  --namespace ark-system \
  --create-namespace \
  --set taskQueueURL=redis.ark-system.svc.cluster.local:6379 \
  --set triggerWebhook.url=http://ark-operator.ark-system.svc.cluster.local:8092 \
  --set apiKeys.openaiApiKey=sk-...

With an existing secret (recommended for production):

helm install ark-operator arkonis/ark-operator \
  --namespace ark-system \
  --create-namespace \
  --set taskQueueURL=redis.ark-system.svc.cluster.local:6379 \
  --set apiKeys.existingSecret=my-ark-secrets

Full list of values: helm show values arkonis/ark-operator or see the Helm Values reference.

Option B — kubectl apply

kubectl apply -f https://github.com/arkonis-dev/ark-operator/releases/latest/download/install.yaml

Installs CRDs, RBAC, and the operator deployment in ark-system.


3. Verify the operator is ready

kubectl rollout status deployment/ark-operator -n ark-system
# deployment "ark-operator" successfully rolled out

4. Deploy your first agent

kubectl apply -f https://raw.githubusercontent.com/arkonis-dev/ark-operator/main/config/samples/arkonis_v1alpha1_arkagent.yaml

Check status:

kubectl get arkagents
# NAME              MODEL      REPLICAS   READY   AGE
# research-agent    llama3.2   2          2       30s

kubectl get pods -l app.kubernetes.io/instance=research-agent,app.kubernetes.io/name=agent
# NAME                              READY   STATUS    RESTARTS   AGE
# research-agent-agent-7d9f-xk2p8   1/1     Running   0          30s
# research-agent-agent-7d9f-mn4q1   1/1     Running   0          30s

5. Deploy a team pipeline

Save this as my-team.yaml and apply it:

apiVersion: arkonis.dev/v1alpha1
kind: ArkTeam
metadata:
  name: research-team
  namespace: ark-system
spec:
  output: ""
  roles:
    - name: research
      model: llama3.2
      systemPrompt: "You are a research assistant. Answer thoroughly."
    - name: summarize
      model: llama3.2
      systemPrompt: "You are a summarizer. Write 3 concise bullet points."
  pipeline:
    - role: research
      inputs:
        prompt: ""
    - role: summarize
      dependsOn: [research]
      inputs:
        content: ""
kubectl apply -f my-team.yaml
kubectl get arkteam research-team -n ark-system -w

Trigger a run:

ark trigger research-team -n ark-system --input '{"topic": "transformer architecture"}'

Teardown

helm uninstall ark-operator -n ark-system
kubectl delete namespace ark-system

Next steps


Apache 2.0 · ARKONIS