e299f6476eb3ed82525b596e4bf51117faffa1b0
Some checks failed
Build and Push Images / determine-version (push) Successful in 1m32s
Build and Push Images / build-nvidia (push) Failing after 6m47s
Build and Push Images / build-rdna2 (push) Failing after 7m8s
Build and Push Images / build-strixhalo (push) Failing after 6m35s
Build and Push Images / build-intel (push) Failing after 6m35s
Build and Push Images / Release (push) Has been skipped
Build and Push Images / Notify (push) Successful in 2s
Gitea's container registry uses Bearer token auth with realm pointing to external URL. Changed from internal K8s service URL to registry.lab.daviestechlabs.io for proper auth flow. Also removed insecure registry buildx config since using HTTPS now.
KubeRay Worker Images
GPU-specific Ray worker images for the DaviesTechLabs AI/ML platform.
Features
- BuildKit optimized: Cache mounts for apt and pip speed up rebuilds
- OCI compliant: Standard image labels (
org.opencontainers.image.*) - Health checks: Built-in HEALTHCHECK for container orchestration
- Non-root execution: Ray runs as unprivileged
rayuser - Retry logic: Entrypoint waits for Ray head with exponential backoff
Images
| Image | GPU Target | Workloads | Base |
|---|---|---|---|
ray-worker-nvidia |
NVIDIA CUDA 12.1 (RTX 2070) | Whisper STT, XTTS TTS | rayproject/ray-ml:2.53.0-py310-cu121 |
ray-worker-rdna2 |
AMD ROCm 6.4 (Radeon 680M) | BGE Embeddings | rocm/pytorch:rocm6.4_ubuntu22.04_py3.10_pytorch_release_2.6.0 |
ray-worker-strixhalo |
AMD ROCm 7.1 (Strix Halo) | vLLM, BGE | rocm/pytorch:rocm7.1_ubuntu24.04_py3.12_pytorch_release_2.8.0 |
ray-worker-intel |
Intel XPU (Arc) | BGE Reranker | rayproject/ray-ml:2.53.0-py310 |
Building Locally
# Lint Dockerfiles (requires hadolint)
make lint
# Build all images
make build-all
# Build specific image
make build-nvidia
make build-rdna2
make build-strixhalo
make build-intel
# Push to Gitea registry (requires login)
make login
make push-all
# Release with version tag
make VERSION=v1.0.0 release
CI/CD
Images are automatically built and pushed to git.daviestechlabs.io package registry on:
- Push to
mainbranch - Git tag creation (e.g.,
v1.0.0)
Gitea Actions Secrets Required
Add these secrets in Gitea repo settings → Actions → Secrets:
| Secret | Description |
|---|---|
REGISTRY_USER |
Gitea username |
REGISTRY_TOKEN |
Gitea access token with package:write scope |
Directory Structure
kuberay-images/
├── dockerfiles/
│ ├── Dockerfile.ray-worker-nvidia
│ ├── Dockerfile.ray-worker-rdna2
│ ├── Dockerfile.ray-worker-strixhalo
│ ├── Dockerfile.ray-worker-intel
│ └── ray-entrypoint.sh
├── ray-serve/
│ ├── serve_embeddings.py
│ ├── serve_whisper.py
│ ├── serve_tts.py
│ ├── serve_llm.py
│ ├── serve_reranker.py
│ └── requirements.txt
├── .gitea/workflows/
│ └── build-push.yaml
├── Makefile
└── README.md
Environment Variables
| Variable | Description | Default |
|---|---|---|
RAY_HEAD_SVC |
Ray head service name | ai-inference-raycluster-head-svc |
GPU_RESOURCE |
Custom Ray resource name | gpu_nvidia, gpu_amd, etc. |
NUM_GPUS |
Number of GPUs to expose | 1 |
Node Allocation
| Node | Image | GPU | Memory |
|---|---|---|---|
| elminster | ray-worker-nvidia | RTX 2070 | 8GB VRAM |
| khelben | ray-worker-strixhalo | Strix Halo | 64GB Unified |
| drizzt | ray-worker-rdna2 | Radeon 680M | 12GB VRAM |
| danilo | ray-worker-intel | Intel Arc | 16GB Shared |
Related
- homelab-design - Architecture documentation
- homelab-k8s2 - Kubernetes manifests
Languages
Python
77.3%
Makefile
14.7%
Shell
8%