ci / test (push) Successful in 28s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
69 lines
2.6 KiB
YAML
69 lines
2.6 KiB
YAML
# NEX-Websuche (SearXNG), umgezogen von appsrv08 (Portainer-Stack nex, Dienst searxng) nach k3s (D6-Test, 15.10.2026).
|
|
# Quelle der Einstellungen: nex-Repo deploy/nex/searxng/settings.yml (Kopie hier, als ConfigMap eingehängt).
|
|
# SEARXNG_SECRET liegt im Secret nex-searxng (legt playbooks/nex-searxng-k3s.yml an, nicht im Repo).
|
|
# Zustandslos, kein Volume. Erreichbar im LAN über NodePort 30880 auf jeder Knoten-Adresse; die Hermes-Agenten
|
|
# auf appsrv08 brauchen dann SEARXNG_URL=http://<Knoten-IP>:30880 statt http://nex-searxng:8080.
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nex-searxng
|
|
namespace: nex
|
|
labels: {app: nex-searxng}
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels: {app: nex-searxng}
|
|
template:
|
|
metadata:
|
|
labels: {app: nex-searxng}
|
|
spec:
|
|
# /etc/searxng muss beschreibbar sein (Image legt dort Dateien an): emptyDir, settings.yml aus der ConfigMap kopiert
|
|
initContainers:
|
|
- name: settings
|
|
image: searxng/searxng:2026.10.4-d48c4b555
|
|
command: ["sh", "-c", "cp /config/settings.yml /etc/searxng/settings.yml"]
|
|
volumeMounts:
|
|
- {name: config, mountPath: /config, readOnly: true}
|
|
- {name: etc, mountPath: /etc/searxng}
|
|
containers:
|
|
- name: searxng
|
|
image: searxng/searxng:2026.10.4-d48c4b555
|
|
ports:
|
|
- {name: http, containerPort: 8080}
|
|
env:
|
|
- name: SEARXNG_SECRET
|
|
valueFrom:
|
|
secretKeyRef: {name: nex-searxng, key: SEARXNG_SECRET}
|
|
- {name: GRANIAN_HOST, value: "0.0.0.0"} # IPv4: sonst erscheint die Absender-Adresse nur als ::ffff
|
|
- {name: GRANIAN_LOG_ACCESS_ENABLED, value: "true"}
|
|
- {name: GRANIAN_LOG_ACCESS_FMT, value: '[%(time)s] %(addr)s "%(method)s %(path)s" %(status)d %(dt_ms).0fms'} # ohne Query-String: keine Suchbegriffe im Log
|
|
resources:
|
|
requests: {cpu: 100m, memory: 128Mi}
|
|
limits: {memory: 256Mi}
|
|
volumeMounts:
|
|
- {name: etc, mountPath: /etc/searxng}
|
|
readinessProbe:
|
|
httpGet: {path: /healthz, port: http}
|
|
periodSeconds: 10
|
|
livenessProbe:
|
|
httpGet: {path: /healthz, port: http}
|
|
periodSeconds: 30
|
|
failureThreshold: 3
|
|
volumes:
|
|
- name: config
|
|
configMap: {name: nex-searxng-settings}
|
|
- name: etc
|
|
emptyDir: {sizeLimit: 16Mi}
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: nex-searxng
|
|
namespace: nex
|
|
labels: {app: nex-searxng}
|
|
spec:
|
|
type: NodePort
|
|
selector: {app: nex-searxng}
|
|
ports:
|
|
- {name: http, port: 8080, targetPort: http, nodePort: 30880}
|