From 83bafc5e35678079acc9cbabf789a1151b171859 Mon Sep 17 00:00:00 2001 From: Conan Scott Date: Mon, 29 Dec 2025 20:26:48 +1100 Subject: [PATCH] first commit --- Chart.yaml | 28 ++ LICENSE | 21 ++ README.md | 295 ++++++++++++++++++++ artifacthub-repo.yml | 15 + banner.png | Bin 0 -> 134943 bytes templates/NOTES.txt | 25 ++ templates/_helpers.tpl | 91 ++++++ templates/deployment.yaml | 213 ++++++++++++++ templates/hpa.yaml | 34 +++ templates/ingress.yaml | 63 +++++ templates/knative/service.yaml | 156 +++++++++++ templates/pvc.yaml | 35 +++ templates/service.yaml | 29 ++ templates/serviceaccount.yaml | 15 + templates/tests/test-connection.yaml | 17 ++ values-test.yaml | 311 +++++++++++++++++++++ values.yaml | 401 +++++++++++++++++++++++++++ 17 files changed, 1749 insertions(+) create mode 100644 Chart.yaml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 artifacthub-repo.yml create mode 100644 banner.png create mode 100644 templates/NOTES.txt create mode 100644 templates/_helpers.tpl create mode 100644 templates/deployment.yaml create mode 100644 templates/hpa.yaml create mode 100644 templates/ingress.yaml create mode 100644 templates/knative/service.yaml create mode 100644 templates/pvc.yaml create mode 100644 templates/service.yaml create mode 100644 templates/serviceaccount.yaml create mode 100644 templates/tests/test-connection.yaml create mode 100644 values-test.yaml create mode 100644 values.yaml diff --git a/Chart.yaml b/Chart.yaml new file mode 100644 index 0000000..6f8f1bb --- /dev/null +++ b/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + artifacthub.io/category: ai-machine-learning + artifacthub.io/changes: | + - kind: changed + description: upgrade app version to 0.5.7 + links: + - name: Ollama release v0.5.7 + url: https://github.com/ollama/ollama/releases/tag/v0.5.7 +apiVersion: v2 +appVersion: 0.5.7 +description: Get up and running with large language models locally. +home: https://ollama.ai/ +icon: https://ollama.ai/public/ollama.png +keywords: +- ai +- llm +- llama +- mistral +kubeVersion: ^1.16.0-0 +maintainers: +- email: contact@otwld.com + name: OTWLD +name: ollama +sources: +- https://github.com/ollama/ollama +- https://github.com/otwld/ollama-helm +type: application +version: 1.4.0 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..01a4c80 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 OTWLD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..b6e744d --- /dev/null +++ b/README.md @@ -0,0 +1,295 @@ +![otwld ollama helm chart banner](./banner.png) + +![GitHub License](https://img.shields.io/github/license/otwld/ollama-helm) +[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/ollama-helm)](https://artifacthub.io/packages/helm/ollama-helm/ollama) +[![Build Status](https://drone.otwld.com/api/badges/otwld/ollama-helm/status.svg)](https://drone.otwld.com/otwld/ollama-helm) +[![Discord](https://img.shields.io/badge/Discord-OTWLD-blue?logo=discord&logoColor=white)](https://discord.gg/U24mpqTynB) + +[Ollama](https://ollama.ai/), get up and running with large language models, locally. + +This Community Chart is for deploying [Ollama](https://github.com/ollama/ollama). + +## Requirements + +- Kubernetes: `>= 1.16.0-0` for **CPU only** + +- Kubernetes: `>= 1.26.0-0` for **GPU** stable support (NVIDIA and AMD) + +*Not all GPUs are currently supported with ollama (especially with AMD)* + +## Deploying Ollama chart + +To install the `ollama` chart in the `ollama` namespace: + +```console +helm repo add ollama-helm https://otwld.github.io/ollama-helm/ +helm repo update +helm install ollama ollama-helm/ollama --namespace ollama +``` + +## Upgrading Ollama chart + +First please read the [release notes](https://github.com/ollama/ollama/releases) of Ollama to make sure there are no +backwards incompatible changes. + +Make adjustments to your values as needed, then run `helm upgrade`: + +```console +# -- This pulls the latest version of the ollama chart from the repo. +helm repo update +helm upgrade ollama ollama-helm/ollama --namespace ollama --values values.yaml +``` + +## Uninstalling Ollama chart + +To uninstall/delete the `ollama` deployment in the `ollama` namespace: + +```console +helm delete ollama --namespace ollama +``` + +Substitute your values if they differ from the examples. See `helm delete --help` for a full reference on `delete` +parameters and flags. + +## Interact with Ollama + +- **Ollama documentation can be found [HERE](https://github.com/ollama/ollama/tree/main/docs)** +- Interact with RESTful API: [Ollama API](https://github.com/ollama/ollama/blob/main/docs/api.md) +- Interact with official clients libraries: [ollama-js](https://github.com/ollama/ollama-js#custom-client) + and [ollama-python](https://github.com/ollama/ollama-python#custom-client) +- Interact with langchain: [langchain-js](https://github.com/ollama/ollama/blob/main/docs/tutorials/langchainjs.md) + and [langchain-python](https://github.com/ollama/ollama/blob/main/docs/tutorials/langchainpy.md) + +## Examples + +- **It's highly recommended to run an updated version of Kubernetes for deploying ollama with GPU** + +### Basic values.yaml example with GPU and two models pulled at startup + +``` +ollama: + gpu: + # -- Enable GPU integration + enabled: true + + # -- GPU type: 'nvidia' or 'amd' + type: 'nvidia' + + # -- Specify the number of GPU to 1 + number: 1 + + # -- List of models to pull at container startup + models: + pull: + - mistral + - llama2 +``` + +--- + +### Basic values.yaml example with Ingress + +``` +ollama: + models: + pull: + - llama2 + +ingress: + enabled: true + hosts: + - host: ollama.domain.lan + paths: + - path: / + pathType: Prefix +``` + +- *API is now reachable at `ollama.domain.lan`* + +## Upgrading from 0.X.X to 1.X.X + +The version 1.X.X introduces the ability to load models in memory at startup, the values have been changed. + +Please change `ollama.models` to `ollama.models.pull` to avoid errors before upgrading: + +```yaml +ollama: + models: + - mistral + - llama2 +``` + +To: + +```yaml +ollama: + models: + pull: + - mistral + - llama2 +``` + +## Helm Values + +- See [values.yaml](values.yaml) to see the Chart's default values. + +| Key | Type | Default | Description | +|--------------------------------------------|--------|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| affinity | object | `{}` | Affinity for pod assignment | +| autoscaling.enabled | bool | `false` | Enable autoscaling | +| autoscaling.maxReplicas | int | `100` | Number of maximum replicas | +| autoscaling.minReplicas | int | `1` | Number of minimum replicas | +| autoscaling.targetCPUUtilizationPercentage | int | `80` | CPU usage to target replica | +| extraArgs | list | `[]` | Additional arguments on the output Deployment definition. | +| extraEnv | list | `[]` | Additional environments variables on the output Deployment definition. For extra OLLAMA env, please refer to https://github.com/ollama/ollama/blob/main/envconfig/config.go | +| extraEnvFrom | list | `[]` | Additionl environment variables from external sources (like ConfigMap) | +| fullnameOverride | string | `""` | String to fully override template | +| hostIPC | bool | `false` | Use the host’s ipc namespace. | +| hostNetwork | bool | `false` | Use the host's network namespace. | +| hostPID | bool | `false` | Use the host’s pid namespace | +| image.pullPolicy | string | `"IfNotPresent"` | Docker pull policy | +| image.repository | string | `"ollama/ollama"` | Docker image registry | +| image.tag | string | `""` | Docker image tag, overrides the image tag whose default is the chart appVersion. | +| imagePullSecrets | list | `[]` | Docker registry secret names as an array | +| ingress.annotations | object | `{}` | Additional annotations for the Ingress resource. | +| ingress.className | string | `""` | IngressClass that will be used to implement the Ingress (Kubernetes 1.18+) | +| ingress.enabled | bool | `false` | Enable ingress controller resource | +| ingress.hosts[0].host | string | `"ollama.local"` | | +| ingress.hosts[0].paths[0].path | string | `"/"` | | +| ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | +| ingress.tls | list | `[]` | The tls configuration for hostnames to be covered with this ingress record. | +| initContainers | list | `[]` | Init containers to add to the pod | +| knative.containerConcurrency | int | `0` | Knative service container concurrency | +| knative.enabled | bool | `false` | Enable Knative integration | +| knative.idleTimeoutSeconds | int | `300` | Knative service idle timeout seconds | +| knative.responseStartTimeoutSeconds | int | `300` | Knative service response start timeout seconds | +| knative.timeoutSeconds | int | `300` | Knative service timeout seconds | +| lifecycle | object | `{}` | Lifecycle for pod assignment (override ollama.models startup pulling) | +| livenessProbe.enabled | bool | `true` | Enable livenessProbe | +| livenessProbe.failureThreshold | int | `6` | Failure threshold for livenessProbe | +| livenessProbe.initialDelaySeconds | int | `60` | Initial delay seconds for livenessProbe | +| livenessProbe.path | string | `"/"` | Request path for livenessProbe | +| livenessProbe.periodSeconds | int | `10` | Period seconds for livenessProbe | +| livenessProbe.successThreshold | int | `1` | Success threshold for livenessProbe | +| livenessProbe.timeoutSeconds | int | `5` | Timeout seconds for livenessProbe | +| nameOverride | string | `""` | String to partially override template (will maintain the release name) | +| namespaceOverride | string | `""` | String to override the namespace | +| nodeSelector | object | `{}` | Node labels for pod assignment. | +| ollama.gpu.enabled | bool | `false` | Enable GPU integration | +| ollama.gpu.mig.devices | object | `{}` | Specify the mig devices and the corresponding number | +| ollama.gpu.mig.enabled | bool | `false` | Enable multiple mig devices If enabled you will have to specify the mig devices If enabled is set to false this section is ignored | +| ollama.gpu.number | int | `1` | Specify the number of GPU If you use MIG section below then this parameter is ignored | +| ollama.gpu.nvidiaResource | string | `"nvidia.com/gpu"` | only for nvidia cards; change to (example) 'nvidia.com/mig-1g.10gb' to use MIG slice | +| ollama.gpu.type | string | `"nvidia"` | GPU type: 'nvidia' or 'amd' If 'ollama.gpu.enabled', default value is nvidia If set to 'amd', this will add 'rocm' suffix to image tag if 'image.tag' is not override This is due cause AMD and CPU/CUDA are different images | +| ollama.insecure | bool | `false` | Add insecure flag for pulling at container startup | +| ollama.models.pull | list | `[]` | List of models to pull at container startup The more you add, the longer the container will take to start if models are not present pull: - llama2 - mistral | +| ollama.models.run | list | `[]` | List of models to load in memory at container startup run: - llama2 - mistral | +| ollama.mountPath | string | `""` | Override ollama-data volume mount path, default: "/root/.ollama" | +| persistentVolume.accessModes | list | `["ReadWriteOnce"]` | Ollama server data Persistent Volume access modes Must match those of existing PV or dynamic provisioner Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ | +| persistentVolume.annotations | object | `{}` | Ollama server data Persistent Volume annotations | +| persistentVolume.enabled | bool | `false` | Enable persistence using PVC | +| persistentVolume.existingClaim | string | `""` | If you'd like to bring your own PVC for persisting Ollama state, pass the name of the created + ready PVC here. If set, this Chart will not create the default PVC. Requires server.persistentVolume.enabled: true | +| persistentVolume.size | string | `"30Gi"` | Ollama server data Persistent Volume size | +| persistentVolume.storageClass | string | `""` | Ollama server data Persistent Volume Storage Class If defined, storageClassName: If set to "-", storageClassName: "", which disables dynamic provisioning If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. (gp2 on AWS, standard on GKE, AWS & OpenStack) | +| persistentVolume.subPath | string | `""` | Subdirectory of Ollama server data Persistent Volume to mount Useful if the volume's root directory is not empty | +| persistentVolume.volumeMode | string | `""` | Ollama server data Persistent Volume Binding Mode If defined, volumeMode: If empty (the default) or set to null, no volumeBindingMode spec is set, choosing the default mode. | +| persistentVolume.volumeName | string | `""` | Pre-existing PV to attach this claim to Useful if a CSI auto-provisions a PV for you and you want to always reference the PV moving forward | +| podAnnotations | object | `{}` | Map of annotations to add to the pods | +| podLabels | object | `{}` | Map of labels to add to the pods | +| podSecurityContext | object | `{}` | Pod Security Context | +| readinessProbe.enabled | bool | `true` | Enable readinessProbe | +| readinessProbe.failureThreshold | int | `6` | Failure threshold for readinessProbe | +| readinessProbe.initialDelaySeconds | int | `30` | Initial delay seconds for readinessProbe | +| readinessProbe.path | string | `"/"` | Request path for readinessProbe | +| readinessProbe.periodSeconds | int | `5` | Period seconds for readinessProbe | +| readinessProbe.successThreshold | int | `1` | Success threshold for readinessProbe | +| readinessProbe.timeoutSeconds | int | `3` | Timeout seconds for readinessProbe | +| replicaCount | int | `1` | Number of replicas | +| resources.limits | object | `{}` | Pod limit | +| resources.requests | object | `{}` | Pod requests | +| runtimeClassName | string | `""` | Specify runtime class | +| securityContext | object | `{}` | Container Security Context | +| service.annotations | object | `{}` | Annotations to add to the service | +| service.loadBalancerIP | string | `nil` | Load Balancer IP address | +| service.nodePort | int | `31434` | Service node port when service type is 'NodePort' | +| service.port | int | `11434` | Service port | +| service.type | string | `"ClusterIP"` | Service type | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| serviceAccount.automount | bool | `true` | Automatically mount a ServiceAccount's API credentials? | +| serviceAccount.create | bool | `true` | Specifies whether a service account should be created | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | +| tolerations | list | `[]` | Tolerations for pod assignment | +| topologySpreadConstraints | object | `{}` | Topology Spread Constraints for pod assignment | +| updateStrategy.type | string | `"Recreate"` | Deployment strategy can be "Recreate" or "RollingUpdate". Default is Recreate | +| volumeMounts | list | `[]` | Additional volumeMounts on the output Deployment definition. | +| volumes | list | `[]` | Additional volumes on the output Deployment definition. | + +---------------------------------------------- + +## Core team + + + + + + +
+ Jean Baptiste Detroyes
     Jean Baptiste Detroyes     
+
+ + +
+
+ Jean Baptiste Detroyes
     Nathan Tréhout     
+
+ + + +
+
+ +## Support + +- For questions, suggestions, and discussion about Ollama please refer to + the [Ollama issue page](https://github.com/ollama/ollama/issues) +- For questions, suggestions, and discussion about this chart please + visit [Ollama-Helm issue page](https://github.com/otwld/ollama-helm/issues) or join + our [OTWLD Discord](https://discord.gg/U24mpqTynB) diff --git a/artifacthub-repo.yml b/artifacthub-repo.yml new file mode 100644 index 0000000..63d1dd1 --- /dev/null +++ b/artifacthub-repo.yml @@ -0,0 +1,15 @@ +# Artifact Hub repository metadata file +# +# Some settings like the verified publisher flag or the ignored packages won't +# be applied until the next time the repository is processed. Please keep in +# mind that the repository won't be processed if it has not changed since the +# last time it was processed. Depending on the repository kind, this is checked +# in a different way. For Helm http based repositories, we consider it has +# changed if the `index.yaml` file changes. For git based repositories, it does +# when the hash of the last commit in the branch you set up changes. This does +# NOT apply to ownership claim operations, which are processed immediately. +# +repositoryID: 2ccfd0bd-c123-483e-96f6-eb446fa850ac +owners: + - name: Outworld + email: tech@outworld.fr \ No newline at end of file diff --git a/banner.png b/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..72e6f57a6f9e8e5021fb6762a8deb08be642e323 GIT binary patch literal 134943 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%0AiisSDajaen-&ghWalN2_bq2~AtxbZc-60==4 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 literal 0 HcmV?d00001 diff --git a/templates/NOTES.txt b/templates/NOTES.txt new file mode 100644 index 0000000..4f4889d --- /dev/null +++ b/templates/NOTES.txt @@ -0,0 +1,25 @@ +1. Get the application URL by running these commands: +{{- if .Values.knative.enabled }} + export KSERVICE_URL=$(kubectl get ksvc --namespace {{ .Release.Namespace }} {{ include "ollama.fullname" . }} -o jsonpath={.status.url}) + echo "Visit $KSERVICE_URL to use your application" +{{- else if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "ollama.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "ollama.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "ollama.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "ollama.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl new file mode 100644 index 0000000..3a4c4b0 --- /dev/null +++ b/templates/_helpers.tpl @@ -0,0 +1,91 @@ +{{/* +Allow the release namespace to be overridden for multi-namespace deployments in combined charts +*/}} +{{- define "ollama.namespace" -}} + {{- if .Values.namespaceOverride -}} + {{- .Values.namespaceOverride -}} + {{- else -}} + {{- .Release.Namespace -}} + {{- end -}} +{{- end -}} + +{{/* +Expand the name of the chart. +*/}} +{{- define "ollama.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "ollama.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "ollama.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "ollama.labels" -}} +helm.sh/chart: {{ include "ollama.chart" . }} +{{ include "ollama.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "ollama.selectorLabels" -}} +app.kubernetes.io/name: {{ include "ollama.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "ollama.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "ollama.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Create the pull model list +*/}} +{{- define "ollama.modelPullList" -}} +{{- with .Values.ollama.models.pull -}} +{{- . | uniq | join " " -}} +{{- end -}} +{{- end -}} + +{{/* +Create the run model list +*/}} +{{- define "ollama.modelRunList" -}} +{{- with .Values.ollama.models.run -}} +{{- . | uniq | join " " -}} +{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/templates/deployment.yaml b/templates/deployment.yaml new file mode 100644 index 0000000..c4ff392 --- /dev/null +++ b/templates/deployment.yaml @@ -0,0 +1,213 @@ +--- +{{- if not .Values.knative.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "ollama.fullname" . }} + namespace: {{ include "ollama.namespace" . }} + labels: + {{- include "ollama.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + {{- if or .Values.updateStrategy.type .Values.updateStrategy.rollingUpdate }} + strategy: {{ .Values.updateStrategy | toYaml | nindent 4 }} + {{- end }} + selector: + matchLabels: + {{- include "ollama.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "ollama.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- if .Values.hostIPC }} + hostIPC: {{ .Values.hostIPC }} + {{- end }} + {{- if .Values.hostPID }} + hostPID: {{ .Values.hostPID }} + {{- end }} + {{- if .Values.hostNetwork }} + hostNetwork: {{ .Values.hostNetwork }} + {{- end }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "ollama.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- with .Values.initContainers }} + initContainers: + {{- tpl (toYaml . ) $ | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default (ternary (printf "%s-rocm" .Chart.AppVersion) (.Chart.AppVersion) (and (.Values.ollama.gpu.enabled) (eq .Values.ollama.gpu.type "amd"))) }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + env: + {{- if and .Values.ollama.gpu.enabled (or (eq .Values.ollama.gpu.type "nvidia") (not .Values.ollama.gpu.type))}} + - name: PATH + value: /usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + {{- end}} + {{- with .Values.extraEnv }} + {{- toYaml . | nindent 12 }} + {{- end }} + envFrom: + {{- with .Values.extraEnvFrom }} + {{- toYaml . | nindent 12 }} + {{- end }} + args: + {{- with .Values.extraArgs }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- if .Values.resources }} + resources: + {{- $limits := default dict .Values.resources.limits }} + {{- if .Values.ollama.gpu.enabled }} + # If gpu is enabled, it can either be a NVIDIA card or a AMD card + {{- if or (eq .Values.ollama.gpu.type "nvidia") (not .Values.ollama.gpu.type) }} + # NVIDIA is assumed by default if no value is set and GPU is enabled + # NVIDIA cards can have mig enabled (i.e., the card is sliced into parts + # Therefore, the first case is no migs enabled + {{- if or (not .Values.ollama.gpu.mig) (not .Values.ollama.gpu.mig.enabled ) }} + {{- $gpuLimit := dict (.Values.ollama.gpu.nvidiaResource | default "nvidia.com/gpu") (.Values.ollama.gpu.number | default 1) }} + {{- $limits = merge $limits $gpuLimit }} + # Second case is mig is enabled + {{- else if or (.Values.ollama.gpu.mig.enabled) }} + # Initialize empty dictionary + {{- $migDevices := dict -}} + # Loop over the entries in the mig devices + {{- range $key, $value := .Values.ollama.gpu.mig.devices }} + {{- $migKey := printf "nvidia.com/mig-%s" $key -}} + {{- $migDevices = merge $migDevices (dict $migKey $value) -}} + {{- end }} + {{- $limits = merge $limits $migDevices}} + {{- end }} + {{- end }} + {{- if eq .Values.ollama.gpu.type "amd" }} + {{- $gpuLimit := dict "amd.com/gpu" (.Values.ollama.gpu.number | default 1) }} + {{- $limits = merge $limits $gpuLimit }} + {{- end }} + {{- end }} + {{- $ressources := deepCopy (dict "limits" $limits) | mergeOverwrite .Values.resources }} + {{- toYaml $ressources | nindent 12 }} + {{- end}} + volumeMounts: + - name: ollama-data + mountPath: {{ .Values.ollama.mountPath | default "/root/.ollama" }} + {{- if .Values.persistentVolume.subPath }} + subPath: {{ .Values.persistentVolume.subPath }} + {{- end }} + {{- with .Values.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- if .Values.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.livenessProbe.path }} + port: http + initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.livenessProbe.failureThreshold }} + {{- end }} + {{- if .Values.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.readinessProbe.path }} + port: http + initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.readinessProbe.failureThreshold }} + {{- end }} + {{- with .Values.lifecycle}} + lifecycle: + {{- toYaml . | nindent 12 }} + {{- else }} + {{- if or .Values.ollama.models.pull .Values.ollama.models.run }} + lifecycle: + postStart: + exec: + command: + - /bin/sh + - -c + - | + while ! /bin/ollama ps > /dev/null 2>&1; do + sleep 5 + done + {{- if .Values.ollama.models.pull }} + echo "{{ include "ollama.modelPullList" . }}" | xargs -n1 /bin/ollama pull {{ternary "--insecure" "" .Values.ollama.insecure | toString }} + {{- end }} + {{- if .Values.ollama.models.run }} + echo "{{ include "ollama.modelRunList" . }}" | xargs -n1 /bin/ollama run + {{- end }} + {{- end }} + {{- end }} + volumes: + - name: ollama-data + {{- if .Values.persistentVolume.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistentVolume.existingClaim | default (printf "%s" (include "ollama.fullname" .)) }} + {{- else }} + emptyDir: { } + {{- end }} + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.topologySpreadConstraints }} + topologySpreadConstraints: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if or .Values.ollama.gpu.enabled .Values.tolerations }} + tolerations: + {{- if and .Values.ollama.gpu.enabled (and + ( or (eq .Values.ollama.gpu.type "nvidia") (not .Values.ollama.gpu.type)) + ( or (not .Values.ollama.gpu.mig) (not .Values.ollama.gpu.mig.enabled)) + ) }} + - key: "{{(.Values.ollama.gpu.nvidiaResource | default "nvidia.com/gpu")}}" + operator: Exists + effect: NoSchedule + {{- else if and .Values.ollama.gpu.enabled (and + ( or (eq .Values.ollama.gpu.type "nvidia") (not .Values.ollama.gpu.type)) + (( .Values.ollama.gpu.mig.enabled)) + ) }} + {{- range $key, $value := .Values.ollama.gpu.mig.devices }} + - key: nvidia.com/mig-{{ $key }} + operator: Exists + effect: NoSchedule + {{- end }} + {{- end }} + {{- with .Values.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} +{{- end }} diff --git a/templates/hpa.yaml b/templates/hpa.yaml new file mode 100644 index 0000000..b249330 --- /dev/null +++ b/templates/hpa.yaml @@ -0,0 +1,34 @@ +--- +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "ollama.fullname" . }} + namespace: {{ include "ollama.namespace" . }} + labels: + {{- include "ollama.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "ollama.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/templates/ingress.yaml b/templates/ingress.yaml new file mode 100644 index 0000000..859fc3f --- /dev/null +++ b/templates/ingress.yaml @@ -0,0 +1,63 @@ +--- +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "ollama.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + namespace: {{ include "ollama.namespace" . }} + labels: + {{- include "ollama.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/templates/knative/service.yaml b/templates/knative/service.yaml new file mode 100644 index 0000000..cad2429 --- /dev/null +++ b/templates/knative/service.yaml @@ -0,0 +1,156 @@ +--- +{{- if .Values.knative.enabled }} +apiVersion: serving.knative.dev/v1 +kind: Service +metadata: + name: {{ include "ollama.fullname" . }} + namespace: {{ include "ollama.namespace" . }} + labels: + {{- include "ollama.labels" . | nindent 4 }} +spec: + template: + spec: + containerConcurrency: {{ .Values.knative.containerConcurrency }} + timeoutSeconds: {{ .Values.knative.timeoutSeconds }} + responseStartTimeoutSeconds: {{ .Values.knative.responseStartTimeoutSeconds }} + idleTimeoutSeconds: {{ .Values.knative.idleTimeoutSeconds }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "ollama.serviceAccountName" . }} + {{- if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- with .Values.initContainers }} + initContainers: + {{- tpl (toYaml . ) $ | nindent 8 }} + {{- end }} + containers: + - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default (ternary (printf "%s-rocm" .Chart.AppVersion) (.Chart.AppVersion) (and (.Values.ollama.gpu.enabled) (eq .Values.ollama.gpu.type "amd"))) }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + ports: + - containerPort: {{ .Values.service.port }} + env: + {{- if and .Values.ollama.gpu.enabled (or (eq .Values.ollama.gpu.type "nvidia") (not .Values.ollama.gpu.type))}} + - name: PATH + value: /usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + {{- end}} + {{- with .Values.extraEnv }} + {{- toYaml . | nindent 12 }} + {{- end }} + envFrom: + {{- with .Values.extraEnvFrom }} + {{- toYaml . | nindent 12 }} + {{- end }} + args: + {{- with .Values.extraArgs }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- if .Values.resources }} + resources: + {{- $limits := default dict .Values.resources.limits }} + {{- if .Values.ollama.gpu.enabled }} + {{- if or (eq .Values.ollama.gpu.type "nvidia") (not .Values.ollama.gpu.type) }} + {{- $gpuLimit := dict (.Values.ollama.gpu.nvidiaResource | default "nvidia.com/gpu") (.Values.ollama.gpu.number | default 1) }} + {{- $limits = merge $limits $gpuLimit }} + {{- end }} + {{- if eq .Values.ollama.gpu.type "amd" }} + {{- $gpuLimit := dict "amd.com/gpu" (.Values.ollama.gpu.number | default 1) }} + {{- $limits = merge $limits $gpuLimit }} + {{- end }} + {{- end }} + {{- $ressources := deepCopy (dict "limits" $limits) | mergeOverwrite .Values.resources }} + {{- toYaml $ressources | nindent 12 }} + {{- end}} + volumeMounts: + - name: ollama-data + mountPath: {{ .Values.ollama.mountPath | default "/root/.ollama" }} + {{- if .Values.persistentVolume.subPath }} + subPath: {{ .Values.persistentVolume.subPath }} + {{- end }} + {{- with .Values.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- if .Values.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.livenessProbe.path }} + port: http + initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} + successThreshold: {{ .Values.livenessProbe.successThreshold }} + failureThreshold: {{ .Values.livenessProbe.failureThreshold }} + {{- end }} + {{- if .Values.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.readinessProbe.path }} + port: http + initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} + successThreshold: {{ .Values.readinessProbe.successThreshold }} + failureThreshold: {{ .Values.readinessProbe.failureThreshold }} + {{- end }} + {{- with .Values.lifecycle}} + lifecycle: + {{- toYaml . | nindent 12 }} + {{- else }} + {{- if or .Values.ollama.models.pull .Values.ollama.models.run }} + lifecycle: + postStart: + exec: + command: + - /bin/sh + - -c + - | + while ! /bin/ollama ps > /dev/null 2>&1; do + sleep 5 + done + {{- if .Values.ollama.models.pull }} + echo "{{ include "ollama.modelPullList" . }}" | xargs -n1 /bin/ollama pull {{ternary "--insecure" "" .Values.ollama.insecure | toString }} + {{- end }} + {{- if .Values.ollama.models.run }} + echo "{{ include "ollama.modelRunList" . }}" | xargs -n1 /bin/ollama run + {{- end }} + {{- end }} + {{- end }} + volumes: + - name: ollama-data + {{- if .Values.persistentVolume.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistentVolume.existingClaim | default (printf "%s" (include "ollama.fullname" .)) }} + {{- else }} + emptyDir: { } + {{- end }} + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.topologySpreadConstraints }} + topologySpreadConstraints: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if or .Values.ollama.gpu.enabled .Values.tolerations }} + tolerations: + {{- if and .Values.ollama.gpu.enabled (or (eq .Values.ollama.gpu.type "nvidia") (not .Values.ollama.gpu.type)) }} + - key: "{{(.Values.ollama.gpu.nvidiaResource | default "nvidia.com/gpu")}}" + operator: Exists + effect: NoSchedule + {{- end }} + {{- with .Values.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} +{{- end }} diff --git a/templates/pvc.yaml b/templates/pvc.yaml new file mode 100644 index 0000000..6708cb9 --- /dev/null +++ b/templates/pvc.yaml @@ -0,0 +1,35 @@ +--- +{{- if .Values.persistentVolume.enabled -}} +{{- if not .Values.persistentVolume.existingClaim -}} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + {{- if .Values.persistentVolume.annotations }} + annotations: +{{ toYaml .Values.persistentVolume.annotations | indent 4 }} + {{- end }} + labels: + {{- include "ollama.labels" . | nindent 4 }} + name: {{ template "ollama.fullname" . }} + namespace: {{ include "ollama.namespace" . }} +spec: + accessModes: +{{ toYaml .Values.persistentVolume.accessModes | indent 4 }} +{{- if .Values.persistentVolume.storageClass }} +{{- if (eq "-" .Values.persistentVolume.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistentVolume.storageClass }}" +{{- end }} +{{- end }} +{{- if .Values.persistentVolume.volumeMode }} + volumeMode: "{{ .Values.persistentVolume.volumeMode }}" +{{- end }} +{{- if .Values.persistentVolume.volumeName }} + volumeName: "{{ .Values.persistentVolume.volumeName }}" +{{- end }} + resources: + requests: + storage: "{{ .Values.persistentVolume.size }}" +{{- end -}} +{{- end -}} diff --git a/templates/service.yaml b/templates/service.yaml new file mode 100644 index 0000000..6540fac --- /dev/null +++ b/templates/service.yaml @@ -0,0 +1,29 @@ +--- +{{- if not .Values.knative.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "ollama.fullname" . }} + namespace: {{ include "ollama.namespace" . }} + labels: + {{- include "ollama.labels" . | nindent 4 }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + {{- if contains "NodePort" .Values.service.type }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} +{{- if .Values.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.service.loadBalancerIP | quote }} +{{- end }} + selector: + {{- include "ollama.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/templates/serviceaccount.yaml b/templates/serviceaccount.yaml new file mode 100644 index 0000000..25ac575 --- /dev/null +++ b/templates/serviceaccount.yaml @@ -0,0 +1,15 @@ +{{- if .Values.serviceAccount.create -}} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "ollama.serviceAccountName" . }} + namespace: {{ include "ollama.namespace" . }} + labels: + {{- include "ollama.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/templates/tests/test-connection.yaml b/templates/tests/test-connection.yaml new file mode 100644 index 0000000..5ccb42c --- /dev/null +++ b/templates/tests/test-connection.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "ollama.fullname" . }}-test-connection" + namespace: {{ include "ollama.namespace" . }} + labels: + {{- include "ollama.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "ollama.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/values-test.yaml b/values-test.yaml new file mode 100644 index 0000000..916686a --- /dev/null +++ b/values-test.yaml @@ -0,0 +1,311 @@ +# Default values for ollama-helm. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +# -- Number of replicas +replicaCount: 1 + +# Knative configuration +knative: + # -- Enable Knative integration + enabled: false + # -- Knative service container concurrency + containerConcurrency: 0 + # -- Knative service timeout seconds + timeoutSeconds: 300 + # -- Knative service response start timeout seconds + responseStartTimeoutSeconds: 300 + # -- Knative service idle timeout seconds + idleTimeoutSeconds: 300 + +# Docker image +image: + # -- Docker image registry + repository: ollama/ollama + + # -- Docker pull policy + pullPolicy: IfNotPresent + + # -- Docker image tag, overrides the image tag whose default is the chart appVersion. + tag: "" + +# -- Docker registry secret names as an array +imagePullSecrets: [] + +# -- String to partially override template (will maintain the release name) +nameOverride: "" + +# -- String to fully override template +fullnameOverride: "" + +# Ollama parameters +ollama: + gpu: + # -- Enable GPU integration + enabled: false + + # -- GPU type: 'nvidia' or 'amd' + # If 'ollama.gpu.enabled', default value is nvidia + # If set to 'amd', this will add 'rocm' suffix to image tag if 'image.tag' is not override + # This is due cause AMD and CPU/CUDA are different images + type: 'nvidia' + + # -- Specify the number of GPU + # If you use MIG section below then this parameter is ignored + number: 1 + + # -- only for nvidia cards; change to (example) 'nvidia.com/mig-1g.10gb' to use MIG slice + nvidiaResource: "nvidia.com/gpu" + # nvidiaResource: "nvidia.com/mig-1g.10gb" # example + # If you want to use more than one NVIDIA MIG you can use the following syntax (then nvidiaResource is ignored and only the configuration in the following MIG section is used) + + mig: + # -- Enable multiple mig devices + # If enabled you will have to specify the mig devices + # If enabled is set to false this section is ignored + enabled: false + + # -- Specify the mig devices and the corresponding number + devices: {} + # 1g.10gb: 1 + # 3g.40gb: 1 + + models: + - llama2 + + + # -- Add insecure flag for pulling at container startup + insecure: false + + # -- Override ollama-data volume mount path, default: "/root/.ollama" + mountPath: "" + +# Service account +# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +serviceAccount: + # -- Specifies whether a service account should be created + create: true + + # -- Automatically mount a ServiceAccount's API credentials? + automount: true + + # -- Annotations to add to the service account + annotations: {} + + # -- The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +# -- Map of annotations to add to the pods +podAnnotations: {} + +# -- Map of labels to add to the pods +podLabels: {} + +# -- Pod Security Context +podSecurityContext: {} + # fsGroup: 2000 + +# -- Container Security Context +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +# -- Specify runtime class +runtimeClassName: "" + +# Configure Service +service: + + # -- Service type + type: ClusterIP + + # -- Service port + port: 11434 + + # -- Service node port when service type is 'NodePort' + nodePort: 31434 + + # -- Load Balancer IP address + loadBalancerIP: + + # -- Annotations to add to the service + annotations: {} + +# Configure extra options for liveness probe +# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes +livenessProbe: + # -- Enable livenessProbe + enabled: true + + # -- Request path for livenessProbe + path: / + + # -- Initial delay seconds for livenessProbe + initialDelaySeconds: 60 + + # -- Period seconds for livenessProbe + periodSeconds: 10 + + # -- Timeout seconds for livenessProbe + timeoutSeconds: 5 + + # -- Failure threshold for livenessProbe + failureThreshold: 6 + + # -- Success threshold for livenessProbe + successThreshold: 1 + +# Configure extra options for readiness probe +# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes +readinessProbe: + # -- Enable readinessProbe + enabled: true + + # -- Request path for readinessProbe + path: / + + # -- Initial delay seconds for readinessProbe + initialDelaySeconds: 30 + + # -- Period seconds for readinessProbe + periodSeconds: 5 + + # -- Timeout seconds for readinessProbe + timeoutSeconds: 3 + + # -- Failure threshold for readinessProbe + failureThreshold: 6 + + # -- Success threshold for readinessProbe + successThreshold: 1 + +# Configure autoscaling +autoscaling: + # -- Enable autoscaling + enabled: false + + # -- Number of minimum replicas + minReplicas: 1 + + # -- Number of maximum replicas + maxReplicas: 100 + + # -- CPU usage to target replica + targetCPUUtilizationPercentage: 80 + + # -- targetMemoryUtilizationPercentage: 80 + +# -- Additional volumes on the output Deployment definition. +volumes: [] +# -- - name: foo +# secret: +# secretName: mysecret +# optional: false + +# -- Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# -- - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +# -- Additional arguments on the output Deployment definition. +extraArgs: [] + +# -- Additional environments variables on the output Deployment definition. +# For extra OLLAMA env, please refer to https://github.com/ollama/ollama/blob/main/envconfig/config.go +extraEnv: [] +# - name: OLLAMA_DEBUG +# value: "1" + +# -- Additionl environment variables from external sources (like ConfigMap) +extraEnvFrom: [] +# - configMapRef: +# name: my-env-configmap + +# Enable persistence using Persistent Volume Claims +# ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ +persistentVolume: + # -- Enable persistence using PVC + enabled: false + + # -- Ollama server data Persistent Volume access modes + # Must match those of existing PV or dynamic provisioner + # Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + accessModes: + - ReadWriteOnce + + # -- Ollama server data Persistent Volume annotations + annotations: {} + + # -- If you'd like to bring your own PVC for persisting Ollama state, pass the name of the + # created + ready PVC here. If set, this Chart will not create the default PVC. + # Requires server.persistentVolume.enabled: true + existingClaim: "" + + # -- Ollama server data Persistent Volume size + size: 30Gi + + # -- Ollama server data Persistent Volume Storage Class + # If defined, storageClassName: + # If set to "-", storageClassName: "", which disables dynamic provisioning + # If undefined (the default) or set to null, no storageClassName spec is + # set, choosing the default provisioner. (gp2 on AWS, standard on + # GKE, AWS & OpenStack) + storageClass: "" + + # -- Ollama server data Persistent Volume Binding Mode + # If defined, volumeMode: + # If empty (the default) or set to null, no volumeBindingMode spec is + # set, choosing the default mode. + volumeMode: "" + + # -- Subdirectory of Ollama server data Persistent Volume to mount + # Useful if the volume's root directory is not empty + subPath: "" + + # -- Pre-existing PV to attach this claim to + # Useful if a CSI auto-provisions a PV for you and you want to always + # reference the PV moving forward + volumeName: "" + +# -- Node labels for pod assignment. +nodeSelector: {} + +# -- Tolerations for pod assignment +tolerations: [] + +# -- Affinity for pod assignment +affinity: {} + +# -- Lifecycle for pod assignment (override ollama.models startup pull/run) +lifecycle: {} + +# How to replace existing pods +updateStrategy: + # -- Deployment strategy can be "Recreate" or "RollingUpdate". Default is Recreate + type: "Recreate" + +# -- Topology Spread Constraints for pod assignment +topologySpreadConstraints: {} + +# -- Init containers to add to the pod +initContainers: [] +# - name: startup-tool +# image: alpine:3 +# command: [sh, -c] +# args: +# - echo init + +# -- Use the host’s ipc namespace. +hostIPC: false + +# -- Use the host’s pid namespace +hostPID: false + +# -- Use the host's network namespace. +hostNetwork: false \ No newline at end of file diff --git a/values.yaml b/values.yaml new file mode 100644 index 0000000..baac43f --- /dev/null +++ b/values.yaml @@ -0,0 +1,401 @@ +# Default values for ollama-helm. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +# -- Number of replicas +replicaCount: 1 + +# Knative configuration +knative: + # -- Enable Knative integration + enabled: false + # -- Knative service container concurrency + containerConcurrency: 0 + # -- Knative service timeout seconds + timeoutSeconds: 300 + # -- Knative service response start timeout seconds + responseStartTimeoutSeconds: 300 + # -- Knative service idle timeout seconds + idleTimeoutSeconds: 300 + +# Docker image +image: + # -- Docker image registry + repository: docker.io/ollama/ollama + + # -- Docker pull policy + pullPolicy: IfNotPresent + + # -- Docker image tag, overrides the image tag whose default is the chart appVersion. + tag: "" + +# -- Docker registry secret names as an array +imagePullSecrets: [] + +# -- String to partially override template (will maintain the release name) +nameOverride: "" + +# -- String to fully override template +fullnameOverride: "" + +# -- String to fully override namespace +namespaceOverride: "" + +# Ollama parameters +ollama: + gpu: + # -- Enable GPU integration + enabled: true + + # -- GPU type: 'nvidia' or 'amd' + # If 'ollama.gpu.enabled', default value is nvidia + # If set to 'amd', this will add 'rocm' suffix to image tag if 'image.tag' is not override + # This is due cause AMD and CPU/CUDA are different images + type: "amd" + + # -- Specify the number of GPU + # If you use MIG section below then this parameter is ignored + number: 1 + + # -- only for nvidia cards; change to (example) 'nvidia.com/mig-1g.10gb' to use MIG slice + #nvidiaResource: "nvidia.com/gpu" + # nvidiaResource: "nvidia.com/mig-1g.10gb" # example + # If you want to use more than one NVIDIA MIG you can use the following syntax (then nvidiaResource is ignored and only the configuration in the following MIG section is used) + + mig: + # -- Enable multiple mig devices + # If enabled you will have to specify the mig devices + # If enabled is set to false this section is ignored + enabled: false + + # -- Specify the mig devices and the corresponding number + devices: {} + # 1g.10gb: 1 + # 3g.40gb: 1 + + models: + #clean: true + pull: + #- deepseek-r1:1.5b + - smollm2:1.7b + run: + #- deepseek-r1:1.5b + - smollm2:1.7b + insecure: false + + # -- Override ollama-data volume mount path, default: "/root/.ollama" + mountPath: "" + +# Service account +# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +serviceAccount: + # -- Specifies whether a service account should be created + create: true + + # -- Automatically mount a ServiceAccount's API credentials? + automount: true + + # -- Annotations to add to the service account + annotations: {} + + # -- The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +# -- Map of annotations to add to the pods +podAnnotations: {} + +# -- Map of labels to add to the pods +podLabels: {} + +# -- Pod Security Context +podSecurityContext: + # fsGroup: 2000 + # runAsUser: 0 + #runAsGroup: 0 # Primary group + #supplementalGroups: + # - 39 + # - 998 + +# -- Container Security Context +securityContext: + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + privileged: true + +# -- Specify runtime class +runtimeClassName: "" + +# Configure Service +service: + # -- Service type + type: ClusterIP + + # -- Service port + port: 11434 + + # -- Service node port when service type is 'NodePort' + nodePort: 31434 + + # -- Load Balancer IP address + loadBalancerIP: + + # -- Annotations to add to the service + annotations: {} + +# Configure the ingress resource that allows you to access the +ingress: + # -- Enable ingress controller resource + enabled: true + + # -- IngressClass that will be used to implement the Ingress (Kubernetes 1.18+) + className: "openshift-default" + + # -- Additional annotations for the Ingress resource. + annotations: + # kubernetes.io/ingress.class: traefik + kubernetes.io/ingress.class: openshift-default + kubernetes.io/tls-acme: "true" + cert-manager.io/cluster-issuer: "letsencrypt-dns01-cloudflare" + haproxy.router.openshift.io/timeout: 600s + + # The list of hostnames to be covered with this ingress record. + hosts: + - host: ollama.apilab.us + paths: + - path: / + pathType: Prefix + - host: ollama.apilab.us + paths: + - path: / + pathType: Prefix + + # -- The tls configuration for hostnames to be covered with this ingress record. + tls: + - secretName: ollama-tls + hosts: + - ollama.apilab.us + +# Configure resource requests and limits +# ref: http://kubernetes.io/docs/user-guide/compute-resources/ +resources: + # -- Pod requests + requests: + # Memory request + memory: 4096Mi + + # CPU request + cpu: 2000m + + # -- Pod limit + limits: + # Memory limit + memory: 8192Mi + + # CPU limit + cpu: 4000m + amd.com/gpu: 1 + +# Configure extra options for liveness probe +# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes +livenessProbe: + # -- Enable livenessProbe + enabled: true + + # -- Request path for livenessProbe + path: / + + # -- Initial delay seconds for livenessProbe + initialDelaySeconds: 60 + + # -- Period seconds for livenessProbe + periodSeconds: 10 + + # -- Timeout seconds for livenessProbe + timeoutSeconds: 5 + + # -- Failure threshold for livenessProbe + failureThreshold: 6 + + # -- Success threshold for livenessProbe + successThreshold: 1 + +# Configure extra options for readiness probe +# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes +readinessProbe: + # -- Enable readinessProbe + enabled: true + + # -- Request path for readinessProbe + path: / + + # -- Initial delay seconds for readinessProbe + initialDelaySeconds: 30 + + # -- Period seconds for readinessProbe + periodSeconds: 5 + + # -- Timeout seconds for readinessProbe + timeoutSeconds: 3 + + # -- Failure threshold for readinessProbe + failureThreshold: 6 + + # -- Success threshold for readinessProbe + successThreshold: 1 + +# Configure autoscaling +autoscaling: + # -- Enable autoscaling + enabled: false + + # -- Number of minimum replicas + minReplicas: 1 + + # -- Number of maximum replicas + maxReplicas: 100 + + # -- CPU usage to target replica + targetCPUUtilizationPercentage: 80 + + # -- targetMemoryUtilizationPercentage: 80 + +# -- Additional volumes on the output Deployment definition. +volumes: + # -- - name: foo + # secret: + # secretName: mysecret + # optional: false + + - name: host-volumes + # hostPath: + # path: /opt/amdgpu/share/libdrm + # - name: kfd + # hostPath: + # path: /dev/kfd + - name: dri + hostPath: + path: /dev/dri + type: Directory + +# -- Additional volumeMounts on the output Deployment definition. +volumeMounts: + # -- - name: foo + # mountPath: "/etc/foo" + # readOnly: true + # - name: host-volumes + # mountPath: /opt/amdgpu/share/libdrm + - name: dri + mountPath: /dev/dri +# - name: kfd +# mountPath: /dev/kfd + +# -- Additional arguments on the output Deployment definition. +extraArgs: [] + +# -- Additional environments variables on the output Deployment definition. +# For extra OLLAMA env, please refer to https://github.com/ollama/ollama/blob/main/envconfig/config.go +extraEnv: + - name: OLLAMA_DEBUG + value: "0" + - name: GIN_MODE + value: "release" + - name: HSA_OVERRIDE_GFX_VERSION + value: "11.0.2" + - name: HIP_VISIBLE_DEVICES + value: "0" + - name: GPU_DEVICE_ORDINAL + value: "0" + +# -- Additionl environment variables from external sources (like ConfigMap) +extraEnvFrom: [] +# - configMapRef: +# name: my-env-configmap + +# Enable persistence using Persistent Volume Claims +# ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ +persistentVolume: + # -- Enable persistence using PVC + enabled: true + + # -- Ollama server data Persistent Volume access modes + # Must match those of existing PV or dynamic provisioner + # Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + accessModes: + - ReadWriteOnce + + # -- Ollama server data Persistent Volume annotations + annotations: {} + + # -- If you'd like to bring your own PVC for persisting Ollama state, pass the name of the + # created + ready PVC here. If set, this Chart will not create the default PVC. + # Requires server.persistentVolume.enabled: true + # existingClaim: "ollama" + + # -- Ollama server data Persistent Volume size + size: 30Gi + + # -- Ollama server data Persistent Volume Storage Class + # If defined, storageClassName: + # If set to "-", storageClassName: "", which disables dynamic provisioning + # If undefined (the default) or set to null, no storageClassName spec is + # set, choosing the default provisioner. (gp2 on AWS, standard on + # GKE, AWS & OpenStack) + storageClass: "local-nvme-retain" + + # -- Ollama server data Persistent Volume Binding Mode + # If defined, volumeMode: + # If empty (the default) or set to null, no volumeBindingMode spec is + # set, choosing the default mode. + volumeMode: "" + + # -- Subdirectory of Ollama server data Persistent Volume to mount + # Useful if the volume's root directory is not empty + #subPath: "ollama-data" + + # -- Pre-existing PV to attach this claim to + # Useful if a CSI auto-provisions a PV for you and you want to always + # reference the PV moving forward + # volumeName: "pvc-9583b3c6-7bbd-403c-abac-6fe728dfb8c4" + +# -- Node labels for pod assignment. +#nodeSelector: +# topology.kubernetes.io/zone: lab-sno + +# -- Tolerations for pod assignment +tolerations: [] + +# -- Affinity for pod assignment +affinity: {} + +# -- Lifecycle for pod assignment (override ollama.models startup pull/run) +lifecycle: {} + +# How to replace existing pods +updateStrategy: + # -- Deployment strategy can be "Recreate" or "RollingUpdate". Default is Recreate + type: "Recreate" + +# -- Topology Spread Constraints for pod assignment +topologySpreadConstraints: {} + +# -- Init containers to add to the pod +initContainers: [] +# - name: startup-tool +# image: alpine:3 +# command: [sh, -c] +# args: +# - echo init + +# -- Use the host’s ipc namespace. +hostIPC: false + +# -- Use the host’s pid namespace +hostPID: false + +# -- Use the host's network namespace. +hostNetwork: false