diff --git a/dmz/searxng/Chart.yaml b/dmz/searxng/Chart.yaml new file mode 100644 index 0000000..0a3d722 --- /dev/null +++ b/dmz/searxng/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: latest +description: SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. +name: searxng +version: 1.0.1 +kubeVersion: ">=1.16.0-0" +keywords: + - searx + - searxng + - search engine + - privacy +icon: https://github.com/searxng/searxng/blob/master/searx/static/themes/simple/img/favicon.png?raw=true +sources: + - https://github.com/searxng/searxng + - https://docs.searxng.org + - https://hub.docker.com/r/searxng/searxng +maintainers: + - name: unixfox + email: searxng@unixfoxremovemeifyouwanttocontactme.eu +dependencies: + - name: common + repository: https://library-charts.k8s-at-home.com + version: 4.4.2 + - name: redis + version: 0.0.3 + repository: https://charts.pascaliske.dev + condition: redis.enabled diff --git a/dmz/searxng/templates/NOTES.txt b/dmz/searxng/templates/NOTES.txt new file mode 100644 index 0000000..90f7b65 --- /dev/null +++ b/dmz/searxng/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "common.notes.defaultNotes" . -}} diff --git a/dmz/searxng/templates/common.yaml b/dmz/searxng/templates/common.yaml new file mode 100644 index 0000000..f8490f9 --- /dev/null +++ b/dmz/searxng/templates/common.yaml @@ -0,0 +1,17 @@ +{{/* First Make sure all variables are set and merged properly */}} +{{- include "common.values.setup" . }} + +{{/* Append the configMap volume to the volumes */}} +{{- define "searxng.settingsVolume" -}} +enabled: "true" +mountPath: "/etc/searxng/settings.yml" +subPath: "settings.yml" +type: "custom" +volumeSpec: + secret: + secretName: {{ include "common.names.fullname" . }}-config +{{- end -}} +{{- $_ := set .Values.persistence "searxng-config" (include "searxng.settingsVolume" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "common.all" . }} \ No newline at end of file diff --git a/dmz/searxng/templates/configmap.yaml b/dmz/searxng/templates/configmap.yaml new file mode 100644 index 0000000..f27ea5d --- /dev/null +++ b/dmz/searxng/templates/configmap.yaml @@ -0,0 +1,11 @@ +{{- include "common.values.setup" . -}} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }}-config + labels: + {{- include "common.labels" . | nindent 4 }} +data: + settings.yml: |- +{{ toYaml .Values.searxng.config | b64enc | indent 4 }} \ No newline at end of file diff --git a/dmz/searxng/templates/ingress.yaml b/dmz/searxng/templates/ingress.yaml new file mode 100644 index 0000000..8093211 --- /dev/null +++ b/dmz/searxng/templates/ingress.yaml @@ -0,0 +1,45 @@ +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: searxng-ingress +spec: + entryPoints: + - websecure + routes: + - match: Host(`searxng.durp.info`) && PathPrefix(`/`) + kind: Rule + middlewares: + - name: authentik-proxy-provider + namespace: traefik + services: + - name: searxng + port: 3000 + tls: + secretName: searxng-tls + +--- + +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: searxng-tls +spec: + secretName: searxng-tls + issuerRef: + name: letsencrypt-production + kind: ClusterIssuer + commonName: "searxng.durp.info" + dnsNames: + - "searxng.durp.info" + +--- + +kind: Service +apiVersion: v1 +metadata: + name: searxng-external-dns + annotations: + external-dns.alpha.kubernetes.io/hostname: searxng.durp.info +spec: + type: ExternalName + externalName: durp.info diff --git a/dmz/searxng/values.yaml b/dmz/searxng/values.yaml new file mode 100644 index 0000000..0f92a3b --- /dev/null +++ b/dmz/searxng/values.yaml @@ -0,0 +1,83 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: registry.durp.info/searxng/searxng + # -- image tag + tag: latest + # -- image pull policy + pullPolicy: Always + +# Explanation about each environment variables here: +# https://docs.searxng.org/admin/installation-docker.html#command-line +env: + INSTANCE_NAME: "durp.info" + BASE_URL: "https://searx.durp.info" + AUTOCOMPLETE: "false" + # MORTY_URL: "http://morty:8080" + # MORTY_KEY: "mysecretkey" + # BIND_ADDRESS: "0.0.0.0:8080" + +controller: + strategy: "RollingUpdate" + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + port: 8080 + +# -- Configure persistence settings for the chart under this key. +# @default -- See values.yaml +persistence: + config: + enabled: false + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See values.yaml + main: + enabled: false + +searxng: + config: + use_default_settings: true + #server: + # secret_key: pleasechangeme + # Uncomment when using the builtin rate limiter + # See https://docs.searxng.org/src/searx.plugins.limiter.html#limiter-plugin + # server.limiter: true + # redis.url: redis://@searxng-redis:6379/0 + +probes: + readiness: + custom: true + spec: + httpGet: + path: /healthz + port: 8080 + liveness: + custom: true + spec: + httpGet: + path: /healthz + port: 8080 + startup: + custom: true + spec: + httpGet: + path: /healthz + port: 8080 + +# Enable when using searxng builtin rate limiter +# Values: https://github.com/pascaliske/helm-charts/tree/master/charts/redis +redis: + enabled: false + \ No newline at end of file diff --git a/infra/argocd/templates/searxng.yaml b/infra/argocd/templates/searxng.yaml new file mode 100644 index 0000000..174c060 --- /dev/null +++ b/infra/argocd/templates/searxng.yaml @@ -0,0 +1,22 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: searxng + namespace: argocd +spec: + project: default + source: + repoURL: https://gitlab.com/developerdurp/homelab.git + targetRevision: main + path: dmz/searxng + directory: + recurse: true + destination: + name: dmz + namespace: searxng + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true