[PR #325] [MERGED] feat(open-webui): add workload.kind configuration option #334

Closed
opened 2026-02-15 19:17:26 -05:00 by yindo · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/helm-charts/pull/325
Author: @lewisco
Created: 12/14/2025
Status: Merged
Merged: 12/21/2025
Merged by: @westbrook-ai

Base: mainHead: main


📝 Commits (2)

  • d277c4f feat(open-webui): add workload.kind configuration option
  • 5b0555f Merge pull request #1 from lewisco/feature/deployment-kind

📊 Changes

4 files changed (+21 additions, -10 deletions)

View changed files

📝 charts/open-webui/Chart.yaml (+1 -1)
📝 charts/open-webui/README.md (+2 -1)
📝 charts/open-webui/templates/workload-manager.yaml (+10 -8)
📝 charts/open-webui/values.yaml (+8 -0)

📄 Description

Pull Request: Add workload.kind Configuration Option

Description

This PR adds the ability to explicitly set the Kubernetes workload kind (Deployment or StatefulSet) via workload.kind in values.yaml.

Use Case

Users with:

  • ReadWriteMany storage classes (e.g., Azure Files, NFS, Longhorn RWX) who want all replicas to share a single PVC
  • External databases (PostgreSQL via CNPG, etc.) who don't need StatefulSet's stable identities
  • Traditional Deployment-based operations tooling and workflows

Currently, the chart forces StatefulSet when persistence.enabled=true and persistence.provider=local. This prevents users from using Deployment even when their storage and architecture support it.

Changes

  1. values.yaml: Added workload.kind option (default: "" for backwards compatibility)
  2. templates/workload-manager.yaml: Updated kind logic to check workload.kind first, falling back to existing behavior
  3. Chart.yaml: Version bump 8.19.0 → 8.20.0 (MINOR - backwards-compatible feature)
  4. README.md: Auto-generated via helm-docs

Backwards Compatibility

Fully backwards compatible. If workload.kind is not set (default), the existing logic applies:

  • StatefulSet when persistence.enabled=true AND persistence.provider=local
  • Deployment otherwise

Redacted values.yaml Used for Testing

# Tested on k3s cluster with Longhorn storage and CNPG PostgreSQL

workload:
  kind: Deployment

replicaCount: 2

persistence:
  enabled: true
  size: 10Gi
  accessModes:
    - ReadWriteMany
  storageClass: longhorn

# External PostgreSQL (CNPG)
databaseUrl: "postgresql://user:REDACTED@main-db-rw.databases:5432/openwebui"

ollama:
  enabled: false

pipelines:
  enabled: false

tika:
  enabled: true

websocket:
  enabled: true
  manager: redis
  url: redis://open-webui-redis:6379/0
  redis:
    enabled: true

ingress:
  enabled: true
  class: nginx
  host: chat.example.com
  tls: true

sso:
  enabled: true
  enableSignup: true
  oidc:
    enabled: true
    clientId: "open-webui"
    clientSecret: "REDACTED"
    providerUrl: "https://auth.example.com/application/o/open-webui/.well-known/openid-configuration"

Verification

  • helm template with default values produces StatefulSet (unchanged behavior)
  • helm template --set workload.kind=Deployment produces Deployment
  • helm template --set workload.kind=StatefulSet produces StatefulSet
  • helm template --set persistence.enabled=false produces Deployment (unchanged behavior)
  • Deployed to live k3s cluster with 2 replicas, RWX Longhorn storage
  • Verified file uploads visible across all pods
  • Migration tested: Converted existing StatefulSet deployment with RAG documents to Deployment mode—all data preserved and functional post-migration
  • Ran helm-docs to update README

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/helm-charts/pull/325 **Author:** [@lewisco](https://github.com/lewisco) **Created:** 12/14/2025 **Status:** ✅ Merged **Merged:** 12/21/2025 **Merged by:** [@westbrook-ai](https://github.com/westbrook-ai) **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (2) - [`d277c4f`](https://github.com/open-webui/helm-charts/commit/d277c4fb2919b33aaf959c88f5edb5864a75f38b) feat(open-webui): add workload.kind configuration option - [`5b0555f`](https://github.com/open-webui/helm-charts/commit/5b0555f495af030988445ac7181250fc9be95675) Merge pull request #1 from lewisco/feature/deployment-kind ### 📊 Changes **4 files changed** (+21 additions, -10 deletions) <details> <summary>View changed files</summary> 📝 `charts/open-webui/Chart.yaml` (+1 -1) 📝 `charts/open-webui/README.md` (+2 -1) 📝 `charts/open-webui/templates/workload-manager.yaml` (+10 -8) 📝 `charts/open-webui/values.yaml` (+8 -0) </details> ### 📄 Description # Pull Request: Add `workload.kind` Configuration Option ## Description This PR adds the ability to explicitly set the Kubernetes workload kind (`Deployment` or `StatefulSet`) via `workload.kind` in `values.yaml`. ### Use Case Users with: - **ReadWriteMany storage classes** (e.g., Azure Files, NFS, Longhorn RWX) who want all replicas to share a single PVC - **External databases** (PostgreSQL via CNPG, etc.) who don't need StatefulSet's stable identities - **Traditional Deployment-based operations** tooling and workflows Currently, the chart forces `StatefulSet` when `persistence.enabled=true` and `persistence.provider=local`. This prevents users from using `Deployment` even when their storage and architecture support it. ### Changes 1. **`values.yaml`**: Added `workload.kind` option (default: `""` for backwards compatibility) 2. **`templates/workload-manager.yaml`**: Updated kind logic to check `workload.kind` first, falling back to existing behavior 3. **`Chart.yaml`**: Version bump 8.19.0 → 8.20.0 (MINOR - backwards-compatible feature) 4. **`README.md`**: Auto-generated via `helm-docs` ### Backwards Compatibility ✅ **Fully backwards compatible.** If `workload.kind` is not set (default), the existing logic applies: - `StatefulSet` when `persistence.enabled=true` AND `persistence.provider=local` - `Deployment` otherwise --- ## Redacted `values.yaml` Used for Testing ```yaml # Tested on k3s cluster with Longhorn storage and CNPG PostgreSQL workload: kind: Deployment replicaCount: 2 persistence: enabled: true size: 10Gi accessModes: - ReadWriteMany storageClass: longhorn # External PostgreSQL (CNPG) databaseUrl: "postgresql://user:REDACTED@main-db-rw.databases:5432/openwebui" ollama: enabled: false pipelines: enabled: false tika: enabled: true websocket: enabled: true manager: redis url: redis://open-webui-redis:6379/0 redis: enabled: true ingress: enabled: true class: nginx host: chat.example.com tls: true sso: enabled: true enableSignup: true oidc: enabled: true clientId: "open-webui" clientSecret: "REDACTED" providerUrl: "https://auth.example.com/application/o/open-webui/.well-known/openid-configuration" ``` --- ## Verification - [x] `helm template` with default values produces `StatefulSet` (unchanged behavior) - [x] `helm template --set workload.kind=Deployment` produces `Deployment` - [x] `helm template --set workload.kind=StatefulSet` produces `StatefulSet` - [x] `helm template --set persistence.enabled=false` produces `Deployment` (unchanged behavior) - [x] Deployed to live k3s cluster with 2 replicas, RWX Longhorn storage - [x] Verified file uploads visible across all pods - [x] **Migration tested**: Converted existing StatefulSet deployment with RAG documents to Deployment mode—all data preserved and functional post-migration - [x] Ran `helm-docs` to update README --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
yindo added the pull-request label 2026-02-15 19:17:26 -05:00
yindo closed this issue 2026-02-15 19:17:26 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: open-webui/helm-charts#334