mirror of
https://github.com/open-webui/helm-charts
synced 2025-06-26 18:16:14 +00:00
Compare commits
304 Commits
open-webui
...
open-webui
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ea5d902f8 | ||
|
|
7b349d2f08 | ||
|
|
c64a6d983c | ||
|
|
9751a36aef | ||
|
|
2af1c1243a | ||
|
|
b897d0a764 | ||
|
|
c42b2b658d | ||
|
|
a36cc91584 | ||
|
|
3ccf0425aa | ||
|
|
9d2e8a03d2 | ||
|
|
949e81c1ae | ||
|
|
e344883342 | ||
|
|
6862dc5b2e | ||
|
|
5b8410adbb | ||
|
|
dbf7604c85 | ||
|
|
ab693efe76 | ||
|
|
4730e963cd | ||
|
|
64a2f77a68 | ||
|
|
df3d4a48ce | ||
|
|
7f23390df4 | ||
|
|
934c4ff600 | ||
|
|
9acc6aa73c | ||
|
|
72d5981836 | ||
|
|
b2d58a724e | ||
|
|
4c0d7562a1 | ||
|
|
ab46f62cf6 | ||
|
|
a343ea7c78 | ||
|
|
5d8c4c0e28 | ||
|
|
1eb9023699 | ||
|
|
1c7500372a | ||
|
|
26eb71d2e2 | ||
|
|
3dc4eb8219 | ||
|
|
cbc2cd5172 | ||
|
|
eab043eeb1 | ||
|
|
57da11ee6d | ||
|
|
08783e7cd0 | ||
|
|
1de55f7599 | ||
|
|
0da3f4e930 | ||
|
|
5ebedb44c6 | ||
|
|
bc910cc2d3 | ||
|
|
9312d4f79d | ||
|
|
e011fc9fe7 | ||
|
|
6ba37844ec | ||
|
|
82d626337c | ||
|
|
273b2b103a | ||
|
|
e8dbf957b1 | ||
|
|
a609ae613b | ||
|
|
800614e308 | ||
|
|
95040f7735 | ||
|
|
a7b9fd5600 | ||
|
|
7f2b641569 | ||
|
|
cbdca59247 | ||
|
|
a368503b58 | ||
|
|
b3f84d0dbf | ||
|
|
fa81927fe2 | ||
|
|
2a4faf6a96 | ||
|
|
6829878574 | ||
|
|
ef8d0a19be | ||
|
|
f7642b5df4 | ||
|
|
77a502a9f7 | ||
|
|
2dd1e147c3 | ||
|
|
2a015f01e1 | ||
|
|
6d1192b320 | ||
|
|
e8838eaec8 | ||
|
|
3e16c22e08 | ||
|
|
22a20ddd45 | ||
|
|
d08df9c494 | ||
|
|
aa4995bc86 | ||
|
|
2043936012 | ||
|
|
f2e5e4226c | ||
|
|
c6d111535c | ||
|
|
0e28ac5b4e | ||
|
|
b2a5b3a331 | ||
|
|
51c2bb5937 | ||
|
|
771687760a | ||
|
|
be4ab2c29d | ||
|
|
4ada4ac05a | ||
|
|
1e87660292 | ||
|
|
6ee6c9dc44 | ||
|
|
021e958b5d | ||
|
|
97d4e16f51 | ||
|
|
d23608a778 | ||
|
|
9c5db2ccd2 | ||
|
|
3d8db7dc34 | ||
|
|
0e865418e8 | ||
|
|
52f97fcb02 | ||
|
|
aced37379a | ||
|
|
7cc125f8cf | ||
|
|
8acfa719fe | ||
|
|
59048fd177 | ||
|
|
eb466a6236 | ||
|
|
921af38848 | ||
|
|
73268086eb | ||
|
|
2e13b26b94 | ||
|
|
32797850cd | ||
|
|
30750a96ae | ||
|
|
f187ecd6fc | ||
|
|
46068602fc | ||
|
|
e49bd4d041 | ||
|
|
b3c486f5e6 | ||
|
|
4421135184 | ||
|
|
9c9aae9660 | ||
|
|
15b9ccbf84 | ||
|
|
961d895fe4 | ||
|
|
972a24510c | ||
|
|
60864a365b | ||
|
|
64160c1750 | ||
|
|
1c9327eb4f | ||
|
|
464f194014 | ||
|
|
1b47d08288 | ||
|
|
ba068ee8c0 | ||
|
|
b894afc239 | ||
|
|
1e17c5651d | ||
|
|
0ccce3cf5f | ||
|
|
3b1bfc20d3 | ||
|
|
51aab38029 | ||
|
|
535985967d | ||
|
|
f06ddd9f2f | ||
|
|
9b13a7e2af | ||
|
|
added76a4c | ||
|
|
1c072ce5bf | ||
|
|
72a324248a | ||
|
|
069909c5f3 | ||
|
|
8ceb4ed675 | ||
|
|
5ae7d88c6d | ||
|
|
1c186f785c | ||
|
|
8d6a4745ca | ||
|
|
2a1dfd7c79 | ||
|
|
911da24970 | ||
|
|
aa8f48d65c | ||
|
|
299203bc14 | ||
|
|
669a7f4006 | ||
|
|
902852e161 | ||
|
|
35100e8c9b | ||
|
|
80eecb60b7 | ||
|
|
78358cdd0c | ||
|
|
2229cfaef1 | ||
|
|
44c982df2f | ||
|
|
5af2615a30 | ||
|
|
0e6bc2b733 | ||
|
|
38d7ecfe21 | ||
|
|
d826181995 | ||
|
|
fe387238e1 | ||
|
|
dc60612c27 | ||
|
|
3764c99690 | ||
|
|
3adaffd03d | ||
|
|
7c6aa4fc19 | ||
|
|
fe7d2bb946 | ||
|
|
aa0c381f01 | ||
|
|
de66118c42 | ||
|
|
2ef9234739 | ||
|
|
fc3a19b8d9 | ||
|
|
f70f12a720 | ||
|
|
905073b392 | ||
|
|
e2bb6c5ac4 | ||
|
|
3ac14d7ed7 | ||
|
|
f539153797 | ||
|
|
5a9e030548 | ||
|
|
357d167f76 | ||
|
|
3269b62733 | ||
|
|
373b4c8042 | ||
|
|
154753931e | ||
|
|
b9cc6a30cc | ||
|
|
db99d5cafe | ||
|
|
400512fc0e | ||
|
|
cf12b1d078 | ||
|
|
746fe34aa1 | ||
|
|
d0cf4abd11 | ||
|
|
2b83759321 | ||
|
|
67adcc38e6 | ||
|
|
831cc94d8d | ||
|
|
83c5a02a28 | ||
|
|
145a5f5933 | ||
|
|
1931f3ea06 | ||
|
|
45d5c2a26e | ||
|
|
b1e7ce6cea | ||
|
|
f71d21d5e4 | ||
|
|
30707d473d | ||
|
|
01fd07172c | ||
|
|
afcd804aaf | ||
|
|
afe30f15cb | ||
|
|
abc23d2ad4 | ||
|
|
5cf03b48a0 | ||
|
|
48ab03c9d6 | ||
|
|
1cdb232649 | ||
|
|
242bfa2827 | ||
|
|
7514e5a5d7 | ||
|
|
cba16a4f3f | ||
|
|
bc32f167f2 | ||
|
|
c70affc35c | ||
|
|
6a61802dab | ||
|
|
54961fc38b | ||
|
|
7fb97e6a35 | ||
|
|
008268d3fd | ||
|
|
4637db000e | ||
|
|
b0debd2d81 | ||
|
|
5ebf1e3593 | ||
|
|
125f67ec5c | ||
|
|
d919ea1b42 | ||
|
|
c30ab597bb | ||
|
|
941176514c | ||
|
|
7c753cf117 | ||
|
|
7605066b8e | ||
|
|
dfe63ed352 | ||
|
|
22d99dd349 | ||
|
|
b07888478a | ||
|
|
f93c4949c9 | ||
|
|
645edec699 | ||
|
|
5cc0d44aba | ||
|
|
8672c78ac5 | ||
|
|
5e3237a972 | ||
|
|
4f1fa4718e | ||
|
|
119fdd2f2d | ||
|
|
a16cdd4477 | ||
|
|
4ee3936555 | ||
|
|
09184d93d9 | ||
|
|
bb0f668201 | ||
|
|
6ebb3da9d2 | ||
|
|
6c7b42517d | ||
|
|
2062a5d4e6 | ||
|
|
63055b910d | ||
|
|
a3c255d9c3 | ||
|
|
3a339ccb8d | ||
|
|
056de60090 | ||
|
|
07fa518798 | ||
|
|
5b87076f92 | ||
|
|
f8a5fdfb61 | ||
|
|
338ecfd26c | ||
|
|
4d7ea6759e | ||
|
|
39bc3aaf4c | ||
|
|
0b637b28d6 | ||
|
|
450afb1c4d | ||
|
|
d234e766b2 | ||
|
|
e1b6ba25d3 | ||
|
|
35ce1ec7fc | ||
|
|
d72e66c82f | ||
|
|
dbacb4e63e | ||
|
|
4cd3137680 | ||
|
|
179bc9c08c | ||
|
|
73673db0c6 | ||
|
|
6475d5af98 | ||
|
|
20af7b89cf | ||
|
|
d0db4c5ca3 | ||
|
|
bda4bcfd48 | ||
|
|
13980b1fcc | ||
|
|
2f21841a00 | ||
|
|
7b564ed2f0 | ||
|
|
400052429b | ||
|
|
abe5ce38bc | ||
|
|
b4080434ea | ||
|
|
ad063a989d | ||
|
|
19527a43c7 | ||
|
|
93d318ce41 | ||
|
|
723c33e3f2 | ||
|
|
17e1e7d61a | ||
|
|
7f7aa04351 | ||
|
|
80be808ed1 | ||
|
|
4256a677f2 | ||
|
|
5c438db555 | ||
|
|
3003028420 | ||
|
|
c486164e97 | ||
|
|
a0ae9b172e | ||
|
|
d492339dd7 | ||
|
|
a1e073f557 | ||
|
|
3cf4514166 | ||
|
|
0b5fb66ac2 | ||
|
|
961bbcda2c | ||
|
|
803c99e135 | ||
|
|
de2f698c72 | ||
|
|
7273974943 | ||
|
|
b7b6bc2022 | ||
|
|
dd918f0216 | ||
|
|
62e5d9c95b | ||
|
|
587b93ecd4 | ||
|
|
309e0aa30c | ||
|
|
deaaef0147 | ||
|
|
881fe7140d | ||
|
|
2cb251504d | ||
|
|
5a54d7f998 | ||
|
|
d7a271013f | ||
|
|
95a7a220cc | ||
|
|
667cc5475a | ||
|
|
2ddceb06e7 | ||
|
|
4ced350783 | ||
|
|
72dad958af | ||
|
|
bb2bd2fdfe | ||
|
|
4ca08e3c9b | ||
|
|
3e1493fd69 | ||
|
|
1c5e7f0ca8 | ||
|
|
bf5c25749d | ||
|
|
f8f78c591f | ||
|
|
a3510edc50 | ||
|
|
fd33ad550f | ||
|
|
a9cd4a9494 | ||
|
|
d9c993a7db | ||
|
|
29e38c8d50 | ||
|
|
c989f5248d | ||
|
|
d6aa262b7f | ||
|
|
2c51864489 | ||
|
|
65c53ffa0e | ||
|
|
4bd88a241e | ||
|
|
cbdc9bf8c7 | ||
|
|
3ee67ea29f | ||
|
|
d0e695b57c |
66
.github/workflows/helm-release.yml
vendored
66
.github/workflows/helm-release.yml
vendored
@@ -5,16 +5,52 @@ on:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "charts/*/Chart.yaml"
|
||||
- "charts/**"
|
||||
|
||||
jobs:
|
||||
# semantic-release:
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# # Checkout repo
|
||||
# - name: Checkout
|
||||
# uses: actions/checkout@v4
|
||||
|
||||
# - name: Setup Node.js
|
||||
# uses: actions/setup-node@v3
|
||||
# with:
|
||||
# node-version: 'lts/*'
|
||||
# - name: Install dependencies
|
||||
# run: npm install
|
||||
# - name: Release
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# run: npx semantic-release
|
||||
|
||||
# - name: Install yq
|
||||
# run: |
|
||||
# wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O yq &&\
|
||||
# chmod +x yq
|
||||
|
||||
# - name: Get version
|
||||
# id: get_version
|
||||
# run: |
|
||||
# echo "VERSION=$(cat charts/open-webui/Chart.yaml | ./yq -r '.version')" >> $GITHUB_OUTPUT
|
||||
|
||||
# - name: Commit Chart.yaml
|
||||
# uses: stefanzweifel/git-auto-commit-action@v4
|
||||
# with:
|
||||
# commit_message: 'chore(release) bump version to ${{ steps.get_version.outputs.VERSION }}'
|
||||
# file_pattern: 'charts/open-webui/Chart.yaml'
|
||||
|
||||
release:
|
||||
#needs: semantic-release
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -23,20 +59,34 @@ jobs:
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
|
||||
- name: Install Helm
|
||||
uses: azure/setup-helm@v4
|
||||
env:
|
||||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
|
||||
- name: Add Dependency Repos
|
||||
run: |
|
||||
helm repo add ollama https://otwld.github.io/ollama-helm/
|
||||
helm repo add open-webui https://helm.openwebui.com/
|
||||
helm repo add tika https://apache.jfrog.io/artifactory/tika/
|
||||
helm repo add redis https://charts.bitnami.com/bitnami
|
||||
|
||||
- name: Run chart-releaser
|
||||
uses: helm/chart-releaser-action@v1.6.0
|
||||
uses: helm/chart-releaser-action@v1.7.0
|
||||
with:
|
||||
skip_existing: false
|
||||
packages_with_index: true
|
||||
charts_dir: charts/
|
||||
env:
|
||||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
run: |
|
||||
echo "${GHCR_REGISTRY_PASSWORD}" | helm registry login ghcr.io --username ${{ github.actor }} --password-stdin
|
||||
env:
|
||||
GHCR_REGISTRY_PASSWORD: "${{ secrets.GITHUB_TOKEN }}"
|
||||
|
||||
- name: Push Charts to ghcr.io
|
||||
run: |
|
||||
for pkg in .cr-release-packages/*; do
|
||||
if [ -z "${pkg:-}" ]; then
|
||||
echo "No charts to release"
|
||||
break
|
||||
fi
|
||||
helm push "${pkg}" oci://ghcr.io/${{ github.repository }}
|
||||
done
|
||||
|
||||
64
.github/workflows/helm-test-open-webui.yml
vendored
Normal file
64
.github/workflows/helm-test-open-webui.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
name: Check Open WebUI Helm Charts (open-webui)
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "charts/open-webui/**"
|
||||
push:
|
||||
paths:
|
||||
- "charts/open-webui/**"
|
||||
|
||||
jobs:
|
||||
lint-chart:
|
||||
name: Lint Helm Chart
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
|
||||
- name: Lint open-webui Helm Chart
|
||||
run: |
|
||||
helm lint ./charts/open-webui
|
||||
|
||||
- name: Add Dependency Repos
|
||||
run: |
|
||||
helm repo add ollama https://otwld.github.io/ollama-helm/
|
||||
helm repo add open-webui https://helm.openwebui.com/
|
||||
helm repo add tika https://apache.jfrog.io/artifactory/tika/
|
||||
helm repo add redis https://charts.bitnami.com/bitnami
|
||||
- name: Build open-webui Helm dependencies
|
||||
run: |
|
||||
helm dependency build ./charts/open-webui
|
||||
|
||||
test-deploy:
|
||||
name: Test Chart Deployment
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint-chart
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up kubectl
|
||||
uses: azure/setup-kubectl@v4
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
|
||||
- name: Set up KinD Cluster
|
||||
uses: helm/kind-action@v1
|
||||
|
||||
- name: Template open-webui Helm Chart
|
||||
run: |
|
||||
helm template open-webui ./charts/open-webui \
|
||||
--namespace test-namespace --create-namespace > open-webui.yaml
|
||||
|
||||
- name: Verify open-webui
|
||||
run: |
|
||||
kubectl create namespace test-namespace
|
||||
kubectl apply --namespace test-namespace -f open-webui.yaml
|
||||
kubectl wait --namespace test-namespace pod/open-webui-0 --for=condition=Ready --timeout=600s
|
||||
55
.github/workflows/helm-test-pipelines.yml
vendored
Normal file
55
.github/workflows/helm-test-pipelines.yml
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
name: Check Open WebUI Helm Charts (pipelines)
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "charts/pipelines/**"
|
||||
push:
|
||||
paths:
|
||||
- "charts/pipelines/**"
|
||||
|
||||
jobs:
|
||||
lint-chart:
|
||||
name: Lint Helm Chart
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
|
||||
- name: Lint pipelines Helm Chart
|
||||
run: |
|
||||
helm lint ./charts/pipelines
|
||||
|
||||
test-deploy:
|
||||
name: Test Chart Deployment
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint-chart
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up kubectl
|
||||
uses: azure/setup-kubectl@v4
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
|
||||
- name: Set up KinD Cluster
|
||||
uses: helm/kind-action@v1
|
||||
|
||||
- name: Template open-webui Helm Chart
|
||||
run: |
|
||||
helm template pipelines ./charts/pipelines \
|
||||
--namespace test-namespace --create-namespace > pipelines.yaml
|
||||
|
||||
- name: Verify pipelines
|
||||
run: |
|
||||
kubectl create namespace test-namespace
|
||||
kubectl apply --namespace test-namespace -f pipelines.yaml
|
||||
PIPELINE_POD=$(kubectl get --namespace test-namespace pod -L app.kubernetes.io/component=pipelines -o jsonpath='{.items[*].metadata.name}')
|
||||
kubectl wait --namespace test-namespace pod/${PIPELINE_POD} --for=condition=Ready --timeout=600s
|
||||
125
.gitignore
vendored
Normal file
125
.gitignore
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/macos,intellij+all,helm
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=macos,intellij+all,helm
|
||||
|
||||
### Intellij+all ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### Intellij+all Patch ###
|
||||
# Ignore everything but code style settings and run configurations
|
||||
# that are supposed to be shared within teams.
|
||||
|
||||
.idea/*
|
||||
|
||||
!.idea/codeStyles
|
||||
!.idea/runConfigurations
|
||||
|
||||
### macOS ###
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
### macOS Patch ###
|
||||
# iCloud generated files
|
||||
*.icloud
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/macos,intellij+all,helm
|
||||
14
.releaserc
Normal file
14
.releaserc
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "helm-charts",
|
||||
"branches": ["main"],
|
||||
"plugins": [
|
||||
[
|
||||
"semantic-release-helm",
|
||||
{
|
||||
chartPath: './charts/open-webui',
|
||||
crPublish: false,
|
||||
onlyUpdateVersion: true
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
41
CONTRIBUTING.md
Normal file
41
CONTRIBUTING.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Contributing to the Open WebUI Helm Charts
|
||||
|
||||
## How to Contribute
|
||||
|
||||
> [!WARNING]
|
||||
> There is currently a bug in the Helm Chart Releaser Github Action that prevents you from deploying more than one chart on a single run. The best workaround for now is to ensure that pushes to `main` only include changes to a single chart. If you're contributing to more than one chart, please do it in separate PRs until the upstream issue is fixed, or until we can fork and fix the action ourselves.
|
||||
|
||||
1. **Fork the repository** and create your branch from `main`.
|
||||
2. **Make your changes** and ensure they follow the guidelines below.
|
||||
3. **Test your changes** locally to ensure everything works as expected. This should include deploying your updates to a live Kubernetes cluster (whether local or remote).
|
||||
4. **Run [helm-docs]** to ensure that the README is updated with the latest changes.
|
||||
5. **Commit your changes** using a descriptive commit message that follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification.
|
||||
6. **Push your changes** to your forked repository.
|
||||
7. **Create a Pull Request** and provide a detailed description of your changes. Please consider dropping us your redacted `values.yaml` file used during your testing in the PR so we can make sure we see consistent results.
|
||||
|
||||
## Guidelines
|
||||
|
||||
- **Semantic Versioning**: This repository follows [Semantic Versioning](https://semver.org/) for versioning the Helm Charts. When making changes, please ensure that you update the version in the `Chart.yaml` file according to the following rules:
|
||||
- `MAJOR` version increment for incompatible chart changes
|
||||
- `MINOR` version increment for backwards-compatible functionality additions
|
||||
- `PATCH` version increment for backwards-compatible bug fixes
|
||||
|
||||
- **Chart.yaml Updates**: When submitting a Pull Request, ensure that you have updated the `Chart.yaml` file with the appropriate version increment and a brief description of the changes in the `appVersion` field.
|
||||
|
||||
- **Code Style**: Follow the existing code style and conventions used in the repository.
|
||||
|
||||
- **Documentation**: If your changes require documentation updates, please include them in your Pull Request.
|
||||
|
||||
- **Testing**: Before submitting your Pull Request, ensure that your changes work as expected by testing them locally. This should include deploying your updates to a live Kubernetes cluster (whether local or remote).
|
||||
|
||||
- **Issues**: If you find any issues or have suggestions for improvements, please create a new issue in the repository before working on a Pull Request.
|
||||
|
||||
- **Actions Updates**: If your Pull Request includes adding a new chart dependency, ensure to make the necessary updates to Github Actions to add the chart repo dependency, or else the release run will fail.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you need any help or have questions about contributing, feel free to reach out to the maintainers of the repository.
|
||||
|
||||
Thank you for your contributions!
|
||||
|
||||
[helm-docs]: https://github.com/norwoodj/helm-docs
|
||||
@@ -1 +1,25 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
.drone.yml
|
||||
*.tmproj
|
||||
.vscode/
|
||||
values-minikube.yaml
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
dependencies:
|
||||
- name: ollama
|
||||
repository: https://otwld.github.io/ollama-helm/
|
||||
version: 0.25.0
|
||||
digest: sha256:3de991d818940927d9b459afba26af05ef24082dd3f123f462c72f7682665946
|
||||
generated: "2024-05-09T08:11:03.438421-07:00"
|
||||
version: 1.9.0
|
||||
- name: pipelines
|
||||
repository: https://helm.openwebui.com
|
||||
version: 0.5.0
|
||||
- name: tika
|
||||
repository: https://apache.jfrog.io/artifactory/tika
|
||||
version: 2.9.0
|
||||
- name: redis
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 20.11.3
|
||||
digest: sha256:8883c56753b4403161c144cdc5cb1ef3871c75cc511120709c4a848929126200
|
||||
generated: "2025-03-13T21:36:36.180953+09:00"
|
||||
|
||||
@@ -1,32 +1,45 @@
|
||||
apiVersion: v2
|
||||
name: open-webui
|
||||
version: 2.0.2
|
||||
appVersion: "latest"
|
||||
|
||||
version: 5.25.0
|
||||
appVersion: 0.5.20
|
||||
home: https://www.openwebui.com/
|
||||
icon: https://raw.githubusercontent.com/open-webui/open-webui/main/static/favicon.png
|
||||
|
||||
description: "Open WebUI: A User-Friendly Web Interface for Chat Interactions 👋"
|
||||
icon: >-
|
||||
https://raw.githubusercontent.com/open-webui/open-webui/main/static/favicon.png
|
||||
description: 'Open WebUI: A User-Friendly Web Interface for Chat Interactions 👋'
|
||||
keywords:
|
||||
- llm
|
||||
- chat
|
||||
- web-ui
|
||||
|
||||
- llm
|
||||
- chat
|
||||
- web-ui
|
||||
- open-webui
|
||||
sources:
|
||||
- https://github.com/open-webui/helm-charts
|
||||
- https://github.com/open-webui/open-webui/pkgs/container/open-webui
|
||||
- https://github.com/otwld/ollama-helm/
|
||||
- https://hub.docker.com/r/ollama/ollama
|
||||
|
||||
- https://github.com/open-webui/helm-charts
|
||||
- https://github.com/open-webui/open-webui/pkgs/container/open-webui
|
||||
- https://github.com/otwld/ollama-helm/
|
||||
- https://hub.docker.com/r/ollama/ollama
|
||||
- https://charts.bitnami.com/bitnami
|
||||
annotations:
|
||||
licenses: MIT
|
||||
|
||||
dependencies:
|
||||
- name: ollama
|
||||
repository: https://otwld.github.io/ollama-helm/
|
||||
version: ">=0.24.0"
|
||||
version: '>=0.24.0'
|
||||
import-values:
|
||||
|
||||
- child: service
|
||||
parent: ollama.service
|
||||
condition: ollama.enabled
|
||||
- name: pipelines
|
||||
repository: https://helm.openwebui.com
|
||||
version: '>=0.0.1'
|
||||
import-values:
|
||||
- child: service
|
||||
parent: pipelines.service
|
||||
condition: pipelines.enabled
|
||||
- name: tika
|
||||
repository: https://apache.jfrog.io/artifactory/tika
|
||||
version: '>=2.9.0'
|
||||
condition: tika.enabled
|
||||
- name: redis
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: '>=20.6.2'
|
||||
alias: redis-cluster
|
||||
condition: redis-cluster.enabled
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# open-webui
|
||||
|
||||
 
|
||||
 
|
||||
|
||||
Open WebUI: A User-Friendly Web Interface for Chat Interactions 👋
|
||||
|
||||
@@ -12,6 +12,7 @@ Open WebUI: A User-Friendly Web Interface for Chat Interactions 👋
|
||||
* <https://github.com/open-webui/open-webui/pkgs/container/open-webui>
|
||||
* <https://github.com/otwld/ollama-helm/>
|
||||
* <https://hub.docker.com/r/ollama/ollama>
|
||||
* <https://charts.bitnami.com/bitnami>
|
||||
|
||||
## Installing
|
||||
|
||||
@@ -32,6 +33,9 @@ helm upgrade --install open-webui open-webui/open-webui
|
||||
|
||||
| Repository | Name | Version |
|
||||
|------------|------|---------|
|
||||
| https://apache.jfrog.io/artifactory/tika | tika | >=2.9.0 |
|
||||
| https://charts.bitnami.com/bitnami | redis-cluster(redis) | >=20.6.2 |
|
||||
| https://helm.openwebui.com | pipelines | >=0.0.1 |
|
||||
| https://otwld.github.io/ollama-helm/ | ollama | >=0.24.0 |
|
||||
|
||||
## Values
|
||||
@@ -41,38 +45,95 @@ helm upgrade --install open-webui open-webui/open-webui
|
||||
| affinity | object | `{}` | Affinity for pod assignment |
|
||||
| annotations | object | `{}` | |
|
||||
| clusterDomain | string | `"cluster.local"` | Value of cluster domain |
|
||||
| extraEnvVars | list | `[]` | Additional environments variables on the output Deployment definition. |
|
||||
| image.pullPolicy | string | `"Always"` | |
|
||||
| image.repository | string | `"ghcr.io/open-webui/open-webui"` | |
|
||||
| image.tag | string | `""` | |
|
||||
| ingress.annotations | object | `{}` | Use appropriate annotations for your Ingress controller, e.g., for NGINX: nginx.ingress.kubernetes.io/rewrite-target: / |
|
||||
| containerSecurityContext | object | `{}` | Configure container security context ref: <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-containe> |
|
||||
| copyAppData.resources | object | `{}` | |
|
||||
| enableOpenaiApi | bool | `true` | Enables the use of OpenAI APIs |
|
||||
| extraEnvVars | list | `[{"name":"OPENAI_API_KEY","value":"0p3n-w3bu!"}]` | Env vars added to the Open WebUI deployment. Most up-to-date environment variables can be found here: https://docs.openwebui.com/getting-started/env-configuration/ |
|
||||
| extraEnvVars[0] | object | `{"name":"OPENAI_API_KEY","value":"0p3n-w3bu!"}` | Default API key value for Pipelines. Should be updated in a production deployment, or be changed to the required API key if not using Pipelines |
|
||||
| extraInitContainers | list | `[]` | Additional init containers to add to the deployment/statefulset ref: <https://kubernetes.io/docs/concepts/workloads/pods/init-containers/> |
|
||||
| extraResources | list | `[]` | Extra resources to deploy with Open WebUI |
|
||||
| hostAliases | list | `[]` | HostAliases to be added to hosts-file of each container |
|
||||
| image | object | `{"pullPolicy":"IfNotPresent","repository":"ghcr.io/open-webui/open-webui","tag":""}` | Open WebUI image tags can be found here: https://github.com/open-webui/open-webui |
|
||||
| imagePullSecrets | list | `[]` | Configure imagePullSecrets to use private registry ref: <https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry> |
|
||||
| ingress.additionalHosts | list | `[]` | |
|
||||
| ingress.annotations | object | `{}` | Use appropriate annotations for your Ingress controller, e.g., for NGINX: |
|
||||
| ingress.class | string | `""` | |
|
||||
| ingress.enabled | bool | `false` | |
|
||||
| ingress.existingSecret | string | `""` | |
|
||||
| ingress.host | string | `""` | |
|
||||
| ingress.host | string | `"chat.example.com"` | |
|
||||
| ingress.tls | bool | `false` | |
|
||||
| livenessProbe | object | `{}` | Probe for liveness of the Open WebUI container ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes> |
|
||||
| managedCertificate.domains[0] | string | `"chat.example.com"` | |
|
||||
| managedCertificate.enabled | bool | `false` | |
|
||||
| managedCertificate.name | string | `"mydomain-chat-cert"` | |
|
||||
| nameOverride | string | `""` | |
|
||||
| namespaceOverride | string | `""` | |
|
||||
| nodeSelector | object | `{}` | Node labels for pod assignment. |
|
||||
| ollama.enabled | bool | `true` | Automatically install Ollama Helm chart from https://otwld.github.io/ollama-helm/. Use [Helm Values](https://github.com/otwld/ollama-helm/#helm-values) to configure |
|
||||
| ollama.fullnameOverride | string | `"open-webui-ollama"` | If enabling embedded Ollama, update fullnameOverride to your desired Ollama name value, or else it will use the default ollama.name value from the Ollama chart |
|
||||
| ollamaUrls | list | `[]` | A list of Ollama API endpoints. These can be added in lieu of automatically installing the Ollama Helm chart, or in addition to it. |
|
||||
| ollamaUrlsFromExtraEnv | bool | `false` | Disables taking Ollama Urls from `ollamaUrls` list |
|
||||
| openaiBaseApiUrl | string | `"https://api.openai.com/v1"` | OpenAI base API URL to use. Defaults to the Pipelines service endpoint when Pipelines are enabled, and "https://api.openai.com/v1" if Pipelines are not enabled and this value is blank |
|
||||
| openaiBaseApiUrls | list | `[]` | OpenAI base API URLs to use. Overwrites the value in openaiBaseApiUrl if set |
|
||||
| persistence.accessModes | list | `["ReadWriteOnce"]` | If using multiple replicas, you must update accessModes to ReadWriteMany |
|
||||
| persistence.annotations | object | `{}` | |
|
||||
| persistence.enabled | bool | `true` | |
|
||||
| persistence.existingClaim | string | `""` | |
|
||||
| persistence.existingClaim | string | `""` | Use existingClaim if you want to re-use an existing Open WebUI PVC instead of creating a new one |
|
||||
| persistence.selector | object | `{}` | |
|
||||
| persistence.size | string | `"2Gi"` | |
|
||||
| persistence.storageClass | string | `""` | |
|
||||
| persistence.subPath | string | `""` | Subdirectory of Open WebUI PVC to mount. Useful if root directory is not empty. |
|
||||
| pipelines.enabled | bool | `true` | Automatically install Pipelines chart to extend Open WebUI functionality using Pipelines: https://github.com/open-webui/pipelines |
|
||||
| pipelines.extraEnvVars | list | `[]` | This section can be used to pass required environment variables to your pipelines (e.g. Langfuse hostname) |
|
||||
| podAnnotations | object | `{}` | |
|
||||
| podLabels | object | `{}` | |
|
||||
| podSecurityContext | object | `{}` | Configure pod security context ref: <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container> |
|
||||
| readinessProbe | object | `{}` | Probe for readiness of the Open WebUI container ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes> |
|
||||
| redis-cluster | object | `{"auth":{"enabled":false},"enabled":false,"fullnameOverride":"open-webui-redis","replica":{"replicaCount":3}}` | Deploys a Redis cluster with subchart 'redis' from bitnami |
|
||||
| redis-cluster.auth | object | `{"enabled":false}` | Redis Authentication |
|
||||
| redis-cluster.auth.enabled | bool | `false` | Enable Redis authentication (disabled by default). For your security, we strongly suggest that you switch to 'auth.enabled=true' |
|
||||
| redis-cluster.enabled | bool | `false` | Enable Redis installation |
|
||||
| redis-cluster.fullnameOverride | string | `"open-webui-redis"` | Redis cluster name (recommended to be 'open-webui-redis') - In this case, redis url will be 'redis://open-webui-redis-master:6379/0' or 'redis://[:<password>@]open-webui-redis-master:6379/0' |
|
||||
| redis-cluster.replica | object | `{"replicaCount":3}` | Replica configuration for the Redis cluster |
|
||||
| redis-cluster.replica.replicaCount | int | `3` | Number of Redis replica instances |
|
||||
| replicaCount | int | `1` | |
|
||||
| resources | object | `{}` | |
|
||||
| service.annotations | object | `{}` | |
|
||||
| service.containerPort | int | `8080` | |
|
||||
| service.labels | object | `{}` | |
|
||||
| service.loadBalancerClass | string | `""` | |
|
||||
| service.nodePort | string | `""` | |
|
||||
| service.port | int | `80` | |
|
||||
| service.type | string | `"ClusterIP"` | |
|
||||
| service | object | `{"annotations":{},"containerPort":8080,"labels":{},"loadBalancerClass":"","nodePort":"","port":80,"type":"ClusterIP"}` | Service values to expose Open WebUI pods to cluster |
|
||||
| serviceAccount.annotations | object | `{}` | |
|
||||
| serviceAccount.automountServiceAccountToken | bool | `false` | |
|
||||
| serviceAccount.enable | bool | `true` | |
|
||||
| serviceAccount.name | string | `""` | |
|
||||
| startupProbe | object | `{}` | Probe for startup of the Open WebUI container ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes> |
|
||||
| strategy | object | `{}` | Strategy for updating the workload manager: deployment or statefulset |
|
||||
| tika.enabled | bool | `false` | Automatically install Apache Tika to extend Open WebUI |
|
||||
| tolerations | list | `[]` | Tolerations for pod assignment |
|
||||
| topologySpreadConstraints | list | `[]` | Topology Spread Constraints for pod assignment |
|
||||
| volumeMounts | object | `{"container":[],"initContainer":[]}` | Configure container volume mounts ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/> |
|
||||
| volumes | list | `[]` | Configure pod volumes ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/> |
|
||||
| websocket.enabled | bool | `false` | Enables websocket support in Open WebUI with env `ENABLE_WEBSOCKET_SUPPORT` |
|
||||
| websocket.manager | string | `"redis"` | Specifies the websocket manager to use with env `WEBSOCKET_MANAGER`: redis (default) |
|
||||
| websocket.redis | object | `{"affinity":{},"annotations":{},"args":[],"command":[],"enabled":true,"image":{"pullPolicy":"IfNotPresent","repository":"redis","tag":"7.4.2-alpine3.21"},"labels":{},"name":"open-webui-redis","pods":{"annotations":{}},"resources":{},"service":{"annotations":{},"containerPort":6379,"labels":{},"nodePort":"","port":6379,"type":"ClusterIP"},"tolerations":[]}` | Deploys a redis |
|
||||
| websocket.redis.affinity | object | `{}` | Redis affinity for pod assignment |
|
||||
| websocket.redis.annotations | object | `{}` | Redis annotations |
|
||||
| websocket.redis.args | list | `[]` | Redis arguments (overrides default) |
|
||||
| websocket.redis.command | list | `[]` | Redis command (overrides default) |
|
||||
| websocket.redis.enabled | bool | `true` | Enable redis installation |
|
||||
| websocket.redis.image | object | `{"pullPolicy":"IfNotPresent","repository":"redis","tag":"7.4.2-alpine3.21"}` | Redis image |
|
||||
| websocket.redis.labels | object | `{}` | Redis labels |
|
||||
| websocket.redis.name | string | `"open-webui-redis"` | Redis name |
|
||||
| websocket.redis.pods | object | `{"annotations":{}}` | Redis pod |
|
||||
| websocket.redis.pods.annotations | object | `{}` | Redis pod annotations |
|
||||
| websocket.redis.resources | object | `{}` | Redis resources |
|
||||
| websocket.redis.securityContext | object | `{}` | Redis security context ref: <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-containe> |
|
||||
| websocket.redis.service | object | `{"annotations":{},"containerPort":6379,"labels":{},"nodePort":"","port":6379,"type":"ClusterIP"}` | Redis service |
|
||||
| websocket.redis.service.annotations | object | `{}` | Redis service annotations |
|
||||
| websocket.redis.service.containerPort | int | `6379` | Redis container/target port |
|
||||
| websocket.redis.service.labels | object | `{}` | Redis service labels |
|
||||
| websocket.redis.service.nodePort | string | `""` | Redis service node port. Valid only when type is `NodePort` |
|
||||
| websocket.redis.service.port | int | `6379` | Redis service port |
|
||||
| websocket.redis.service.type | string | `"ClusterIP"` | Redis service type |
|
||||
| websocket.redis.tolerations | list | `[]` | Redis tolerations for pod assignment |
|
||||
| websocket.url | string | `"redis://open-webui-redis:6379/0"` | Specifies the URL of the Redis instance for websocket communication. Template with `redis://[:<password>@]<hostname>:<port>/<db>` |
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
|
||||
Binary file not shown.
BIN
charts/open-webui/charts/ollama-1.9.0.tgz
Normal file
BIN
charts/open-webui/charts/ollama-1.9.0.tgz
Normal file
Binary file not shown.
BIN
charts/open-webui/charts/pipelines-0.5.0.tgz
Normal file
BIN
charts/open-webui/charts/pipelines-0.5.0.tgz
Normal file
Binary file not shown.
BIN
charts/open-webui/charts/redis-20.11.3.tgz
Normal file
BIN
charts/open-webui/charts/redis-20.11.3.tgz
Normal file
Binary file not shown.
BIN
charts/open-webui/charts/tika-2.9.0.tgz
Normal file
BIN
charts/open-webui/charts/tika-2.9.0.tgz
Normal file
Binary file not shown.
77
charts/open-webui/templates/NOTES.txt
Normal file
77
charts/open-webui/templates/NOTES.txt
Normal file
@@ -0,0 +1,77 @@
|
||||
{{- `
|
||||
🎉 Welcome to Open WebUI!!
|
||||
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
|
||||
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
|
||||
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
|
||||
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
|
||||
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
|
||||
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
|
||||
` }}
|
||||
v{{ .Chart.AppVersion }} - building the best open-source AI user interface.
|
||||
- Chart Version: v{{ .Chart.Version }}
|
||||
- Project URL 1: {{ .Chart.Home }}
|
||||
- Project URL 2: https://github.com/open-webui/open-webui
|
||||
- Documentation: https://docs.openwebui.com/
|
||||
- Chart URL: https://github.com/open-webui/helm-charts
|
||||
|
||||
Open WebUI is a web-based user interface that works with Ollama, OpenAI, Claude 3, Gemini and more.
|
||||
This interface allows you to easily interact with local AI models.
|
||||
|
||||
1. Deployment Information:
|
||||
- Chart Name: {{ .Chart.Name }}
|
||||
- Release Name: {{ .Release.Name }}
|
||||
- Namespace: {{ .Release.Namespace }}
|
||||
|
||||
2. Access the Application:
|
||||
{{- if contains "ClusterIP" .Values.service.type }}
|
||||
Access via ClusterIP service:
|
||||
|
||||
export LOCAL_PORT=8080
|
||||
export POD_NAME=$(kubectl get pods -n {{ .Release.Namespace }} -l "app.kubernetes.io/component={{ include "open-webui.name" . }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
export CONTAINER_PORT=$(kubectl get pod -n {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||
kubectl -n {{ .Release.Namespace }} port-forward $POD_NAME $LOCAL_PORT:$CONTAINER_PORT
|
||||
echo "Visit http://127.0.0.1:$LOCAL_PORT to use your application"
|
||||
|
||||
Then, access the application at: http://127.0.0.1:$LOCAL_PORT or http://localhost:8080
|
||||
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
Access via NodePort service:
|
||||
export NODE_PORT=$(kubectl get -n {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "open-webui.name" . }})
|
||||
export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
Access via LoadBalancer service:
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
NOTE: The external address format depends on your cloud provider:
|
||||
- AWS: Will return a hostname (e.g., xxx.elb.amazonaws.com)
|
||||
- GCP/Azure: Will return an IP address
|
||||
You can watch the status by running:
|
||||
|
||||
kubectl get -n {{ .Release.Namespace }} svc {{ include "open-webui.name" . }} --watch
|
||||
export EXTERNAL_IP=$(kubectl get -n {{ .Release.Namespace }} svc {{ include "open-webui.name" . }} -o jsonpath="{.status.loadBalancer.ingress[0].hostname:-.status.loadBalancer.ingress[0].ip}")
|
||||
echo http://$EXTERNAL_IP:{{ .Values.service.port }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.ingress.enabled }}
|
||||
|
||||
Ingress is enabled. Access the application at: http{{ if .Values.ingress.tls }}s{{ end }}://{{ .Values.ingress.host }}
|
||||
{{- end }}
|
||||
|
||||
3. Useful Commands:
|
||||
- Check deployment status:
|
||||
helm status {{ .Release.Name }} -n {{ .Release.Namespace }}
|
||||
|
||||
- Get detailed information:
|
||||
helm get all {{ .Release.Name }} -n {{ .Release.Namespace }}
|
||||
|
||||
- View logs:
|
||||
{{- if .Values.persistence.enabled }}
|
||||
kubectl logs -f statefulset/{{ include "open-webui.name" . }} -n {{ .Release.Namespace }}
|
||||
{{- else }}
|
||||
kubectl logs -f deployment/{{ include "open-webui.name" . }} -n {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
|
||||
4. Cleanup:
|
||||
- Uninstall the deployment:
|
||||
helm uninstall {{ .Release.Name }} -n {{ .Release.Namespace }}
|
||||
@@ -1,24 +1,63 @@
|
||||
{{/*
|
||||
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
|
||||
*/}}
|
||||
{{- define "open-webui.namespace" -}}
|
||||
{{- if .Values.namespaceOverride -}}
|
||||
{{- .Values.namespaceOverride -}}
|
||||
{{- else -}}
|
||||
{{- .Release.Namespace -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Set the name of the Open WebUI resources
|
||||
*/}}
|
||||
{{- define "open-webui.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Set the name of the integrated Ollama resources
|
||||
*/}}
|
||||
{{- define "ollama.name" -}}
|
||||
ollama
|
||||
open-webui-ollama
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Set the name of the integrated Pipelines resources
|
||||
*/}}
|
||||
{{- define "pipelines.name" -}}
|
||||
open-webui-pipelines
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Constructs a semicolon-separated string of Ollama API endpoint URLs from the ollamaUrls list
|
||||
defined in the values.yaml file
|
||||
*/}}
|
||||
{{- define "ollamaUrls" -}}
|
||||
{{- if .Values.ollamaUrls }}
|
||||
{{- join ";" .Values.ollamaUrls | trimSuffix "/" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Generates the URL for accessing the Ollama service within the Kubernetes cluster when the
|
||||
ollama.enabled value is set to true, which means that the Ollama Helm chart is being installed
|
||||
as a dependency of the Open WebUI chart
|
||||
*/}}
|
||||
{{- define "ollamaLocalUrl" -}}
|
||||
{{- if .Values.ollama.enabled -}}
|
||||
{{- $clusterDomain := .Values.clusterDomain }}
|
||||
{{- $ollamaServicePort := .Values.ollama.service.port | toString }}
|
||||
{{- printf "http://open-webui-%s.%s.svc.%s:%s" (include "ollama.name" .) (.Release.Namespace) $clusterDomain $ollamaServicePort }}
|
||||
{{- printf "http://%s.%s.svc.%s:%s" (default .Values.ollama.name .Values.ollama.fullnameOverride) (.Release.Namespace) $clusterDomain $ollamaServicePort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Constructs a string containing the URLs of the Ollama API endpoints that the Open WebUI
|
||||
application should use based on which values are set for Ollama/ whether the Ollama
|
||||
subchart is in use
|
||||
*/}}
|
||||
{{- define "ollamaBaseUrls" -}}
|
||||
{{- $ollamaLocalUrl := include "ollamaLocalUrl" . }}
|
||||
{{- $ollamaUrls := include "ollamaUrls" . }}
|
||||
@@ -31,10 +70,16 @@ ollama
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the chart name and version for the chart label
|
||||
*/}}
|
||||
{{- define "chart.name" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the base labels to include on chart resources
|
||||
*/}}
|
||||
{{- define "base.labels" -}}
|
||||
helm.sh/chart: {{ include "chart.name" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
@@ -43,26 +88,84 @@ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create selector labels to include on all resources
|
||||
*/}}
|
||||
{{- define "base.selectorLabels" -}}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create selector labels to include on all Open WebUI resources
|
||||
*/}}
|
||||
{{- define "open-webui.selectorLabels" -}}
|
||||
{{ include "base.selectorLabels" . }}
|
||||
app.kubernetes.io/component: {{ .Chart.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create labels to include on chart all Open WebUI resources
|
||||
*/}}
|
||||
{{- define "open-webui.labels" -}}
|
||||
{{ include "base.labels" . }}
|
||||
{{ include "open-webui.selectorLabels" . }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create selector labels to include on chart all Ollama resources
|
||||
*/}}
|
||||
{{- define "ollama.selectorLabels" -}}
|
||||
{{ include "base.selectorLabels" . }}
|
||||
app.kubernetes.io/component: {{ include "ollama.name" . }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create labels to include on chart all Ollama resources
|
||||
*/}}
|
||||
{{- define "ollama.labels" -}}
|
||||
{{ include "base.labels" . }}
|
||||
{{ include "ollama.selectorLabels" . }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create selector labels to include on chart all Pipelines resources
|
||||
*/}}
|
||||
{{- define "pipelines.selectorLabels" -}}
|
||||
{{ include "base.selectorLabels" . }}
|
||||
app.kubernetes.io/component: {{ include "pipelines.name" . }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create labels to include on chart all Pipelines resources
|
||||
*/}}
|
||||
{{- define "pipelines.labels" -}}
|
||||
{{ include "base.labels" . }}
|
||||
{{ include "pipelines.selectorLabels" . }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the service endpoint to use for Pipelines if the subchart is used
|
||||
*/}}
|
||||
{{- define "pipelines.serviceEndpoint" -}}
|
||||
{{- if .Values.pipelines.enabled -}}
|
||||
{{- $clusterDomain := .Values.clusterDomain }}
|
||||
{{- $pipelinesServicePort := .Values.pipelines.service.port | toString }}
|
||||
{{- printf "http://%s.%s.svc.%s:%s" (include "pipelines.name" .) (.Release.Namespace) $clusterDomain $pipelinesServicePort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create selector labels to include on chart all websocket resources
|
||||
*/}}
|
||||
{{- define "websocket.redis.selectorLabels" -}}
|
||||
{{ include "base.selectorLabels" . }}
|
||||
app.kubernetes.io/component: {{ .Values.websocket.redis.name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create labels to include on chart all websocket resources
|
||||
*/}}
|
||||
{{- define "websocket.redis.labels" -}}
|
||||
{{ include "base.labels" . }}
|
||||
{{ include "websocket.redis.selectorLabels" . }}
|
||||
{{- end }}
|
||||
|
||||
6
charts/open-webui/templates/extra-resources.yaml
Normal file
6
charts/open-webui/templates/extra-resources.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
{{- if .Values.extraResources }}
|
||||
{{- range .Values.extraResources }}
|
||||
---
|
||||
{{ toYaml . | nindent 0 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -3,6 +3,7 @@ apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ include "open-webui.name" . }}
|
||||
namespace: {{ include "open-webui.namespace" . }}
|
||||
labels:
|
||||
{{- include "open-webui.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
@@ -17,6 +18,9 @@ spec:
|
||||
tls:
|
||||
- hosts:
|
||||
- {{ .Values.ingress.host | quote }}
|
||||
{{- range .Values.ingress.additionalHosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ default (printf "%s-tls" .Release.Name) .Values.ingress.existingSecret }}
|
||||
{{- end }}
|
||||
rules:
|
||||
@@ -30,4 +34,16 @@ spec:
|
||||
name: {{ include "open-webui.name" . }}
|
||||
port:
|
||||
name: http
|
||||
{{- range .Values.ingress.additionalHosts }}
|
||||
- host: {{ . | quote }}
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: {{ include "open-webui.name" $ }}
|
||||
port:
|
||||
name: http
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
11
charts/open-webui/templates/managed-cert.yaml
Normal file
11
charts/open-webui/templates/managed-cert.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
{{- if .Values.managedCertificate.enabled }}
|
||||
apiVersion: networking.gke.io/v1
|
||||
kind: ManagedCertificate
|
||||
metadata:
|
||||
name: {{ .Values.managedCertificate.name | default "mydomain-cert" }}
|
||||
spec:
|
||||
domains:
|
||||
{{- range .Values.managedCertificate.domains }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -3,6 +3,7 @@ apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ include "open-webui.name" . }}
|
||||
namespace: {{ include "open-webui.namespace" . }}
|
||||
labels:
|
||||
{{- include "open-webui.selectorLabels" . | nindent 4 }}
|
||||
{{- with .Values.persistence.annotations }}
|
||||
|
||||
14
charts/open-webui/templates/service-account.yaml
Normal file
14
charts/open-webui/templates/service-account.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
{{- if .Values.serviceAccount.enable }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.name | default (include "open-webui.name" .) }}
|
||||
namespace: {{ include "open-webui.namespace" . }}
|
||||
labels:
|
||||
{{- include "open-webui.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
|
||||
{{- end }}
|
||||
@@ -2,6 +2,7 @@ apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "open-webui.name" . }}
|
||||
namespace: {{ include "open-webui.namespace" . }}
|
||||
labels:
|
||||
{{- include "open-webui.labels" . | nindent 4 }}
|
||||
{{- with .Values.service.labels }}
|
||||
@@ -26,4 +27,10 @@ spec:
|
||||
{{- if .Values.service.loadBalancerClass }}
|
||||
loadBalancerClass: {{ .Values.service.loadBalancerClass | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{- if and (eq .Values.service.type "ClusterIP") (.Values.service.clusterIP) }}
|
||||
clusterIP: {{ .Values.service.clusterIP }}
|
||||
{{- end }}
|
||||
{{- if and (eq .Values.service.type "LoadBalancer") (.Values.service.loadBalancerIP) }}
|
||||
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
91
charts/open-webui/templates/websocket-redis.yaml
Normal file
91
charts/open-webui/templates/websocket-redis.yaml
Normal file
@@ -0,0 +1,91 @@
|
||||
{{- if and .Values.websocket.enabled .Values.websocket.redis.enabled }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Values.websocket.redis.name }}
|
||||
namespace: {{ include "open-webui.namespace" . }}
|
||||
labels:
|
||||
{{- include "websocket.redis.labels" . | nindent 4 }}
|
||||
{{- with .Values.websocket.redis.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- with .Values.websocket.redis.annotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "websocket.redis.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "websocket.redis.labels" . | nindent 8 }}
|
||||
annotations:
|
||||
{{- with .Values.websocket.redis.pods.annotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.websocket.redis.image.pullSecretName }}
|
||||
imagePullSecrets:
|
||||
- name: {{ .Values.websocket.redis.image.pullSecretName }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Values.websocket.redis.name }}
|
||||
image: "{{ .Values.websocket.redis.image.repository }}:{{ .Values.websocket.redis.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.websocket.redis.image.pullPolicy }}
|
||||
{{- with .Values.websocket.redis.command }}
|
||||
command:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.websocket.redis.args }}
|
||||
args:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.websocket.redis.service.containerPort }}
|
||||
{{- with .Values.websocket.redis.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.websocket.redis.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.websocket.redis.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.websocket.redis.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Values.websocket.redis.name }}
|
||||
namespace: {{ include "open-webui.namespace" . }}
|
||||
labels:
|
||||
{{- include "websocket.redis.labels" . | nindent 4 }}
|
||||
{{- with .Values.websocket.redis.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- with .Values.websocket.redis.service.annotations }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
{{- include "websocket.redis.selectorLabels" . | nindent 4 }}
|
||||
type: {{ .Values.websocket.redis.service.type | default "ClusterIP" }}
|
||||
ports:
|
||||
- protocol: TCP
|
||||
name: http
|
||||
port: {{ .Values.websocket.redis.service.port }}
|
||||
targetPort: http
|
||||
{{- if .Values.websocket.redis.service.nodePort }}
|
||||
nodePort: {{ .Values.websocket.redis.service.nodePort | int }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
200
charts/open-webui/templates/workload-manager.yaml
Normal file
200
charts/open-webui/templates/workload-manager.yaml
Normal file
@@ -0,0 +1,200 @@
|
||||
apiVersion: apps/v1
|
||||
{{- if .Values.persistence.enabled }}
|
||||
kind: StatefulSet
|
||||
{{- else }}
|
||||
kind: Deployment
|
||||
{{- end }}
|
||||
metadata:
|
||||
name: {{ include "open-webui.name" . }}
|
||||
namespace: {{ include "open-webui.namespace" . }}
|
||||
labels:
|
||||
{{- include "open-webui.labels" . | nindent 4 }}
|
||||
{{- with .Values.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- if .Values.persistence.enabled }}
|
||||
serviceName: {{ include "open-webui.name" . }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "open-webui.selectorLabels" . | nindent 6 }}
|
||||
{{- if .Values.strategy }}
|
||||
{{- if .Values.persistence.enabled }}
|
||||
updateStrategy:
|
||||
{{- toYaml .Values.strategy | nindent 4 }}
|
||||
{{- else }}
|
||||
strategy:
|
||||
{{- toYaml .Values.strategy | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "open-webui.labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
initContainers:
|
||||
- name: copy-app-data
|
||||
{{- with .Values.image }}
|
||||
image: {{ .repository }}:{{ .tag | default $.Chart.AppVersion }}
|
||||
imagePullPolicy: {{ .pullPolicy }}
|
||||
{{- end }}
|
||||
command: ['sh', '-c', 'cp -R -n /app/backend/data/* /tmp/app-data/']
|
||||
{{- with .Values.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.copyAppData.resources }}
|
||||
resources: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /tmp/app-data
|
||||
{{- if .Values.persistence.subPath }}
|
||||
subPath: {{ .Values.persistence.subPath }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumeMounts.initContainer }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.extraInitContainers }}
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: false
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
|
||||
{{- if .Values.serviceAccount.enable }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.name | default (include "open-webui.name" .) }}
|
||||
{{- end }}
|
||||
{{- with .Values.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{- with .Values.image }}
|
||||
image: {{ .repository }}:{{ .tag | default $.Chart.AppVersion }}
|
||||
imagePullPolicy: {{ .pullPolicy }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.service.containerPort }}
|
||||
{{- with .Values.livenessProbe }}
|
||||
livenessProbe: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.readinessProbe }}
|
||||
readinessProbe: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.startupProbe }}
|
||||
startupProbe: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.resources }}
|
||||
resources: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /app/backend/data
|
||||
{{- if .Values.persistence.subPath }}
|
||||
subPath: {{ .Values.persistence.subPath }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumeMounts.container }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
env:
|
||||
{{- if .Values.ollamaUrlsFromExtraEnv}}
|
||||
{{- else if or .Values.ollamaUrls .Values.ollama.enabled }}
|
||||
- name: "OLLAMA_BASE_URLS"
|
||||
value: {{ include "ollamaBaseUrls" . | quote }}
|
||||
{{- else }}
|
||||
- name: "ENABLE_OLLAMA_API"
|
||||
value: "False"
|
||||
{{- end }}
|
||||
{{- if and .Values.enableOpenaiApi .Values.openaiBaseApiUrl (not .Values.openaiBaseApiUrls) (not .Values.pipelines.enabled) }}
|
||||
# If only an OpenAI API value is set, set it to OPENAI_API_BASE_URL
|
||||
- name: "OPENAI_API_BASE_URL"
|
||||
value: {{ .Values.openaiBaseApiUrl | quote }}
|
||||
{{- else if and .Values.enableOpenaiApi .Values.openaiBaseApiUrl .Values.pipelines.enabled (not .Values.openaiBaseApiUrls) }}
|
||||
# If Pipelines is enabled and OpenAI API value is set, use OPENAI_API_BASE_URLS with combined values
|
||||
- name: "OPENAI_API_BASE_URLS"
|
||||
value: "{{ include "pipelines.serviceEndpoint" . }};{{ .Values.openaiBaseApiUrl }}"
|
||||
{{- else if and .Values.enableOpenaiApi .Values.pipelines.enabled (not .Values.openaiBaseApiUrl) (not .Values.openaiBaseApiUrls) }}
|
||||
# If Pipelines is enabled and no OpenAI API values are set, set OPENAI_API_BASE_URL to the Pipelines server endpoint
|
||||
- name: "OPENAI_API_BASE_URL"
|
||||
value: {{ include "pipelines.serviceEndpoint" . | quote }}
|
||||
{{- else if and .Values.enableOpenaiApi .Values.openaiBaseApiUrls .Values.pipelines.enabled }}
|
||||
# If OpenAI API value(s) set and Pipelines is enabled, use OPENAI_API_BASE_URLS to support all the endpoints in the chart
|
||||
- name: "OPENAI_API_BASE_URLS"
|
||||
value: "{{ include "pipelines.serviceEndpoint" . }};{{ join ";" .Values.openaiBaseApiUrls }}"
|
||||
{{- else if not .Values.enableOpenaiApi }}
|
||||
- name: "ENABLE_OPENAI_API"
|
||||
value: "False"
|
||||
{{- end }}
|
||||
{{- if .Values.extraEnvVars }}
|
||||
{{- toYaml .Values.extraEnvVars | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.tika.enabled }}
|
||||
- name: "CONTENT_EXTRACTION_ENGINE"
|
||||
value: "Tika"
|
||||
- name: "TIKA_SERVER_URL"
|
||||
value: http://{{ .Chart.Name }}-tika:9998
|
||||
{{- end }}
|
||||
{{- if .Values.websocket.enabled }}
|
||||
- name: "ENABLE_WEBSOCKET_SUPPORT"
|
||||
value: "True"
|
||||
- name: "WEBSOCKET_MANAGER"
|
||||
value: {{ .Values.websocket.manager | default "redis" | quote }}
|
||||
- name: "WEBSOCKET_REDIS_URL"
|
||||
value: {{ .Values.websocket.url | quote }}
|
||||
{{- end }}
|
||||
tty: true
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
{{- if and .Values.persistence.enabled .Values.persistence.existingClaim }}
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .Values.persistence.existingClaim }}
|
||||
{{- else if not .Values.persistence.enabled }}
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
{{- else if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ include "open-webui.name" . }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumes }}
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
290
charts/open-webui/values-gke-min.yaml
Normal file
290
charts/open-webui/values-gke-min.yaml
Normal file
@@ -0,0 +1,290 @@
|
||||
nameOverride: ""
|
||||
namespaceOverride: ""
|
||||
|
||||
ollama:
|
||||
# -- Automatically install Ollama Helm chart from https://otwld.github.io/ollama-helm/. Use [Helm Values](https://github.com/otwld/ollama-helm/#helm-values) to configure
|
||||
enabled: false
|
||||
# -- If enabling embedded Ollama, update fullnameOverride to your desired Ollama name value, or else it will use the default ollama.name value from the Ollama chart
|
||||
fullnameOverride: "open-webui-ollama"
|
||||
# -- Example Ollama configuration with nvidia GPU enabled, automatically downloading a model, and deploying a PVC for model persistence
|
||||
# ollama:
|
||||
# gpu:
|
||||
# enabled: true
|
||||
# type: 'nvidia'
|
||||
# number: 1
|
||||
# models:
|
||||
# - llama3
|
||||
# runtimeClassName: nvidia
|
||||
# persistentVolume:
|
||||
# enabled: true
|
||||
# volumeName: "example-pre-existing-pv-created-by-smb-csi"
|
||||
|
||||
pipelines:
|
||||
# -- Automatically install Pipelines chart to extend Open WebUI functionality using Pipelines: https://github.com/open-webui/pipelines
|
||||
enabled: false
|
||||
# -- This section can be used to pass required environment variables to your pipelines (e.g. Langfuse hostname)
|
||||
extraEnvVars: []
|
||||
|
||||
tika:
|
||||
# -- Automatically install Apache Tika to extend Open WebUI
|
||||
enabled: false
|
||||
|
||||
# -- A list of Ollama API endpoints. These can be added in lieu of automatically installing the Ollama Helm chart, or in addition to it.
|
||||
ollamaUrls: []
|
||||
|
||||
websocket:
|
||||
# -- Enables websocket support in Open WebUI with env `ENABLE_WEBSOCKET_SUPPORT`
|
||||
enabled: false
|
||||
# -- Specifies the websocket manager to use with env `WEBSOCKET_MANAGER`: redis (default)
|
||||
manager: redis
|
||||
# -- Specifies the URL of the Redis instance for websocket communication. Template with `redis://[:<password>@]<hostname>:<port>/<db>`
|
||||
url: redis://open-webui-redis:6379/0
|
||||
# -- Deploys a redis
|
||||
redis:
|
||||
# -- Enable redis installation
|
||||
enabled: true
|
||||
# -- Redis name
|
||||
name: open-webui-redis
|
||||
# -- Redis labels
|
||||
labels: {}
|
||||
# -- Redis annotations
|
||||
annotations: {}
|
||||
# -- Redis image
|
||||
image:
|
||||
repository: redis
|
||||
tag: 7.4.2-alpine3.21
|
||||
pullPolicy: IfNotPresent
|
||||
# -- Redis command (overrides default)
|
||||
command: []
|
||||
# -- Redis arguments (overrides default)
|
||||
args: []
|
||||
# -- Redis resources
|
||||
resources: {}
|
||||
# -- Redis service
|
||||
service:
|
||||
# -- Redis container/target port
|
||||
containerPort: 6379
|
||||
# -- Redis service type
|
||||
type: ClusterIP
|
||||
# -- Redis service labels
|
||||
labels: {}
|
||||
# -- Redis service annotations
|
||||
annotations: {}
|
||||
# -- Redis service port
|
||||
port: 6379
|
||||
# -- Redis service node port. Valid only when type is `NodePort`
|
||||
nodePort: ""
|
||||
|
||||
# -- Deploys a Redis cluster with subchart 'redis' from bitnami
|
||||
redis-cluster:
|
||||
# -- Enable Redis installation
|
||||
enabled: false
|
||||
# -- Redis cluster name (recommended to be 'open-webui-redis')
|
||||
# - In this case, redis url will be 'redis://open-webui-redis-master:6379/0' or 'redis://[:<password>@]open-webui-redis-master:6379/0'
|
||||
fullnameOverride: open-webui-redis
|
||||
# -- Redis Authentication
|
||||
auth:
|
||||
# -- Enable Redis authentication (disabled by default). For your security, we strongly suggest that you switch to 'auth.enabled=true'
|
||||
enabled: false
|
||||
# -- Replica configuration for the Redis cluster
|
||||
replica:
|
||||
# -- Number of Redis replica instances
|
||||
replicaCount: 3
|
||||
|
||||
# -- Value of cluster domain
|
||||
clusterDomain: cluster.local
|
||||
|
||||
annotations: {}
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
replicaCount: 1
|
||||
# -- Strategy for updating the workload manager: deployment or statefulset
|
||||
strategy: {}
|
||||
# -- Open WebUI image tags can be found here: https://github.com/open-webui/open-webui
|
||||
image:
|
||||
repository: ghcr.io/open-webui/open-webui
|
||||
tag: ""
|
||||
pullPolicy: "IfNotPresent"
|
||||
|
||||
serviceAccount:
|
||||
enable: true
|
||||
name: ""
|
||||
annotations: {}
|
||||
automountServiceAccountToken: false
|
||||
|
||||
# -- Configure imagePullSecrets to use private registry
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry>
|
||||
imagePullSecrets: []
|
||||
# imagePullSecrets:
|
||||
# - name: myRegistryKeySecretName
|
||||
|
||||
# -- Probe for liveness of the Open WebUI container
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes>
|
||||
livenessProbe: {}
|
||||
# livenessProbe:
|
||||
# httpGet:
|
||||
# path: /health
|
||||
# port: http
|
||||
# failureThreshold: 1
|
||||
# periodSeconds: 10
|
||||
|
||||
# -- Probe for readiness of the Open WebUI container
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes>
|
||||
readinessProbe: {}
|
||||
# readinessProbe:
|
||||
# httpGet:
|
||||
# path: /health/db
|
||||
# port: http
|
||||
# failureThreshold: 1
|
||||
# periodSeconds: 10
|
||||
|
||||
# -- Probe for startup of the Open WebUI container
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes>
|
||||
startupProbe: {}
|
||||
# startupProbe:
|
||||
# httpGet:
|
||||
# path: /health
|
||||
# port: http
|
||||
# initialDelaySeconds: 30
|
||||
# periodSeconds: 5
|
||||
# failureThreshold: 20
|
||||
|
||||
resources: {}
|
||||
|
||||
copyAppData:
|
||||
resources: {}
|
||||
|
||||
managedCertificate:
|
||||
enabled: true
|
||||
name: "mydomain-chat-cert" # You can override this name if needed
|
||||
domains:
|
||||
- chat.example.com # update to your real domain
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
class: ""
|
||||
# -- Use appropriate annotations for your Ingress controller, e.g., for NGINX:
|
||||
annotations:
|
||||
# Example for GKE Ingress
|
||||
kubernetes.io/ingress.class: "gce"
|
||||
kubernetes.io/ingress.global-static-ip-name: "open-webui-external-ip" # you need to create this address in GCP console
|
||||
# Force HTTP to redirect to HTTPS
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/permanent-redirect: "https://chat.example.com"
|
||||
networking.gke.io/managed-certificates: "mydomain-chat-cert"
|
||||
# nginx.ingress.kubernetes.io/rewrite-target: /
|
||||
host: "chat.example.com" # update to your real domain
|
||||
additionalHosts: []
|
||||
tls: false
|
||||
existingSecret: ""
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 2Gi
|
||||
# -- Use existingClaim if you want to re-use an existing Open WebUI PVC instead of creating a new one
|
||||
existingClaim: ""
|
||||
# -- Subdirectory of Open WebUI PVC to mount. Useful if root directory is not empty.
|
||||
subPath: ""
|
||||
# -- If using multiple replicas, you must update accessModes to ReadWriteMany
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
storageClass: ""
|
||||
selector: {}
|
||||
annotations: {}
|
||||
|
||||
# -- Node labels for pod assignment.
|
||||
nodeSelector: {}
|
||||
|
||||
# -- Tolerations for pod assignment
|
||||
tolerations: []
|
||||
|
||||
# -- Affinity for pod assignment
|
||||
affinity: {}
|
||||
|
||||
# -- Topology Spread Constraints for pod assignment
|
||||
topologySpreadConstraints: []
|
||||
|
||||
# -- Service values to expose Open WebUI pods to cluster
|
||||
service:
|
||||
type: LoadBalancer # changed from ClusterIP to LoadBalancer for external access on GKE
|
||||
annotations: {}
|
||||
port: 80
|
||||
containerPort: 8080
|
||||
nodePort: ""
|
||||
labels: {}
|
||||
loadBalancerClass: ""
|
||||
|
||||
# -- OpenAI base API URL to use. Defaults to the Pipelines service endpoint when Pipelines are enabled, and "https://api.openai.com/v1" if Pipelines are not enabled and this value is blank
|
||||
openaiBaseApiUrl: ""
|
||||
|
||||
# -- Env vars added to the Open WebUI deployment. Most up-to-date environment variables can be found here: https://docs.openwebui.com/getting-started/env-configuration/
|
||||
extraEnvVars:
|
||||
# -- Default API key value for Pipelines. Should be updated in a production deployment, or be changed to the required API key if not using Pipelines
|
||||
- name: OPENAI_API_KEY
|
||||
value: "0p3n-w3bu!"
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: pipelines-api-key
|
||||
# key: api-key
|
||||
# - name: OPENAI_API_KEY
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: openai-api-key
|
||||
# key: api-key
|
||||
# - name: OLLAMA_DEBUG
|
||||
# value: "1"
|
||||
|
||||
# -- Configure container volume mounts
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/>
|
||||
volumeMounts:
|
||||
initContainer: []
|
||||
# - name: ""
|
||||
# mountPath: ""
|
||||
container: []
|
||||
# - name: ""
|
||||
# mountPath: ""
|
||||
|
||||
# -- Configure pod volumes
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/>
|
||||
volumes: []
|
||||
# - name: ""
|
||||
# configMap:
|
||||
# name: ""
|
||||
# - name: ""
|
||||
# emptyDir: {}
|
||||
|
||||
# -- Configure pod security context
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-containe>
|
||||
podSecurityContext:
|
||||
{}
|
||||
# fsGroupChangePolicy: Always
|
||||
# sysctls: []
|
||||
# supplementalGroups: []
|
||||
# fsGroup: 1001
|
||||
|
||||
|
||||
# -- Configure container security context
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-containe>
|
||||
containerSecurityContext:
|
||||
{}
|
||||
# runAsUser: 1001
|
||||
# runAsGroup: 1001
|
||||
# runAsNonRoot: true
|
||||
# privileged: false
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: false
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# seccompProfile:
|
||||
# type: "RuntimeDefault"
|
||||
|
||||
# -- Extra resources to deploy with Open WebUI
|
||||
extraResources:
|
||||
[]
|
||||
# - apiVersion: v1
|
||||
# kind: ConfigMap
|
||||
# metadata:
|
||||
# name: example-configmap
|
||||
# data:
|
||||
# example-key: example-value
|
||||
@@ -1,51 +1,214 @@
|
||||
nameOverride: ""
|
||||
namespaceOverride: ""
|
||||
|
||||
ollama:
|
||||
# -- Automatically install Ollama Helm chart from https://otwld.github.io/ollama-helm/. Use [Helm Values](https://github.com/otwld/ollama-helm/#helm-values) to configure
|
||||
enabled: true
|
||||
# Example Ollama configuration with nvidia GPU enabled, automatically downloading a model, and deploying a PVC for model persistence
|
||||
# -- If enabling embedded Ollama, update fullnameOverride to your desired Ollama name value, or else it will use the default ollama.name value from the Ollama chart
|
||||
fullnameOverride: "open-webui-ollama"
|
||||
# -- Example Ollama configuration with nvidia GPU enabled, automatically downloading a model, and deploying a PVC for model persistence
|
||||
# ollama:
|
||||
# gpu:
|
||||
# enabled: true
|
||||
# type: 'nvidia'
|
||||
# number: 1
|
||||
# models:
|
||||
# - llama3
|
||||
# pull:
|
||||
# - llama3
|
||||
# run:
|
||||
# - llama3
|
||||
# runtimeClassName: nvidia
|
||||
# persistentVolume:
|
||||
# enabled: true
|
||||
# volumeName: "example-pre-existing-pv-created-by-smb-csi"
|
||||
|
||||
pipelines:
|
||||
# -- Automatically install Pipelines chart to extend Open WebUI functionality using Pipelines: https://github.com/open-webui/pipelines
|
||||
enabled: true
|
||||
# -- This section can be used to pass required environment variables to your pipelines (e.g. Langfuse hostname)
|
||||
extraEnvVars: []
|
||||
|
||||
tika:
|
||||
# -- Automatically install Apache Tika to extend Open WebUI
|
||||
enabled: false
|
||||
|
||||
# -- A list of Ollama API endpoints. These can be added in lieu of automatically installing the Ollama Helm chart, or in addition to it.
|
||||
ollamaUrls: []
|
||||
|
||||
# -- Disables taking Ollama Urls from `ollamaUrls` list
|
||||
ollamaUrlsFromExtraEnv: false
|
||||
|
||||
websocket:
|
||||
# -- Enables websocket support in Open WebUI with env `ENABLE_WEBSOCKET_SUPPORT`
|
||||
enabled: false
|
||||
# -- Specifies the websocket manager to use with env `WEBSOCKET_MANAGER`: redis (default)
|
||||
manager: redis
|
||||
# -- Specifies the URL of the Redis instance for websocket communication. Template with `redis://[:<password>@]<hostname>:<port>/<db>`
|
||||
url: redis://open-webui-redis:6379/0
|
||||
# -- Deploys a redis
|
||||
redis:
|
||||
# -- Enable redis installation
|
||||
enabled: true
|
||||
# -- Redis name
|
||||
name: open-webui-redis
|
||||
# -- Redis labels
|
||||
labels: {}
|
||||
# -- Redis annotations
|
||||
annotations: {}
|
||||
# -- Redis pod
|
||||
pods:
|
||||
# -- Redis pod annotations
|
||||
annotations: {}
|
||||
# -- Redis image
|
||||
image:
|
||||
repository: redis
|
||||
tag: 7.4.2-alpine3.21
|
||||
pullPolicy: IfNotPresent
|
||||
# -- Redis command (overrides default)
|
||||
command: []
|
||||
# -- Redis arguments (overrides default)
|
||||
args: []
|
||||
# -- Redis resources
|
||||
resources: {}
|
||||
# -- Redis service
|
||||
service:
|
||||
# -- Redis container/target port
|
||||
containerPort: 6379
|
||||
# -- Redis service type
|
||||
type: ClusterIP
|
||||
# -- Redis service labels
|
||||
labels: {}
|
||||
# -- Redis service annotations
|
||||
annotations: {}
|
||||
# -- Redis service port
|
||||
port: 6379
|
||||
# -- Redis service node port. Valid only when type is `NodePort`
|
||||
nodePort: ""
|
||||
# -- Redis tolerations for pod assignment
|
||||
tolerations: []
|
||||
|
||||
# -- Redis affinity for pod assignment
|
||||
affinity: {}
|
||||
|
||||
# -- Redis security context
|
||||
securityContext:
|
||||
{}
|
||||
# runAsUser: 999
|
||||
# runAsGroup: 1000
|
||||
|
||||
# -- Deploys a Redis cluster with subchart 'redis' from bitnami
|
||||
redis-cluster:
|
||||
# -- Enable Redis installation
|
||||
enabled: false
|
||||
# -- Redis cluster name (recommended to be 'open-webui-redis')
|
||||
# - In this case, redis url will be 'redis://open-webui-redis-master:6379/0' or 'redis://[:<password>@]open-webui-redis-master:6379/0'
|
||||
fullnameOverride: open-webui-redis
|
||||
# -- Redis Authentication
|
||||
auth:
|
||||
# -- Enable Redis authentication (disabled by default). For your security, we strongly suggest that you switch to 'auth.enabled=true'
|
||||
enabled: false
|
||||
# -- Replica configuration for the Redis cluster
|
||||
replica:
|
||||
# -- Number of Redis replica instances
|
||||
replicaCount: 3
|
||||
|
||||
# -- Value of cluster domain
|
||||
clusterDomain: cluster.local
|
||||
|
||||
annotations: {}
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
replicaCount: 1
|
||||
# -- Strategy for updating the workload manager: deployment or statefulset
|
||||
strategy: {}
|
||||
# -- Open WebUI image tags can be found here: https://github.com/open-webui/open-webui
|
||||
image:
|
||||
repository: ghcr.io/open-webui/open-webui
|
||||
tag: ""
|
||||
pullPolicy: Always
|
||||
pullPolicy: "IfNotPresent"
|
||||
|
||||
serviceAccount:
|
||||
enable: true
|
||||
name: ""
|
||||
annotations: {}
|
||||
automountServiceAccountToken: false
|
||||
|
||||
# -- Configure imagePullSecrets to use private registry
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry>
|
||||
imagePullSecrets: []
|
||||
# imagePullSecrets:
|
||||
# - name: myRegistryKeySecretName
|
||||
|
||||
# -- Probe for liveness of the Open WebUI container
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes>
|
||||
livenessProbe: {}
|
||||
# livenessProbe:
|
||||
# httpGet:
|
||||
# path: /health
|
||||
# port: http
|
||||
# failureThreshold: 1
|
||||
# periodSeconds: 10
|
||||
|
||||
# -- Probe for readiness of the Open WebUI container
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes>
|
||||
readinessProbe: {}
|
||||
# readinessProbe:
|
||||
# httpGet:
|
||||
# path: /health/db
|
||||
# port: http
|
||||
# failureThreshold: 1
|
||||
# periodSeconds: 10
|
||||
|
||||
# -- Probe for startup of the Open WebUI container
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes>
|
||||
startupProbe: {}
|
||||
# startupProbe:
|
||||
# httpGet:
|
||||
# path: /health
|
||||
# port: http
|
||||
# initialDelaySeconds: 30
|
||||
# periodSeconds: 5
|
||||
# failureThreshold: 20
|
||||
|
||||
resources: {}
|
||||
|
||||
copyAppData:
|
||||
resources: {}
|
||||
|
||||
managedCertificate:
|
||||
enabled: false
|
||||
name: "mydomain-chat-cert" # You can override this name if needed
|
||||
domains:
|
||||
- chat.example.com # update to your real domain
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
class: ""
|
||||
# -- Use appropriate annotations for your Ingress controller, e.g., for NGINX:
|
||||
# nginx.ingress.kubernetes.io/rewrite-target: /
|
||||
# -- Use appropriate annotations for your Ingress controller, e.g., for NGINX:
|
||||
annotations: {}
|
||||
host: ""
|
||||
# # Example for GKE Ingress
|
||||
# kubernetes.io/ingress.class: "gce"
|
||||
# kubernetes.io/ingress.global-static-ip-name: "open-webui-external-ip" # you need to create this address in GCP console
|
||||
# # Force HTTP to redirect to HTTPS
|
||||
# nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
# nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||
# nginx.ingress.kubernetes.io/permanent-redirect: "https://chat.example.com"
|
||||
# networking.gke.io/managed-certificates: "mydomain-chat-cert"
|
||||
# # nginx.ingress.kubernetes.io/rewrite-target: /
|
||||
host: "chat.example.com" # update to your real domain
|
||||
additionalHosts: []
|
||||
tls: false
|
||||
existingSecret: ""
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 2Gi
|
||||
# -- Use existingClaim if you want to re-use an existing Open WebUI PVC instead of creating a new one
|
||||
existingClaim: ""
|
||||
# -- Subdirectory of Open WebUI PVC to mount. Useful if root directory is not empty.
|
||||
subPath: ""
|
||||
# -- If using multiple replicas, you must update accessModes to ReadWriteMany
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
- ReadWriteOnce
|
||||
storageClass: ""
|
||||
selector: {}
|
||||
annotations: {}
|
||||
@@ -59,6 +222,13 @@ tolerations: []
|
||||
# -- Affinity for pod assignment
|
||||
affinity: {}
|
||||
|
||||
# -- Topology Spread Constraints for pod assignment
|
||||
topologySpreadConstraints: []
|
||||
|
||||
# -- HostAliases to be added to hosts-file of each container
|
||||
hostAliases: []
|
||||
|
||||
# -- Service values to expose Open WebUI pods to cluster
|
||||
service:
|
||||
type: ClusterIP
|
||||
annotations: {}
|
||||
@@ -68,7 +238,95 @@ service:
|
||||
labels: {}
|
||||
loadBalancerClass: ""
|
||||
|
||||
# -- Additional environments variables on the output Deployment definition.
|
||||
extraEnvVars: []
|
||||
# - name: OLLAMA_DEBUG
|
||||
# value: "1"
|
||||
# -- Enables the use of OpenAI APIs
|
||||
enableOpenaiApi: true
|
||||
|
||||
# -- OpenAI base API URL to use. Defaults to the Pipelines service endpoint when Pipelines are enabled, and "https://api.openai.com/v1" if Pipelines are not enabled and this value is blank
|
||||
openaiBaseApiUrl: "https://api.openai.com/v1"
|
||||
|
||||
# -- OpenAI base API URLs to use. Overwrites the value in openaiBaseApiUrl if set
|
||||
openaiBaseApiUrls: []
|
||||
# - "https://api.openai.com/v1"
|
||||
# - "https://api.company.openai.com/v1"
|
||||
|
||||
# -- Env vars added to the Open WebUI deployment. Most up-to-date environment variables can be found here: https://docs.openwebui.com/getting-started/env-configuration/
|
||||
extraEnvVars:
|
||||
# -- Default API key value for Pipelines. Should be updated in a production deployment, or be changed to the required API key if not using Pipelines
|
||||
- name: OPENAI_API_KEY
|
||||
value: "0p3n-w3bu!"
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: pipelines-api-key
|
||||
# key: api-key
|
||||
# - name: OPENAI_API_KEY
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: openai-api-key
|
||||
# key: api-key
|
||||
# - name: OLLAMA_DEBUG
|
||||
# value: "1"
|
||||
|
||||
# -- Configure container volume mounts
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/>
|
||||
volumeMounts:
|
||||
initContainer: []
|
||||
# - name: ""
|
||||
# mountPath: ""
|
||||
container: []
|
||||
# - name: ""
|
||||
# mountPath: ""
|
||||
|
||||
# -- Additional init containers to add to the deployment/statefulset
|
||||
# ref: <https://kubernetes.io/docs/concepts/workloads/pods/init-containers/>
|
||||
extraInitContainers: []
|
||||
# - name: custom-init
|
||||
# image: busybox:latest
|
||||
# command: ['sh', '-c', 'echo "Custom init container running"']
|
||||
# volumeMounts:
|
||||
# - name: data
|
||||
# mountPath: /data
|
||||
|
||||
# -- Configure pod volumes
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/>
|
||||
volumes: []
|
||||
# - name: ""
|
||||
# configMap:
|
||||
# name: ""
|
||||
# - name: ""
|
||||
# emptyDir: {}
|
||||
|
||||
# -- Configure pod security context
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container>
|
||||
podSecurityContext:
|
||||
{}
|
||||
# fsGroupChangePolicy: Always
|
||||
# sysctls: []
|
||||
# supplementalGroups: []
|
||||
# fsGroup: 1001
|
||||
|
||||
|
||||
# -- Configure container security context
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-containe>
|
||||
containerSecurityContext:
|
||||
{}
|
||||
# runAsUser: 1001
|
||||
# runAsGroup: 1001
|
||||
# runAsNonRoot: true
|
||||
# privileged: false
|
||||
# allowPrivilegeEscalation: false
|
||||
# readOnlyRootFilesystem: false
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# seccompProfile:
|
||||
# type: "RuntimeDefault"
|
||||
|
||||
# -- Extra resources to deploy with Open WebUI
|
||||
extraResources:
|
||||
[]
|
||||
# - apiVersion: v1
|
||||
# kind: ConfigMap
|
||||
# metadata:
|
||||
# name: example-configmap
|
||||
# data:
|
||||
# example-key: example-value
|
||||
|
||||
24
charts/pipelines/.helmignore
Normal file
24
charts/pipelines/.helmignore
Normal file
@@ -0,0 +1,24 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
.drone.yml
|
||||
*.tmproj
|
||||
.vscode/
|
||||
20
charts/pipelines/Chart.yaml
Normal file
20
charts/pipelines/Chart.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
apiVersion: v2
|
||||
name: pipelines
|
||||
version: 0.5.0
|
||||
appVersion: "alpha"
|
||||
|
||||
home: https://github.com/open-webui/pipelines
|
||||
icon: https://github.com/open-webui/pipelines/raw/main/header.png
|
||||
|
||||
description: "Pipelines: UI-Agnostic OpenAI API Plugin Framework"
|
||||
keywords:
|
||||
- llm
|
||||
- chat
|
||||
- web-ui
|
||||
|
||||
sources:
|
||||
- https://github.com/open-webui/helm-charts
|
||||
- https://github.com/open-webui/pipelines/pkgs/container/pipelines
|
||||
|
||||
annotations:
|
||||
licenses: MIT
|
||||
81
charts/pipelines/README.md
Normal file
81
charts/pipelines/README.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# pipelines
|
||||
|
||||
 
|
||||
|
||||
Pipelines: UI-Agnostic OpenAI API Plugin Framework
|
||||
|
||||
**Homepage:** <https://github.com/open-webui/pipelines>
|
||||
|
||||
## Source Code
|
||||
|
||||
* <https://github.com/open-webui/helm-charts>
|
||||
* <https://github.com/open-webui/pipelines/pkgs/container/pipelines>
|
||||
|
||||
## Installing
|
||||
|
||||
Before you can install, you need to add the `open-webui` repo to [Helm](https://helm.sh)
|
||||
|
||||
```shell
|
||||
helm repo add open-webui https://helm.openwebui.com/
|
||||
helm repo update
|
||||
```
|
||||
|
||||
Now you can install the chart:
|
||||
|
||||
```shell
|
||||
helm upgrade --install open-webui open-webui/pipelines
|
||||
```
|
||||
|
||||
## Values
|
||||
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| affinity | object | `{}` | Affinity for pod assignment |
|
||||
| annotations | object | `{}` | |
|
||||
| clusterDomain | string | `"cluster.local"` | Value of cluster domain |
|
||||
| extraEnvVars | list | `[{"name":"PIPELINES_URLS","value":"https://github.com/open-webui/pipelines/blob/main/examples/filters/detoxify_filter_pipeline.py"}]` | Additional environments variables on the output Deployment definition. These are used to pull initial Pipeline files, and help configure Pipelines with required values (e.g. Langfuse API keys) |
|
||||
| extraEnvVars[0] | object | `{"name":"PIPELINES_URLS","value":"https://github.com/open-webui/pipelines/blob/main/examples/filters/detoxify_filter_pipeline.py"}` | Example pipeline to pull and load on deployment startup, see current pipelines here: https://github.com/open-webui/pipelines/blob/main/examples |
|
||||
| extraInitContainers | list | `[]` | Additional init containers to add to the deployment ref: <https://kubernetes.io/docs/concepts/workloads/pods/init-containers/> |
|
||||
| extraResources | list | `[]` | Extra resources to deploy with Open WebUI Pipelines |
|
||||
| hostAliases | list | `[]` | HostAliases to be added to hosts-file of each container |
|
||||
| image.pullPolicy | string | `"Always"` | |
|
||||
| image.repository | string | `"ghcr.io/open-webui/pipelines"` | |
|
||||
| image.tag | string | `"main"` | |
|
||||
| imagePullSecrets | list | `[]` | Configure imagePullSecrets to use private registry ref: <https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry> |
|
||||
| ingress.annotations | object | `{}` | Use appropriate annotations for your Ingress controller, e.g., for NGINX: nginx.ingress.kubernetes.io/rewrite-target: / |
|
||||
| ingress.class | string | `""` | |
|
||||
| ingress.enabled | bool | `true` | |
|
||||
| ingress.existingSecret | string | `""` | |
|
||||
| ingress.host | string | `""` | |
|
||||
| ingress.tls | bool | `false` | |
|
||||
| nameOverride | string | `""` | |
|
||||
| namespaceOverride | string | `""` | |
|
||||
| nodeSelector | object | `{}` | Node labels for pod assignment. |
|
||||
| persistence.accessModes | list | `["ReadWriteOnce"]` | If using multiple replicas, you must update accessModes to ReadWriteMany |
|
||||
| persistence.annotations | object | `{}` | |
|
||||
| persistence.enabled | bool | `true` | |
|
||||
| persistence.existingClaim | string | `""` | |
|
||||
| persistence.selector | object | `{}` | |
|
||||
| persistence.size | string | `"2Gi"` | |
|
||||
| persistence.storageClass | string | `""` | |
|
||||
| podAnnotations | object | `{}` | |
|
||||
| podLabels | object | `{}` | |
|
||||
| replicaCount | int | `1` | |
|
||||
| resources | object | `{}` | |
|
||||
| service.annotations | object | `{}` | |
|
||||
| service.containerPort | int | `9099` | |
|
||||
| service.labels | object | `{}` | |
|
||||
| service.loadBalancerClass | string | `""` | |
|
||||
| service.nodePort | string | `""` | |
|
||||
| service.port | int | `9099` | |
|
||||
| service.type | string | `"ClusterIP"` | |
|
||||
| serviceAccount.automountServiceAccountToken | bool | `false` | |
|
||||
| serviceAccount.enable | bool | `true` | |
|
||||
| strategy | object | `{}` | Strategy for updating the deployment |
|
||||
| tolerations | list | `[]` | Tolerations for pod assignment |
|
||||
| volumeMounts | list | `[]` | Configure container volume mounts ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/> |
|
||||
| volumes | list | `[]` | Configure pod volumes ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/> |
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/).
|
||||
36
charts/pipelines/README.md.gotmpl
Normal file
36
charts/pipelines/README.md.gotmpl
Normal file
@@ -0,0 +1,36 @@
|
||||
{{ template "chart.header" . }}
|
||||
|
||||
{{ template "chart.deprecationWarning" . }}
|
||||
|
||||
{{ template "chart.badgesSection" . }}
|
||||
|
||||
{{ template "chart.description" . }}
|
||||
|
||||
{{ template "chart.homepageLine" . }}
|
||||
|
||||
{{ template "chart.maintainersSection" . }}
|
||||
|
||||
{{ template "chart.sourcesSection" . }}
|
||||
|
||||
## Installing
|
||||
|
||||
Before you can install, you need to add the `open-webui` repo to [Helm](https://helm.sh)
|
||||
|
||||
```shell
|
||||
helm repo add open-webui https://helm.openwebui.com/
|
||||
helm repo update
|
||||
```
|
||||
|
||||
Now you can install the chart:
|
||||
|
||||
```shell
|
||||
helm upgrade --install open-webui open-webui/pipelines
|
||||
```
|
||||
|
||||
{{ template "chart.requirementsSection" . }}
|
||||
|
||||
{{ template "chart.valuesSection" . }}
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs/).
|
||||
65
charts/pipelines/templates/_helpers.tpl
Normal file
65
charts/pipelines/templates/_helpers.tpl
Normal file
@@ -0,0 +1,65 @@
|
||||
{{/*
|
||||
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
|
||||
*/}}
|
||||
{{- define "pipelines.namespace" -}}
|
||||
{{- if .Values.namespaceOverride -}}
|
||||
{{- .Values.namespaceOverride -}}
|
||||
{{- else -}}
|
||||
{{- .Release.Namespace -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Set the name of the Pipelines resources
|
||||
*/}}
|
||||
{{- define "pipelines.name" -}}
|
||||
{{- default .Release.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the chart name and version for the chart label
|
||||
*/}}
|
||||
{{- define "chart.name" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the base labels to include on chart resources
|
||||
*/}}
|
||||
{{- define "base.labels" -}}
|
||||
helm.sh/chart: {{ include "chart.name" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create selector labels to include on all resources
|
||||
*/}}
|
||||
{{- define "base.selectorLabels" -}}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create selector labels to include on all Pipelines resources
|
||||
*/}}
|
||||
{{- define "pipelines.selectorLabels" -}}
|
||||
{{ include "base.selectorLabels" . }}
|
||||
app.kubernetes.io/component: {{ .Chart.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create labels to include on all Pipelines resources
|
||||
*/}}
|
||||
{{- define "pipelines.labels" -}}
|
||||
{{ include "base.labels" . }}
|
||||
{{ include "pipelines.selectorLabels" . }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the default port to use on the service if none is defined in values
|
||||
*/}}
|
||||
{{- define "pipelines.servicePort" -}}
|
||||
{{- .Values.service.port | default 9099 }}
|
||||
{{- end }}
|
||||
@@ -1,9 +1,10 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "open-webui.name" . }}
|
||||
name: {{ include "pipelines.name" . }}
|
||||
namespace: {{ include "pipelines.namespace" . }}
|
||||
labels:
|
||||
{{- include "open-webui.labels" . | nindent 4 }}
|
||||
{{- include "pipelines.labels" . | nindent 4 }}
|
||||
{{- with .Values.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
@@ -12,18 +13,36 @@ spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "open-webui.selectorLabels" . | nindent 6 }}
|
||||
{{- include "pipelines.selectorLabels" . | nindent 6 }}
|
||||
{{- with .Values.strategy }}
|
||||
strategy:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "open-webui.labels" . | nindent 8 }}
|
||||
{{- include "pipelines.labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.extraInitContainers }}
|
||||
initContainers:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: false
|
||||
automountServiceAccountToken: false
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken | default false }}
|
||||
{{- if .Values.serviceAccount.enable }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.name | default (include "pipelines.name" .) }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{- with .Values.image }}
|
||||
@@ -38,15 +57,13 @@ spec:
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /app/backend/data
|
||||
env:
|
||||
- name: OLLAMA_BASE_URLS
|
||||
value: {{ include "ollamaBaseUrls" . | quote }}
|
||||
{{- with .Values.extraEnvVars }}
|
||||
{{- range . }}
|
||||
- name: {{ .name }}
|
||||
value: {{ .value | quote }}
|
||||
mountPath: /app/pipelines
|
||||
{{- with .Values.volumeMounts }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
env:
|
||||
{{- if .Values.extraEnvVars }}
|
||||
{{- toYaml .Values.extraEnvVars | nindent 8 }}
|
||||
{{- end }}
|
||||
tty: true
|
||||
{{- with .Values.nodeSelector }}
|
||||
@@ -61,6 +78,10 @@ spec:
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
{{- if and .Values.persistence.enabled .Values.persistence.existingClaim }}
|
||||
- name: data
|
||||
@@ -72,5 +93,8 @@ spec:
|
||||
{{- else if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ include "open-webui.name" . }}
|
||||
{{- end }}
|
||||
claimName: {{ include "pipelines.name" . }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumes }}
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
6
charts/pipelines/templates/extra-resources.yaml
Normal file
6
charts/pipelines/templates/extra-resources.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
{{- if .Values.extraResources }}
|
||||
{{- range .Values.extraResources }}
|
||||
---
|
||||
{{ toYaml . | nindent 0 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
28
charts/pipelines/templates/pvc.yaml
Normal file
28
charts/pipelines/templates/pvc.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ include "pipelines.name" . }}
|
||||
namespace: {{ include "pipelines.namespace" . }}
|
||||
labels:
|
||||
{{- include "pipelines.selectorLabels" . | nindent 4 }}
|
||||
{{- with .Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
{{- range .Values.persistence.accessModes }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.persistence.size }}
|
||||
{{- if .Values.persistence.storageClass }}
|
||||
storageClassName: {{ .Values.persistence.storageClass }}
|
||||
{{- end }}
|
||||
{{- with .Values.persistence.selector }}
|
||||
selector:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
13
charts/pipelines/templates/service-account.yaml
Normal file
13
charts/pipelines/templates/service-account.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
{{- if .Values.serviceAccount.enable }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.name | default (include "pipelines.name" .) }}
|
||||
namespace: {{ include "pipelines.namespace" . }}
|
||||
labels:
|
||||
{{- include "pipelines.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
30
charts/pipelines/templates/service.yaml
Normal file
30
charts/pipelines/templates/service.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "pipelines.name" . }}
|
||||
namespace: {{ include "pipelines.namespace" . }}
|
||||
labels:
|
||||
{{- include "pipelines.labels" . | nindent 4 }}
|
||||
{{- with .Values.service.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
{{- include "pipelines.selectorLabels" . | nindent 4 }}
|
||||
type: {{ .Values.service.type | default "ClusterIP" }}
|
||||
ports:
|
||||
- protocol: TCP
|
||||
name: http
|
||||
port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
{{- if .Values.service.nodePort }}
|
||||
nodePort: {{ .Values.service.nodePort | int }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.loadBalancerClass }}
|
||||
loadBalancerClass: {{ .Values.service.loadBalancerClass | quote }}
|
||||
{{- end }}
|
||||
|
||||
132
charts/pipelines/values.yaml
Normal file
132
charts/pipelines/values.yaml
Normal file
@@ -0,0 +1,132 @@
|
||||
nameOverride: ""
|
||||
namespaceOverride: ""
|
||||
|
||||
# -- Value of cluster domain
|
||||
clusterDomain: cluster.local
|
||||
|
||||
annotations: {}
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
replicaCount: 1
|
||||
# -- Strategy for updating the deployment
|
||||
strategy: {}
|
||||
image:
|
||||
repository: ghcr.io/open-webui/pipelines
|
||||
tag: main
|
||||
pullPolicy: Always
|
||||
|
||||
# -- Configure imagePullSecrets to use private registry
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry>
|
||||
imagePullSecrets: []
|
||||
# imagePullSecrets:
|
||||
# - name: myRegistryKeySecretName
|
||||
|
||||
resources: {}
|
||||
ingress:
|
||||
enabled: true
|
||||
class: ""
|
||||
# -- Use appropriate annotations for your Ingress controller, e.g., for NGINX:
|
||||
# nginx.ingress.kubernetes.io/rewrite-target: /
|
||||
annotations: {}
|
||||
host: ""
|
||||
tls: false
|
||||
existingSecret: ""
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 2Gi
|
||||
existingClaim: ""
|
||||
# -- If using multiple replicas, you must update accessModes to ReadWriteMany
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
storageClass: ""
|
||||
selector: {}
|
||||
annotations: {}
|
||||
|
||||
serviceAccount:
|
||||
enable: true
|
||||
automountServiceAccountToken: false
|
||||
|
||||
# -- Node labels for pod assignment.
|
||||
nodeSelector: {}
|
||||
|
||||
# -- Tolerations for pod assignment
|
||||
tolerations: []
|
||||
|
||||
# -- Affinity for pod assignment
|
||||
affinity: {}
|
||||
|
||||
# -- HostAliases to be added to hosts-file of each container
|
||||
hostAliases: []
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
annotations: {}
|
||||
port: 9099
|
||||
containerPort: 9099
|
||||
nodePort: ""
|
||||
labels: {}
|
||||
loadBalancerClass: ""
|
||||
|
||||
# -- Additional environments variables on the output Deployment definition. These are used to pull initial Pipeline files, and help configure Pipelines with required values (e.g. Langfuse API keys)
|
||||
extraEnvVars:
|
||||
# -- Example pipeline to pull and load on deployment startup, see current pipelines here: https://github.com/open-webui/pipelines/blob/main/examples
|
||||
- name: PIPELINES_URLS
|
||||
value: "https://github.com/open-webui/pipelines/blob/main/examples/filters/detoxify_filter_pipeline.py"
|
||||
# - name: PIPELINES_API_KEY
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: pipelines-keys
|
||||
# key: pipelines-api-key
|
||||
# -- Langfuse example, including values used in Langfuse filter to connect
|
||||
# - name: PIPELINES_URLS
|
||||
# value: "https://github.com/open-webui/pipelines/blob/main/examples/filters/langfuse_filter_pipeline.py"
|
||||
# - name: LANGFUSE_PUBLIC_KEY
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: langfuse-keys
|
||||
# key: public-key
|
||||
# - name: LANGFUSE_SECRET_KEY
|
||||
# valueFrom:
|
||||
# secretKeyRef:
|
||||
# name: langfuse-keys
|
||||
# key: secret-key
|
||||
# - name: LANGFUSE_HOST
|
||||
# value: https://us.cloud.langfuse.com
|
||||
|
||||
# -- Configure container volume mounts
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/>
|
||||
volumeMounts: []
|
||||
# - name: ""
|
||||
# mountPath: ""
|
||||
|
||||
# -- Additional init containers to add to the deployment
|
||||
# ref: <https://kubernetes.io/docs/concepts/workloads/pods/init-containers/>
|
||||
extraInitContainers: []
|
||||
# - name: custom-init
|
||||
# image: busybox:latest
|
||||
# command: ['sh', '-c', 'echo "Custom init container running"']
|
||||
# volumeMounts:
|
||||
# - name: data
|
||||
# mountPath: /data
|
||||
|
||||
# -- Configure pod volumes
|
||||
# ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/>
|
||||
volumes: []
|
||||
# - name: ""
|
||||
# configMap:
|
||||
# name: ""
|
||||
# - name: ""
|
||||
# secret:
|
||||
# name: ""
|
||||
# - name: ""
|
||||
# emptyDir: {}
|
||||
|
||||
# -- Extra resources to deploy with Open WebUI Pipelines
|
||||
extraResources:
|
||||
[]
|
||||
# - apiVersion: v1
|
||||
# kind: ConfigMap
|
||||
# metadata:
|
||||
# name: example-configmap
|
||||
# data:
|
||||
# example-key: example-value
|
||||
7
package.json
Normal file
7
package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"@semantic-release/github": "^9.0.3",
|
||||
"semantic-release": "^21.0.5",
|
||||
"semantic-release-helm": "^2.2.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user