Skip to content

Add Kubernetes support alongside Docker#27

Open
TheKnarf wants to merge 1 commit intomainfrom
feature/kubernetes-support
Open

Add Kubernetes support alongside Docker#27
TheKnarf wants to merge 1 commit intomainfrom
feature/kubernetes-support

Conversation

@TheKnarf
Copy link
Owner

Summary

This PR adds support for running Dave in Kubernetes clusters by reading service annotations instead of Docker container labels.

  • Add src/providers/ with unified provider interface
  • Add src/kubernetes/ for Kubernetes API integration
  • Update src/pages/index.tsx to use the new provider abstraction
  • Update README with Kubernetes deployment instructions

How it works

The provider is auto-detected based on environment:

  • In Kubernetes: Detects KUBERNETES_SERVICE_HOST env var
  • In Docker: Checks for /var/run/docker.sock
  • Can be overridden with DAVE_PROVIDER env var (docker, kubernetes, or auto)

Kubernetes Usage

Services can use the same annotation format as Docker labels:

apiVersion: v1
kind: Service
metadata:
  name: my-app
  annotations:
    dave.name: "My Application"
    dave.url: "http://my-app.example.com"
    dave.icon: "mdi:application"

Test plan

  • Test Docker provider still works (existing functionality)
  • Test Kubernetes provider in a k3s/k8s cluster
  • Verify auto-detection works correctly

Notes

The Kubernetes provider uses native https module to call the Kubernetes API, avoiding heavy dependencies like @kubernetes/client-node that have Node version requirements.

🤖 Generated with Claude Code

This adds support for running Dave in Kubernetes clusters by reading
service annotations instead of Docker container labels.

Changes:
- Add src/providers/ with unified provider interface
- Add src/kubernetes/ for Kubernetes API integration
- Update src/pages/index.tsx to use the new provider abstraction
- Update README with Kubernetes deployment instructions

The provider is auto-detected based on environment:
- In Kubernetes: reads KUBERNETES_SERVICE_HOST env var
- In Docker: checks for /var/run/docker.sock
- Can be overridden with DAVE_PROVIDER env var

Kubernetes services can use the same annotation format as Docker labels:
- dave.name: Display name
- dave.url: Link URL
- dave.icon: Iconify icon name

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant