Merge pull request #88 from MealCraft/feature/deploy_chaptgpt

Feature/deploy chaptgpt
This commit is contained in:
Jun-te Kim 2026-03-07 15:47:59 +00:00 committed by GitHub
commit de2ea14ddb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 156 additions and 10 deletions

35
ollama/ollama.yaml Normal file
View 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

View 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

View 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

View 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

View 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

View 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

View file

@ -14,6 +14,8 @@ spec:
app: traefik
spec:
serviceAccountName: traefik-ingress-controller
nodeSelector:
kubernetes.io/hostname: mist
volumes:
- name: acme
persistentVolumeClaim:
@ -36,24 +38,15 @@ spec:
- "--api.insecure=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
# Redirect HTTP → HTTPS
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
# Providers
- "--providers.kubernetescrd=true"
- "--providers.kubernetescrd.allowCrossNamespace=true"
# TLS + ACME
- "--certificatesresolvers.myresolver.acme.email=junte.kim@mealcraft.com"
- "--certificatesresolvers.myresolver.acme.storage=/acme/acme.json"
- "--certificatesresolvers.myresolver.acme.dnschallenge.provider=route53"
# STAGING (uncomment for first-time)
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
env:
- name: AWS_REGION
valueFrom:
@ -69,4 +62,4 @@ spec:
valueFrom:
secretKeyRef:
name: aws-secrets
key: AWS_SECRET_ACCESS_KEY
key: AWS_SECRET_ACCESS_KEY