apiVersion: apps/v1 kind: Deployment metadata: name: openwebui namespace: default spec: replicas: 1 selector: matchLabels: app: openwebui strategy: type: Recreate template: metadata: labels: app: openwebui spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: kubernetes.io/hostname operator: In values: - iris weight: 100 containers: - env: - name: PUID value: '1000' - name: PGID value: '1000' - name: TZ value: America/Sao_Paulo - name: DATABASE_URL valueFrom: secretKeyRef: key: DATABASE_URL name: openwebui-secret - name: PLAYWRIGHT_WS_URL value: ws://browserless.default.svc.cluster.local:3000 image: ghcr.io/open-webui/open-webui:main-slim imagePullPolicy: Always name: openwebui ports: - containerPort: 8080 protocol: TCP resources: limits: cpu: '1' memory: 2Gi requests: cpu: 250m memory: 512Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /app/backend/data name: openwebui-data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: openwebui-data persistentVolumeClaim: claimName: openwebui-data apiVersion: v1 kind: Service metadata: name: openwebui namespace: default spec: internalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: openwebui sessionAffinity: None type: ClusterIP apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: openwebui namespace: default spec: ingressClassName: nginx rules: - host: openwebui.haven http: paths: - backend: service: name: openwebui port: number: 8080 path: / pathType: Prefix apiVersion: v1 kind: PersistentVolumeClaim metadata: name: openwebui-data namespace: default spec: accessModes: - ReadWriteOnce resources: limits: storage: 10Gi requests: storage: 5Gi storageClassName: nfs-client volumeMode: Filesystem