Merge pull request #2 from braveokafor/helm-node-selectors

Added nodeSelectors for allocating GPU nodePools in the cloud and configured volumes for WebUI
This commit is contained in:
Daniele Viti 2023-12-28 20:23:00 +01:00 committed by GitHub
commit d8aa169748
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 13 deletions

View file

@ -4,6 +4,7 @@ metadata:
name: ollama-service name: ollama-service
namespace: {{ .Values.namespace }} namespace: {{ .Values.namespace }}
spec: spec:
type: {{ .Values.ollama.service.type }}
selector: selector:
app: ollama app: ollama
ports: ports:

View file

@ -19,15 +19,32 @@ spec:
image: {{ .Values.ollama.image }} image: {{ .Values.ollama.image }}
ports: ports:
- containerPort: {{ .Values.ollama.servicePort }} - containerPort: {{ .Values.ollama.servicePort }}
resources: env:
limits: {{- if .Values.ollama.gpu.enabled }}
cpu: {{ .Values.ollama.resources.limits.cpu }} - name: PATH
memory: {{ .Values.ollama.resources.limits.memory }} value: /usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
nvidia.com/gpu: {{ .Values.ollama.resources.limits.gpu }} - name: LD_LIBRARY_PATH
value: /usr/local/nvidia/lib:/usr/local/nvidia/lib64
- name: NVIDIA_DRIVER_CAPABILITIES
value: compute,utility
{{- end}}
{{- if .Values.ollama.resources }}
resources: {{- toYaml .Values.ollama.resources | nindent 10 }}
{{- end }}
volumeMounts: volumeMounts:
- name: ollama-volume - name: ollama-volume
mountPath: /root/.ollama mountPath: /root/.ollama
tty: true tty: true
{{- with .Values.ollama.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
tolerations:
{{- if .Values.ollama.gpu.enabled }}
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule
{{- end }}
volumeClaimTemplates: volumeClaimTemplates:
- metadata: - metadata:
name: ollama-volume name: ollama-volume
@ -35,4 +52,4 @@ spec:
accessModes: [ "ReadWriteOnce" ] accessModes: [ "ReadWriteOnce" ]
resources: resources:
requests: requests:
storage: 1Gi storage: {{ .Values.ollama.volumeSize }}

View file

@ -15,14 +15,24 @@ spec:
spec: spec:
containers: containers:
- name: ollama-webui - name: ollama-webui
image: ghcr.io/ollama-webui/ollama-webui:main image: {{ .Values.webui.image }}
ports: ports:
- containerPort: 8080 - containerPort: 8080
resources: {{- if .Values.webui.resources }}
limits: resources: {{- toYaml .Values.webui.resources | nindent 10 }}
cpu: "500m" {{- end }}
memory: "500Mi" volumeMounts:
- name: webui-volume
mountPath: /app/backend/data
env: env:
- name: OLLAMA_API_BASE_URL - name: OLLAMA_API_BASE_URL
value: "http://ollama-service.{{ .Values.namespace }}.svc.cluster.local:{{ .Values.ollama.servicePort }}/api" value: "http://ollama-service.{{ .Values.namespace }}.svc.cluster.local:{{ .Values.ollama.servicePort }}/api"
tty: true tty: true
{{- with .Values.webui.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
volumes:
- name: webui-volume
persistentVolumeClaim:
claimName: ollama-webui-pvc

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app: ollama-webui
name: ollama-webui-pvc
namespace: {{ .Values.namespace }}
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: {{ .Values.webui.volumeSize }}

View file

@ -4,7 +4,7 @@ metadata:
name: ollama-webui-service name: ollama-webui-service
namespace: {{ .Values.namespace }} namespace: {{ .Values.namespace }}
spec: spec:
type: NodePort # Use LoadBalancer if you're on a cloud that supports it type: {{ .Values.webui.service.type }} # Default: NodePort # Use LoadBalancer if you're on a cloud that supports it
selector: selector:
app: ollama-webui app: ollama-webui
ports: ports:

View file

@ -10,6 +10,12 @@ ollama:
memory: "2Gi" memory: "2Gi"
nvidia.com/gpu: "0" nvidia.com/gpu: "0"
volumeSize: 1Gi volumeSize: 1Gi
nodeSelector: {}
tolerations: []
service:
type: ClusterIP
gpu:
enabled: false
webui: webui:
replicaCount: 1 replicaCount: 1
@ -25,3 +31,8 @@ webui:
# Use appropriate annotations for your Ingress controller, e.g., for NGINX: # Use appropriate annotations for your Ingress controller, e.g., for NGINX:
# nginx.ingress.kubernetes.io/rewrite-target: / # nginx.ingress.kubernetes.io/rewrite-target: /
host: ollama.minikube.local host: ollama.minikube.local
volumeSize: 1Gi
nodeSelector: {}
tolerations: []
service:
type: NodePort