diff --git a/searxng/k8s/config.yaml b/searxng/k8s/config.yaml new file mode 100644 index 0000000..e555598 --- /dev/null +++ b/searxng/k8s/config.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: searxng-config + namespace: searxng +data: + SEARXNG_BASE_URL: "https://s.forust.xyz" + SEARXNG_PORT: "8080" + SEARXNG_BIND_ADDRESS: "0.0.0.0" + SEARXNG_LIMITER: "true" + SEARXNG_VALKEY_URL: "valkey://searxng-valkey-service:6379/0" diff --git a/searxng/k8s/ingress.yaml b/searxng/k8s/ingress.yaml new file mode 100644 index 0000000..6fc9a2a --- /dev/null +++ b/searxng/k8s/ingress.yaml @@ -0,0 +1,47 @@ +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: searxng-prod + namespace: searxng +spec: + entryPoints: + - websecure + routes: + - match: Host(`s.forust.xyz`) || Host(`searxng.forust.xyz`) + kind: Rule + services: + - name: searxng-service + port: 8080 + tls: + certResolver: letsencrypt +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: searxng-local + namespace: searxng +spec: + entryPoints: + - websecure + routes: + - match: Host(`s.workstation.internal`) || Host(`searxng.workstation.internal`) + kind: Rule + services: + - name: searxng-service + port: 8080 + +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: searxng-dev + namespace: searxng +spec: + entryPoints: + - websecure + routes: + - match: Host(`searxng.gigaforust.internal`) + kind: Rule + services: + - name: searxng-service + port: 8080 diff --git a/searxng/k8s/namespace.yaml b/searxng/k8s/namespace.yaml new file mode 100644 index 0000000..8739154 --- /dev/null +++ b/searxng/k8s/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: searxng diff --git a/searxng/k8s/searxng.yaml b/searxng/k8s/searxng.yaml new file mode 100644 index 0000000..367e191 --- /dev/null +++ b/searxng/k8s/searxng.yaml @@ -0,0 +1,50 @@ +apiVersion: v1 +kind: Service +metadata: + name: searxng-service + namespace: searxng +spec: + selector: + app: searxng + ports: + - port: 8080 + targetPort: 8080 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: searxng-deployment + namespace: searxng +spec: + replicas: 1 + selector: + matchLabels: + app: searxng + template: + metadata: + labels: + app: searxng + spec: + containers: + - name: searxng + image: docker.io/searxng/searxng:latest + envFrom: + - configMapRef: + name: searxng-config + - secretRef: + name: searxng-secrets + ports: + - containerPort: 8080 + volumeMounts: + - name: cache + mountPath: /var/cache/searxng + resources: + requests: + memory: "300Mi" + cpu: "30m" + limits: + memory: "700Mi" + cpu: "500m" + volumes: + - name: cache + emptyDir: {} diff --git a/searxng/k8s/valkey.yaml b/searxng/k8s/valkey.yaml new file mode 100644 index 0000000..5d13832 --- /dev/null +++ b/searxng/k8s/valkey.yaml @@ -0,0 +1,51 @@ +apiVersion: v1 +kind: Service +metadata: + name: searxng-valkey-service + namespace: searxng +spec: + clusterIP: None + selector: + app: searxng-valkey + ports: + - port: 6379 + targetPort: 6379 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: searxng-valkey-statefulset + namespace: searxng +spec: + serviceName: searxng-valkey-service + replicas: 1 + selector: + matchLabels: + app: searxng-valkey + template: + metadata: + labels: + app: searxng-valkey + spec: + containers: + - name: valkey + image: docker.io/valkey/valkey:9-alpine + command: + - valkey-server + - --save + - "30 1" + - --loglevel + - warning + ports: + - containerPort: 6379 + volumeMounts: + - name: valkey-data + mountPath: /data + volumeClaimTemplates: + - metadata: + name: valkey-data + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 1Gi