Skip to content

Latest commit

 

History

History
285 lines (223 loc) · 5.65 KB

File metadata and controls

285 lines (223 loc) · 5.65 KB
title Helm Deployment
description Deploy Bytebot on Kubernetes using Helm charts

Deploy Bytebot on Kubernetes with Helm

Helm provides a simple way to deploy Bytebot on Kubernetes clusters.

Prerequisites

  • Kubernetes cluster (1.19+)
  • Helm 3.x installed
  • kubectl configured
  • 8GB+ available memory in cluster

Quick Start

```bash git clone https://github.com/bytebot-ai/bytebot.git cd bytebot ``` Create a `values.yaml` file with at least one API key:
```yaml
bytebot-agent:
  apiKeys:
    anthropic:
      value: "sk-ant-your-key-here"
    # Optional: Add more providers
    # openai:
    #   value: "sk-your-key-here"
    # gemini:
    #   value: "your-key-here"
```
```bash helm install bytebot ./helm \ --namespace bytebot \ --create-namespace \ -f values.yaml ``` ```bash # Port-forward for local access kubectl port-forward -n bytebot svc/bytebot-ui 9992:9992
# Access at http://localhost:9992
```

Basic Configuration

API Keys

Configure at least one AI provider:

bytebot-agent:
  apiKeys:
    anthropic:
      value: "sk-ant-your-key-here"
    openai:
      value: "sk-your-key-here"
    gemini:
      value: "your-key-here"

Resource Limits (Optional)

Adjust resources based on your needs:

# Desktop container (where automation runs)
desktop:
  resources:
    requests:
      memory: "2Gi"
      cpu: "1"
    limits:
      memory: "4Gi"
      cpu: "2"

# Agent (AI orchestration)
agent:
  resources:
    requests:
      memory: "1Gi"
      cpu: "500m"

External Access (Optional)

Enable ingress for domain-based access:

ui:
  ingress:
    enabled: true
    hostname: bytebot.your-domain.com
    tls: true

Accessing Bytebot

Local Access (Recommended)

kubectl port-forward -n bytebot svc/bytebot-ui 9992:9992

Access at: http://localhost:9992

External Access

If you configured ingress:

Verifying Deployment

Check that all pods are running:

kubectl get pods -n bytebot

Expected output:

NAME                              READY   STATUS    RESTARTS   AGE
bytebot-agent-xxxxx               1/1     Running   0          2m
bytebot-desktop-xxxxx             1/1     Running   0          2m
bytebot-postgresql-0              1/1     Running   0          2m
bytebot-ui-xxxxx                 1/1     Running   0          2m

Troubleshooting

Pods Not Starting

Check pod status:

kubectl describe pod -n bytebot <pod-name>

Common issues:

  • Insufficient memory/CPU: Check node resources with kubectl top nodes
  • Missing API keys: Verify your values.yaml configuration

Connection Issues

Test service connectivity:

kubectl logs -n bytebot deployment/bytebot-agent

View Logs

# All logs
kubectl logs -n bytebot -l app=bytebot --tail=100

# Specific component
kubectl logs -n bytebot deployment/bytebot-agent

Upgrading

# Update your values.yaml as needed, then:
helm upgrade bytebot ./helm -n bytebot -f values.yaml

Uninstalling

# Remove Bytebot
helm uninstall bytebot -n bytebot

# Clean up namespace
kubectl delete namespace bytebot

Advanced Configuration

If using Kubernetes secret management (Vault, Sealed Secrets, etc.):
```yaml
bytebot-agent:
  apiKeys:
    anthropic:
      useExisting: true
      secretName: "my-api-keys"
      secretKey: "anthropic-key"
```

Create the secret manually:
```bash
kubectl create secret generic my-api-keys \
  --namespace bytebot \
  --from-literal=anthropic-key="sk-ant-your-key"
```
For centralized LLM management, use the included LiteLLM proxy:
```bash
helm install bytebot ./helm \
  -f values-proxy.yaml \
  --namespace bytebot \
  --create-namespace \
  --set bytebot-llm-proxy.env.ANTHROPIC_API_KEY="your-key"
```

This provides:
- Centralized API key management
- Request routing and load balancing
- Rate limiting and retry logic
Configure persistent storage:
```yaml
desktop:
  persistence:
    enabled: true
    size: "20Gi"
    storageClass: "fast-ssd"

postgresql:
  persistence:
    size: "20Gi"
    storageClass: "fast-ssd"
```
```yaml # Network policies networkPolicy: enabled: true
# Pod security
podSecurityContext:
  runAsNonRoot: true
  runAsUser: 1000
  fsGroup: 1000

# Enable authentication
auth:
  enabled: true
  type: "basic"
  username: "admin"
  password: "changeme"  # Use secrets in production!
```

Next Steps

Integrate Bytebot with your applications Use any LLM provider with Bytebot **Need help?** Join our [Discord community](https://discord.com/invite/d9ewZkWPTP) or check our [GitHub discussions](https://github.com/bytebot-ai/bytebot/discussions).