From 3857ab9aa55ed1bd65b91466cb336149955ebbbf Mon Sep 17 00:00:00 2001 From: David Wetmore <167476544+dwetmore@users.noreply.github.com> Date: Tue, 10 Feb 2026 19:16:24 -0500 Subject: [PATCH] Add Ollama model pull Job driven by ConfigMap --- README.md | 24 +++++++++++ overlays/dev-ollama/kustomization.yaml | 2 + .../dev-ollama/ollama-model-pull-job.yaml | 43 +++++++++++++++++++ .../dev-ollama/ollama-models-configmap.yaml | 8 ++++ 4 files changed, 77 insertions(+) create mode 100644 overlays/dev-ollama/ollama-model-pull-job.yaml create mode 100644 overlays/dev-ollama/ollama-models-configmap.yaml diff --git a/README.md b/README.md index f0650ae..4e23347 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,30 @@ kubectl apply -f application.yaml argocd app sync chatbot-gitops ``` + +## Pre-pull Ollama models with a Job + +The dev overlay includes: + +- `ConfigMap/ollama-models` with a `models.txt` list of models to pull. +- `Job/ollama-model-pull` that reads `models.txt` and runs `ollama pull` for each entry. + +Update the model list by editing `overlays/dev-ollama/ollama-models-configmap.yaml` and changing `data.models.txt`. + +Trigger the model-pull Job: + +```bash +kubectl delete job ollama-model-pull -n chatbot --ignore-not-found +kubectl apply -k overlays/dev-ollama +kubectl logs job/ollama-model-pull -n chatbot -f +``` + +Check completion: + +```bash +kubectl get job ollama-model-pull -n chatbot +``` + ## Validate ```bash diff --git a/overlays/dev-ollama/kustomization.yaml b/overlays/dev-ollama/kustomization.yaml index 1077c8f..416cad9 100644 --- a/overlays/dev-ollama/kustomization.yaml +++ b/overlays/dev-ollama/kustomization.yaml @@ -3,6 +3,8 @@ kind: Kustomization resources: - ollama.yaml + - ollama-models-configmap.yaml + - ollama-model-pull-job.yaml - openwebui-pvc.yaml - openwebui-deploy.yaml - openwebui-svc.yaml diff --git a/overlays/dev-ollama/ollama-model-pull-job.yaml b/overlays/dev-ollama/ollama-model-pull-job.yaml new file mode 100644 index 0000000..32ddbb8 --- /dev/null +++ b/overlays/dev-ollama/ollama-model-pull-job.yaml @@ -0,0 +1,43 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: ollama-model-pull + namespace: chatbot +spec: + backoffLimit: 6 + template: + spec: + restartPolicy: OnFailure + containers: + - name: pull-models + image: ollama/ollama:latest + env: + - name: OLLAMA_HOST + value: "http://ollama:11434" + command: + - /bin/sh + - -c + - | + set -eu + echo "Waiting for Ollama API at ${OLLAMA_HOST}..." + until ollama list >/dev/null 2>&1; do + sleep 5 + done + + while IFS= read -r model; do + model="$(echo "$model" | xargs)" + [ -z "$model" ] && continue + case "$model" in + \#*) continue ;; + esac + echo "Pulling model: $model" + ollama pull "$model" + done < /models/models.txt + volumeMounts: + - name: models + mountPath: /models + readOnly: true + volumes: + - name: models + configMap: + name: ollama-models diff --git a/overlays/dev-ollama/ollama-models-configmap.yaml b/overlays/dev-ollama/ollama-models-configmap.yaml new file mode 100644 index 0000000..f82d6b5 --- /dev/null +++ b/overlays/dev-ollama/ollama-models-configmap.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: ollama-models + namespace: chatbot +data: + models.txt: | + tinyllama