K3s uses EC certificates which CI kubectl cannot parse. Deploy via SSH
to server where local kubectl works natively.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Switch CI/CD target from KUBE_CONFIG_VKE to KUBE_CONFIG_K3S
- Change ingress class from ALB to traefik (K3S built-in)
- Remove VCI annotations from deployments
- Restore imagePullSecrets for SWR registry access
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CI/CD creates K8s Secret from Gitea Secrets (ARK_API_KEY not in code)
- Backend deployment reads ARK_API_KEY from secretKeyRef
- Enable SEEDANCE_ENABLED=true in production
- Auto-create admin superuser on container startup if not exists
- Update CLAUDE.md and agent-auto memory docs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Backend/Web Dockerfiles with multi-stage builds
- K8S deployments, services, and ingress for both domains
- Gitea Actions workflow: build → push to SWR → deploy to K3s
- Health check endpoint (/healthz/)
- CORS env var support for production domains
- Nginx reverse proxy for frontend → backend API
Domains:
- video-huoshan-api.airlabs.art (backend)
- video-huoshan-web.airlabs.art (frontend)