Merge pull request #88 from MealCraft/feature/deploy_chaptgpt
Feature/deploy chaptgpt
This commit is contained in:
commit
de2ea14ddb
7 changed files with 156 additions and 10 deletions
35
ollama/ollama.yaml
Normal file
35
ollama/ollama.yaml
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: dev-juntekim-service
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 11434
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: dev-juntekim-service
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.0.96 # ollama machine
|
||||||
|
ports:
|
||||||
|
- port: 11434
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: dev-juntekim-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`ollama.juntekim.com`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: dev-juntekim-service
|
||||||
|
port: 80
|
||||||
|
tls:
|
||||||
|
certResolver: myresolver
|
||||||
49
open-webui/open-webui-deployment.yml
Normal file
49
open-webui/open-webui-deployment.yml
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: open-webui
|
||||||
|
namespace: default
|
||||||
|
labels:
|
||||||
|
app: open-webui
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: open-webui
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: open-webui
|
||||||
|
spec:
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/hostname: mist
|
||||||
|
containers:
|
||||||
|
- name: open-webui
|
||||||
|
image: ghcr.io/open-webui/open-webui:main
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
env:
|
||||||
|
- name: OLLAMA_BASE_URL
|
||||||
|
value: "https://ollama.juntekim.com"
|
||||||
|
- name: ENABLE_SIGNUP
|
||||||
|
value: "true"
|
||||||
|
- name: DEFAULT_MODELS
|
||||||
|
value: ""
|
||||||
|
- name: DEFAULT_USER_ROLE
|
||||||
|
value: "user"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: "512Mi"
|
||||||
|
cpu: "250m"
|
||||||
|
limits:
|
||||||
|
memory: "2Gi"
|
||||||
|
cpu: "1000m"
|
||||||
|
volumeMounts:
|
||||||
|
- name: open-webui-data
|
||||||
|
mountPath: /app/backend/data
|
||||||
|
volumes:
|
||||||
|
- name: open-webui-data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: open-webui-data-pvc
|
||||||
19
open-webui/open-webui-ingressroute.yml
Normal file
19
open-webui/open-webui-ingressroute.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: open-webui
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`chatgpt.juntekim.com`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: open-webui
|
||||||
|
port: 80
|
||||||
|
tls:
|
||||||
|
certResolver: myresolver
|
||||||
|
domains:
|
||||||
|
- main: chatgpt.juntekim.com
|
||||||
22
open-webui/open-webui-pv.yml
Normal file
22
open-webui/open-webui-pv.yml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: open-webui-data-pv
|
||||||
|
spec:
|
||||||
|
capacity:
|
||||||
|
storage: 2Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: local-path
|
||||||
|
local:
|
||||||
|
path: /home/kimjunte/open-ai
|
||||||
|
nodeAffinity:
|
||||||
|
required:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: kubernetes.io/hostname
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- mist
|
||||||
13
open-webui/open-webui-pvc.yml
Normal file
13
open-webui/open-webui-pvc.yml
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: open-webui-data-pvc
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 2Gi
|
||||||
|
storageClassName: local-path
|
||||||
15
open-webui/open-webui-service.yml
Normal file
15
open-webui/open-webui-service.yml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: open-webui
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8080
|
||||||
|
selector:
|
||||||
|
app: open-webui
|
||||||
|
|
@ -14,6 +14,8 @@ spec:
|
||||||
app: traefik
|
app: traefik
|
||||||
spec:
|
spec:
|
||||||
serviceAccountName: traefik-ingress-controller
|
serviceAccountName: traefik-ingress-controller
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/hostname: mist
|
||||||
volumes:
|
volumes:
|
||||||
- name: acme
|
- name: acme
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
|
|
@ -36,24 +38,15 @@ spec:
|
||||||
- "--api.insecure=true"
|
- "--api.insecure=true"
|
||||||
- "--entrypoints.web.address=:80"
|
- "--entrypoints.web.address=:80"
|
||||||
- "--entrypoints.websecure.address=:443"
|
- "--entrypoints.websecure.address=:443"
|
||||||
|
|
||||||
# Redirect HTTP → HTTPS
|
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
|
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
|
||||||
|
|
||||||
# Providers
|
|
||||||
- "--providers.kubernetescrd=true"
|
- "--providers.kubernetescrd=true"
|
||||||
- "--providers.kubernetescrd.allowCrossNamespace=true"
|
- "--providers.kubernetescrd.allowCrossNamespace=true"
|
||||||
|
|
||||||
|
|
||||||
# TLS + ACME
|
|
||||||
- "--certificatesresolvers.myresolver.acme.email=junte.kim@mealcraft.com"
|
- "--certificatesresolvers.myresolver.acme.email=junte.kim@mealcraft.com"
|
||||||
- "--certificatesresolvers.myresolver.acme.storage=/acme/acme.json"
|
- "--certificatesresolvers.myresolver.acme.storage=/acme/acme.json"
|
||||||
- "--certificatesresolvers.myresolver.acme.dnschallenge.provider=route53"
|
- "--certificatesresolvers.myresolver.acme.dnschallenge.provider=route53"
|
||||||
|
|
||||||
# STAGING (uncomment for first-time)
|
# STAGING (uncomment for first-time)
|
||||||
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
|
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- name: AWS_REGION
|
- name: AWS_REGION
|
||||||
valueFrom:
|
valueFrom:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue