first commit
This commit is contained in:
commit
6e5f3434bd
18
.gitea/workflows/deploy.yaml
Normal file
18
.gitea/workflows/deploy.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: test
|
||||
runs-on: debian
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: setup env
|
||||
run: |
|
||||
cat <<EOF >> .env
|
||||
BASE_URL="${{ gitea.ref_name }}.$(tr / '\n' <<< "${{ gitea.repository }}" | tac | tr '\n' .)k8s.gmoker.com"
|
||||
EOF
|
||||
cat .env
|
||||
|
||||
- uses: actions/k8sdeploy@v1
|
||||
with:
|
||||
kubeconfig: "${{ secrets.K8S }}"
|
18
compose.yaml
Normal file
18
compose.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
services:
|
||||
redis:
|
||||
image: docker.io/redis:latest
|
||||
restart: unless-stopped
|
||||
tmpfs:
|
||||
- /data/
|
||||
|
||||
app:
|
||||
image: "$IMAGEAPP"
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- SEARXNG_SECRET=secret
|
||||
volumes:
|
||||
- ./limiter.toml:/etc/searxng/limiter.toml:ro
|
||||
- ./settings.yml:/etc/searxng/settings.yml:ro
|
13
diff.sh
Executable file
13
diff.sh
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
. ./.env
|
||||
|
||||
DOCKER_API='https://hub.docker.com/v2/namespaces/searxng/repositories/searxng'
|
||||
REPO='https://github.com/searxng/searxng/raw'
|
||||
|
||||
new_tag="$(curl -L "$DOCKER_API/tags" | jq -r '.results[3].name')"
|
||||
new_commit="$(grep -Eo '\w+$' <<< "$new_tag")"
|
||||
|
||||
$EDITOR -d -c "wincmd l" -- "$REPO/$new_commit/searx/settings.yml" settings.yml
|
||||
|
||||
sed -i "/^IMAGEAPP=/s/:.*/:$new_tag/" .env
|
40
limiter.toml
Normal file
40
limiter.toml
Normal file
@ -0,0 +1,40 @@
|
||||
[real_ip]
|
||||
|
||||
# Number of values to trust for X-Forwarded-For.
|
||||
|
||||
x_for = 1
|
||||
|
||||
# The prefix defines the number of leading bits in an address that are compared
|
||||
# to determine whether or not an address is part of a (client) network.
|
||||
|
||||
ipv4_prefix = 32
|
||||
ipv6_prefix = 48
|
||||
|
||||
[botdetection.ip_limit]
|
||||
|
||||
# To get unlimited access in a local network, by default link-lokal addresses
|
||||
# (networks) are not monitored by the ip_limit
|
||||
filter_link_local = false
|
||||
|
||||
# activate link_token method in the ip_limit method
|
||||
link_token = false
|
||||
|
||||
[botdetection.ip_lists]
|
||||
|
||||
# In the limiter, the ip_lists method has priority over all other methods -> if
|
||||
# an IP is in the pass_ip list, it has unrestricted access and it is also not
|
||||
# checked if e.g. the "user agent" suggests a bot (e.g. curl).
|
||||
|
||||
block_ip = [
|
||||
# '93.184.216.34', # IPv4 of example.org
|
||||
# '257.1.1.1', # invalid IP --> will be ignored, logged in ERROR class
|
||||
]
|
||||
|
||||
pass_ip = [
|
||||
# '192.168.0.0/16', # IPv4 private network
|
||||
# 'fe80::/10' # IPv6 linklocal / wins over botdetection.ip_limit.filter_link_local
|
||||
]
|
||||
|
||||
# Activate passlist of (hardcoded) IPs from the SearXNG organization,
|
||||
# e.g. `check.searx.space`.
|
||||
pass_searxng_org = true
|
42
manifests/bin/deploy.sh
Executable file
42
manifests/bin/deploy.sh
Executable file
@ -0,0 +1,42 @@
|
||||
#!/bin/bash -e
|
||||
set -o pipefail
|
||||
|
||||
function kapply() {
|
||||
for f in "$@"; do
|
||||
kubectl apply -f \
|
||||
<(envsubst "$(env | xargs printf '$%s ')" < "manifests/$f")
|
||||
done
|
||||
}
|
||||
|
||||
function kcreatesec() {
|
||||
kubectl create secret generic --save-config --dry-run=client -oyaml "$@" | kubectl apply -f-
|
||||
}
|
||||
|
||||
function kcreatecm() {
|
||||
kubectl create configmap --dry-run=client -oyaml "$@" | kubectl apply -f-
|
||||
}
|
||||
|
||||
function kgseckey() {
|
||||
local sec="$1"; shift
|
||||
local key="$1"; shift
|
||||
|
||||
kubectl get secret "$sec" -o jsonpath="{.data.$key}" | base64 -d
|
||||
}
|
||||
|
||||
function kgcmkey() {
|
||||
local cm="$1"; shift
|
||||
local key="$1"; shift
|
||||
|
||||
kubectl get configmap "$cm" -o jsonpath="{.data.$key}"
|
||||
}
|
||||
|
||||
|
||||
kcreatesec searxng-secrets \
|
||||
--from-literal=SEARXNG_SECRET="$(kgseckey searxng-secrets SEARXNG_SECRET || openssl rand -hex 32)"
|
||||
|
||||
kcreatecm searxng-settings --from-file=settings.yml
|
||||
kcreatecm searxng-limiter --from-file=limiter.toml
|
||||
|
||||
kapply common/redis.yaml common/app.yaml
|
||||
|
||||
kubectl rollout restart deployment app
|
5
manifests/bin/devel.sh
Executable file
5
manifests/bin/devel.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
export NB_REPLICAS=1
|
||||
|
||||
. ./manifests/bin/deploy.sh
|
5
manifests/bin/prod.sh
Executable file
5
manifests/bin/prod.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
export NB_REPLICAS=3
|
||||
|
||||
. ./manifests/bin/deploy.sh
|
82
manifests/common/app.yaml
Normal file
82
manifests/common/app.yaml
Normal file
@ -0,0 +1,82 @@
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: app
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
tls:
|
||||
- secretName: tls-app
|
||||
hosts:
|
||||
- "$BASE_URL"
|
||||
rules:
|
||||
- host: "$BASE_URL"
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: app
|
||||
port:
|
||||
name: http
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: app
|
||||
labels:
|
||||
app: app
|
||||
spec:
|
||||
selector:
|
||||
app: app
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: http
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: app
|
||||
labels:
|
||||
app: app
|
||||
spec:
|
||||
replicas: $NB_REPLICAS
|
||||
selector:
|
||||
matchLabels:
|
||||
app: app
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: app
|
||||
spec:
|
||||
imagePullSecrets:
|
||||
- name: regcred
|
||||
containers:
|
||||
- name: app
|
||||
image: "$IMAGEAPP"
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8080
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: searxng-secrets
|
||||
volumeMounts:
|
||||
- name: limiter
|
||||
mountPath: /etc/searxng/limiter.toml
|
||||
subPath: limiter.toml
|
||||
readOnly: true
|
||||
- name: settings
|
||||
mountPath: /etc/searxng/settings.yml
|
||||
subPath: settings.yml
|
||||
readOnly: true
|
||||
volumes:
|
||||
- name: settings
|
||||
configMap:
|
||||
name: searxng-settings
|
||||
- name: limiter
|
||||
configMap:
|
||||
name: searxng-limiter
|
42
manifests/common/redis.yaml
Normal file
42
manifests/common/redis.yaml
Normal file
@ -0,0 +1,42 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: redis
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
selector:
|
||||
app: redis
|
||||
ports:
|
||||
- name: redis
|
||||
port: 6379
|
||||
targetPort: redis
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: redis
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: redis
|
||||
serviceName: redis
|
||||
replicas: $NB_REPLICAS
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
containers:
|
||||
- name: redis
|
||||
image: docker.io/redis:latest
|
||||
ports:
|
||||
- name: redis
|
||||
containerPort: 6379
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data/
|
||||
volumes:
|
||||
- name: data
|
||||
emptyDir: {}
|
0
manifests/devel/.gitkeep
Normal file
0
manifests/devel/.gitkeep
Normal file
0
manifests/prod/.gitkeep
Normal file
0
manifests/prod/.gitkeep
Normal file
2356
settings.yml
Normal file
2356
settings.yml
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user