Compare commits

..

52 Commits

Author SHA1 Message Date
gitea 5d13843a99 conjurer: give librarian 60s termination grace for checkpointing
The librarian now checkpoints an in-progress search on SIGTERM and exits
within CONJURER_LIBRARIAN_GRACEFUL_TIMEOUT (default 45s). Raise k8s
terminationGracePeriodSeconds to 60 so that graceful checkpoint isn't cut
short by SIGKILL - otherwise the long DB scan restarts instead of resuming.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-02 22:11:05 +02:00
argocd-image-updater 7a33250d98 build: automatic update of conjurer
updates image gitea/conjurer-librarian tag '8e18071b' to '40605b95'
2026-08-02 17:39:36 +00:00
gitea d94ad4a0dc conjurer: bump librarian memory limit 1Gi -> 2Gi (headroom)
The work-queue OOM is fixed in code (bounded queue), but a deep search
still loads up to 15000 Crossref records and the accumulating result
JSONs into RAM. Give 2Gi of headroom so a big search isn't OOM-killed;
raise the request to 512Mi to match its real baseline.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-02 19:36:14 +02:00
argocd-image-updater 791e745865 build: automatic update of conjurer
updates image gitea/conjurer-librarian tag '44b7298a' to '8e18071b'
updates image gitea/conjurer-bot tag '44b7298a' to '8e18071b'
2026-08-02 17:05:31 +00:00
argocd-image-updater 9fa72af1bf build: automatic update of conjurer
updates image gitea/conjurer-librarian tag '44b7298a' to '8ac68df1'
updates image gitea/conjurer-bot tag '44b7298a' to '8ac68df1'
2026-08-02 17:03:28 +00:00
argocd-image-updater abbba17dd0 build: automatic update of conjurer
updates image gitea/conjurer-librarian tag '5d321f2f' to '44b7298a'
updates image gitea/conjurer-bot tag '5d321f2f' to '44b7298a'
2026-08-02 15:33:09 +00:00
gitea b7f226062c conjurer: napraw drogę powrotną librarian/musician -> bot
Wyniki wyszukań (librarian) i eventy 'now playing' (musician) POST-owane do
bota ginęły, bo droga powrotna do bota była krucha:

* Service 'bot' był NodePort BEZ przypiętego nodePort -> k8s losował port z
  30000-32767 przy każdym (od)tworzeniu Service, a musician/betoniarka z
  Dockera adresują bota na sztywno http://192.168.1.73:32442. Rozjazd = każdy
  POST leci w zamknięty port. Przypinam nodePort: 32442.
* Librarian jest w tym samym klastrze co bot, a mimo to szedł przez nodePort
  węzła. Przełączam na DNS Service'u http://bot:5000 - odporne na
  przetasowania nodePortu (nodePort zostaje tylko dla zewnętrznych z Dockera).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-02 17:04:57 +02:00
gitea d84b982e0f fx 2026-08-01 20:44:00 +02:00
argocd-image-updater 83f928c278 build: automatic update of conjurer
updates image gitea/conjurer-bot tag 'defc482a' to '5d321f2f'
2026-08-01 17:16:14 +00:00
argocd-image-updater a0330b0b77 build: automatic update of conjurer
updates image gitea/conjurer-librarian tag 'defc482a' to '5d321f2f'
2026-08-01 17:14:12 +00:00
gitea e33d59b70c fx 2026-08-01 14:33:17 +02:00
argocd-image-updater 5d1be5398b build: automatic update of conjurer
updates image gitea/conjurer-librarian tag 'latest' to 'defc482a'
updates image gitea/conjurer-bot tag 'e1fca864' to 'defc482a'
2026-08-01 11:54:44 +00:00
gitea 70161cb7bd fx 2026-08-01 13:52:47 +02:00
argocd-image-updater 486e81a817 build: automatic update of conjurer
updates image gitea/conjurer-librarian tag 'latest' to 'defc482a'
2026-08-01 11:52:39 +00:00
argocd-image-updater 3d521a20c8 build: automatic update of conjurer
updates image gitea/conjurer-bot tag '3f4a1d50' to 'e1fca864'
2026-07-31 20:32:28 +00:00
argocd-image-updater 92c1683363 build: automatic update of conjurer
updates image gitea/conjurer-bot tag 'latest' to '3f4a1d50'
2026-07-31 18:15:55 +00:00
argocd-image-updater 627a8b5d7f build: automatic update of conjurer
updates image gitea/conjurer-bot tag 'latest' to 'e9e731e2'
2026-07-31 18:11:52 +00:00
argocd-image-updater 6c0213911d build: automatic update of conjurer
updates image gitea/conjurer-librarian tag '031c1f8a' to 'latest'
2026-07-30 17:43:53 +00:00
argocd-image-updater 814673390f build: automatic update of astrololo
updates image gitea/astrololo-render tag '8ebce816' to 'latest'
2026-07-30 17:31:41 +00:00
argocd-image-updater cab8bda7f8 build: automatic update of conjurer
updates image gitea/conjurer-bot tag '031c1f8a' to 'latest'
2026-07-30 17:11:02 +00:00
gitea aa4f015212 fx 2026-07-30 17:39:22 +02:00
argocd-image-updater 8ec74d1af0 build: automatic update of conjurer
updates image gitea/conjurer-bot tag 'f177dee4' to '031c1f8a'
2026-07-30 15:34:35 +00:00
argocd-image-updater bdb8a0cb0d build: automatic update of conjurer
updates image gitea/conjurer-librarian tag 'f177dee4' to '031c1f8a'
2026-07-30 15:26:22 +00:00
argocd-image-updater 268ea8359f build: automatic update of astrololo
updates image gitea/astrololo-render tag 'latest' to '8ebce816'
2026-07-30 15:17:47 +00:00
argocd-image-updater a88148f7d3 build: automatic update of astrololo
updates image gitea/astrololo-data tag '52b7c20c' to '8ebce816'
updates image gitea/astrololo-logic tag '52b7c20c' to '8ebce816'
updates image gitea/astrololo-presentation tag '52b7c20c' to '8ebce816'
2026-07-30 15:11:39 +00:00
argocd-image-updater 7b61f2e309 build: automatic update of astrololo
updates image gitea/astrololo-logic tag '9b1e4dbb' to '52b7c20c'
updates image gitea/astrololo-presentation tag '9b1e4dbb' to '52b7c20c'
2026-07-30 15:03:35 +00:00
argocd-image-updater 48250c7015 build: automatic update of astrololo
updates image gitea/astrololo-data tag 'f5dec15e' to '52b7c20c'
2026-07-30 15:01:31 +00:00
argocd-image-updater 6524258e1c build: automatic update of astrololo
updates image gitea/astrololo-render tag '998c83b2' to 'latest'
2026-07-30 11:38:30 +00:00
argocd-image-updater 6844dd5b55 build: automatic update of astrololo
updates image gitea/astrololo-render tag 'f5dec15e' to '998c83b2'
2026-07-30 09:42:47 +00:00
argocd-image-updater 311f1b2ce1 build: automatic update of astrololo
updates image gitea/astrololo-logic tag 'f5dec15e' to '9b1e4dbb'
updates image gitea/astrololo-presentation tag '4bdfb673' to '9b1e4dbb'
2026-07-29 00:06:27 +00:00
argocd-image-updater 3bd5ba7a81 build: automatic update of astrololo
updates image gitea/astrololo-presentation tag 'f5dec15e' to '4bdfb673'
2026-07-28 23:36:09 +00:00
argocd-image-updater dda554d98c build: automatic update of astrololo
updates image gitea/astrololo-data tag '998c83b2' to 'f5dec15e'
updates image gitea/astrololo-logic tag '998c83b2' to 'f5dec15e'
updates image gitea/astrololo-presentation tag '495f3734' to 'f5dec15e'
updates image gitea/astrololo-render tag 'latest' to 'f5dec15e'
2026-07-28 19:50:13 +00:00
argocd-image-updater a60dd816e8 build: automatic update of astrololo
updates image gitea/astrololo-render tag 'latest' to 'f5dec15e'
2026-07-28 19:48:08 +00:00
argocd-image-updater 3aba21d062 build: automatic update of astrololo
updates image gitea/astrololo-presentation tag '998c83b2' to '495f3734'
2026-07-28 18:29:32 +00:00
argocd-image-updater 615293b916 build: automatic update of astrololo
updates image gitea/astrololo-data tag '623603b1' to '998c83b2'
updates image gitea/astrololo-logic tag '623603b1' to '998c83b2'
updates image gitea/astrololo-presentation tag '4b17f2dd' to '998c83b2'
2026-07-28 16:27:02 +00:00
argocd-image-updater a2bd1e0202 build: automatic update of astrololo
updates image gitea/astrololo-data tag '623603b1' to '998c83b2'
updates image gitea/astrololo-logic tag '623603b1' to '998c83b2'
2026-07-28 16:24:58 +00:00
argocd-image-updater 073ed904e9 build: automatic update of astrololo
updates image gitea/astrololo-data tag '623603b1' to '998c83b2'
updates image gitea/astrololo-render tag '56131b20' to 'latest'
2026-07-28 16:22:44 +00:00
argocd-image-updater 494b49b9ac build: automatic update of astrololo
updates image gitea/astrololo-render tag '56131b20' to 'latest'
2026-07-28 16:18:33 +00:00
argocd-image-updater 14e62adc94 build: automatic update of conjurer
updates image gitea/conjurer-librarian tag 'e243777e' to 'f177dee4'
updates image gitea/conjurer-bot tag 'e243777e' to 'f177dee4'
2026-07-28 13:51:02 +00:00
argocd-image-updater 3dccbeb27d build: automatic update of conjurer
updates image gitea/conjurer-librarian tag 'e243777e' to 'f177dee4'
2026-07-28 13:48:55 +00:00
gitea 00ce859105 2 2026-07-28 15:37:48 +02:00
gitea d4dda58492 1 2026-07-28 15:34:12 +02:00
gitea 182c579664 Fix updater 2026-07-28 14:21:00 +02:00
argocd-image-updater 2f4e8d1799 build: automatic update of conjurer
updates image gitea/conjurer-bot tag 'c8aae106' to 'e243777e'
2026-07-28 12:17:50 +00:00
gitea 65d1d0c4d8 imageupdater 2026-07-28 14:10:07 +02:00
gitea 8020eb6b05 bot 2026-07-28 13:56:46 +02:00
gitea 327028ce42 bot 2026-07-28 13:40:49 +02:00
gitea 4fa3700f9c Libr 2026-07-28 13:28:38 +02:00
gitea 31a97615a3 Libr 2026-07-28 13:25:04 +02:00
gitea 19ed73cd11 Libr 2026-07-28 11:22:00 +00:00
argocd-image-updater 303be20455 build: automatic update of astrololo
updates image gitea/astrololo-render tag 'latest' to '56131b20'
2026-07-26 19:32:42 +00:00
argocd-image-updater a092350b3b build: automatic update of astrololo
updates image gitea/astrololo-presentation tag '623603b1' to '4b17f2dd'
2026-07-25 23:58:48 +00:00
5 changed files with 111 additions and 8 deletions
+3 -3
View File
@@ -10,10 +10,10 @@ resources:
- ingress.yaml # wejście po https + przekierowanie z http
images:
- name: gitea.czernobog.pl/gitea/astrololo-data
newTag: 623603b1
newTag: 8ebce816
- name: gitea.czernobog.pl/gitea/astrololo-logic
newTag: 623603b1
newTag: 8ebce816
- name: gitea.czernobog.pl/gitea/astrololo-render
newTag: latest
- name: gitea.czernobog.pl/gitea/astrololo-presentation
newTag: 623603b1
newTag: 8ebce816
+59
View File
@@ -0,0 +1,59 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: bot
namespace: conjurer
spec:
replicas: 1 # NIGDY więcej — jedna sesja gateway na token
strategy: { type: Recreate } # NIE RollingUpdate — dwa pody = wojna o sesję Discord
selector: { matchLabels: { app: bot } }
template:
metadata: { labels: { app: bot } }
spec:
imagePullSecrets: [{ name: gitea-registry }]
containers:
- name: bot
image: gitea.czernobog.pl/gitea/conjurer-bot:c8aae106
ports: [{ containerPort: 5000 }]
env:
- { name: CONJURER_DATA_DIR, value: "/data" }
- { name: CONJURER_DISCORD_HOST, value: "0.0.0.0" }
- { name: CONJURER_DISCORD_PORT, value: "5000" }
- { name: CONJURER_API_KEY, value: "d97008b3-7a5a-11f1-acd1-000b0e0f00ed" }
- { name: CONJURER_NETRC_FILE, value: "/secrets/.netrc" }
# ↓ NAZWY PODSTAW WG WYNIKU grepa z 0.2 ↓
- { name: CONJURER_LIBRARIAN_SERVICE, value: "http://librarian:5001" }
- { name: CONJURER_MUSICIAN_SERVICE, value: "http://192.168.1.89:5000" }
- { name: CONJURER_RADIO_SERVICE, value: "http://192.168.1.79:5005" }
- { name: CONJURER_FILE_SERVICE, value: "http://192.168.1.89:5000" }
- { name: CONJURER_RADIO_HARBOR, value: "http://192.168.1.79:54321" }
volumeMounts:
- { name: data, mountPath: /data }
- { name: netrc, mountPath: /secrets, readOnly: true }
resources:
requests: { cpu: "200m", memory: "256Mi" }
limits: { cpu: "2", memory: "1Gi" }
volumes:
- name: data
persistentVolumeClaim: { claimName: bot-data }
- name: netrc
secret: { secretName: conjurer-netrc }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: bot-data, namespace: conjurer }
spec:
accessModes: [ReadWriteOnce]
resources: { requests: { storage: 2Gi } }
---
apiVersion: v1
kind: Service
metadata: { name: bot, namespace: conjurer }
spec:
type: NodePort # radio/musician z Dockera muszą go dosięgnąć
selector: { app: bot }
# nodePort PRZYPIĘTY na sztywno. Bez tego k8s losuje port z 30000-32767 przy
# (od)tworzeniu Service, a musician/betoniarka z Dockera adresują bota po
# http://192.168.1.73:32442 na sztywno - rozjazd = wyniki/eventy giną w locie.
ports: [{ port: 5000, targetPort: 5000, nodePort: 32442 }]
+19
View File
@@ -0,0 +1,19 @@
apiVersion: argocd-image-updater.argoproj.io/v1alpha1
kind: ImageUpdater
metadata:
name: conjurer
namespace: argocd
spec:
commonUpdateSettings:
updateStrategy: "newest-build"
writeBackConfig:
method: "git:secret:argocd/git-creds"
gitConfig:
repository: "https://gitea.czernobog.pl/gitea/deploy.git"
branch: "master" # ← gałąź repo deploy
writeBackTarget: "kustomization:/conjurer"
applicationRefs:
- namePattern: "conjurer"
images:
- { alias: "librarian", imageName: "gitea.czernobog.pl/gitea/conjurer-librarian" }
- { alias: "bot", imageName: "gitea.czernobog.pl/gitea/conjurer-bot" }
+7 -1
View File
@@ -2,4 +2,10 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- librarian.yaml
- librarian.yaml
- bot.yaml
images:
- name: gitea.czernobog.pl/gitea/conjurer-librarian
newTag: 40605b95
- name: gitea.czernobog.pl/gitea/conjurer-bot
newTag: 8e18071b
+23 -4
View File
@@ -10,26 +10,45 @@ spec:
metadata: { labels: { app: librarian } }
spec:
imagePullSecrets: [{ name: gitea-registry }]
# On SIGTERM the librarian checkpoints the running search and exits within
# CONJURER_LIBRARIAN_GRACEFUL_TIMEOUT (default 45s). Give k8s enough grace
# to let that finish before it SIGKILLs - otherwise a long scan's checkpoint
# is cut short and the search restarts from scratch instead of resuming.
terminationGracePeriodSeconds: 60
containers:
- name: librarian
image: gitea.czernobog.pl/gitea/conjurer-librarian:v0.1.0
image: gitea.czernobog.pl/gitea/conjurer-librarian:e243777e
ports: [{ containerPort: 5001 }]
env:
- { name: CONJURER_LIBRARIAN_HOST, value: "0.0.0.0" }
- { name: CONJURER_LIBRARIAN_PORT, value: "5001" }
- { name: CONJURER_LIBRARIAN_DB_PATH, value: "/doi/" }
- { name: CONJURER_API_KEY, value: "d97008b3-7a5a-11f1-acd1-000b0e0f00ed" }
- { name: CONJURER_LIBRARIAN_MAXTHREADS, value: "40" }
- { name: CONJURER_CROSSREF_MAILTO, value: "mtuszowski@gmail.com" }
- { name: CONJURER_LIBRARIAN_CHUNK, value: "_chunk.txt" }
# Librarian jest W TYM SAMYM klastrze/namespace co bot - gada z nim
# po DNS Service'u, nie przez nodePort węzła (ten zostaje tylko dla
# zewnętrznych musician/betoniarka z Dockera). Odporne na przetasowania.
- { name: CONJURER_MAIN_BOT, value: "http://bot:5000" }
- { name: CONJURER_LIBRARIAN_STATE_DIR, value: "/lib_temp_files" }
volumeMounts:
- { name: doi, mountPath: /doi, readOnly: true }
- { name: state, mountPath: /lib_temp_files }
resources:
requests: { cpu: "100m", memory: "256Mi" }
limits: { cpu: "1", memory: "1Gi" }
requests: { cpu: "100m", memory: "512Mi" }
# Headroom bump: the work-queue OOM is fixed in code, but a deep
# search still pulls up to 15000 Crossref records into RAM and the
# accumulating result JSONs are loaded whole. 2Gi gives margin so a
# big search isn't OOM-killed. Tune down if the node is tight.
limits: { cpu: "1", memory: "2Gi" }
volumes:
- name: doi
nfs:
server: 192.168.1.34
path: /mnt/Tank1/conjurer_doi
path: /mnt/Tank1/conjurer_swap/librarian_data/base_it1
- name: state
persistentVolumeClaim: { claimName: librarian-state }
---