apiVersion: v1
kind: Namespace
metadata:
  name: searx
  labels:
    app: searx

---

apiVersion: v1
kind: PersistentVolume
metadata:
  namespace: searx
  name: searx-data-nfs
  labels:
    directory: searx
spec:
  storageClassName: fast
  capacity:
    storage: "5Gi"
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  nfs:
    path: /searx
    server: 10.43.239.43 # assigned to nfs-server service. Won't change as long as service is not redeployed
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: searx
  name: searx-data-nfs
spec:
  storageClassName: fast
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: "5Gi"
  selector:
    matchLabels:
      directory: searx

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: searx
  namespace: searx
  labels:
    app: searx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: searx
  template:
    metadata:
      labels:
        app: searx
    spec:
      containers:
      - name: searx
        image: searxng/searxng
        tty: true
        ports:
          - containerPort: 8080
        volumeMounts:
        - mountPath: /etc/searxng
          name: searx-data
        env:
          - name: BASE_URL
            value: https://search.kluster.moll.re
          - name: INSTANCE_NAME
            value: searx
        resources:
            requests:
              cpu: "100m"
              memory: "100Mi"
            limits:
              cpu: "1"
              memory: "500Mi"


      volumes:
      - name: searx-data
        persistentVolumeClaim:
          claimName: searx-data-nfs

---
apiVersion: v1
kind: Service
metadata:
  name: searx
  namespace: searx

spec:
  type: ClusterIP
  ports:
    - name: http
      port: 8080
  selector:
    app: searx

---

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  namespace: searx
  name: searx-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: cloudflare-letsencrypt-prod
spec:
  tls:
  - hosts:
    - search.kluster.moll.re
    secretName: cloudflare-letsencrypt-issuer-account-key
  rules:
    - host: search.kluster.moll.re
      http:
        paths:
        - backend:
            service:
              name: searx
              port: 
                number: 8080
          path: /
          pathType: Prefix