128 lines
4.1 KiB
YAML
128 lines
4.1 KiB
YAML
---
|
|
apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
|
kind: HelmRelease
|
|
metadata:
|
|
name: ingress-nginx
|
|
spec:
|
|
interval: 30m
|
|
chart:
|
|
spec:
|
|
chart: ingress-nginx
|
|
version: 4.8.2
|
|
sourceRef:
|
|
kind: HelmRepository
|
|
name: ingress-nginx
|
|
namespace: flux-system
|
|
interval: 30m
|
|
values:
|
|
controller:
|
|
replicaCount: 3
|
|
updateStrategy:
|
|
type: RollingUpdate
|
|
allowSnippetAnnotations: true
|
|
service:
|
|
enabled: true
|
|
type: LoadBalancer
|
|
annotations:
|
|
load-balancer.hetzner.cloud/location: fsn1
|
|
load-balancer.hetzner.cloud/protocol: tcp
|
|
load-balancer.hetzner.cloud/name: valinor-nginx
|
|
load-balancer.hetzner.cloud/use-private-ip: true
|
|
load-balancer.hetzner.cloud/uses-proxyprotocol: true
|
|
|
|
publishService:
|
|
enabled: true
|
|
|
|
metrics:
|
|
enabled: true
|
|
serviceMonitor:
|
|
enabled: true
|
|
namespace: network
|
|
namespaceSelector:
|
|
any: true
|
|
|
|
ingressClassResource:
|
|
default: true
|
|
|
|
config:
|
|
block-user-agents: "GPTBot,~*GPTBot*,ChatGPT-User,~*ChatGPT-User*,Google-Extended,~*Google-Extended*,CCBot,~*CCBot*,Omgilibot,~*Omgilibot*,FacebookBot,~*FacebookBot*" # taken from https://github.com/superseriousbusiness/gotosocial/blob/main/internal/web/robots.go
|
|
client-header-timeout: 120
|
|
client-body-buffer-size: "100M"
|
|
client-body-timeout: 120
|
|
enable-brotli: "true"
|
|
enable-ocsp: "true"
|
|
enable-real-ip: "true"
|
|
use-proxy-protocol: "true"
|
|
hide-headers: Server,X-Powered-By
|
|
hsts-max-age: "31449600"
|
|
keep-alive: 120
|
|
keep-alive-requests: 10000
|
|
proxy-body-size: 0
|
|
proxy-buffer-size: "16k"
|
|
ssl-protocols: "TLSv1.3 TLSv1.2"
|
|
use-forwarded-headers: "true"
|
|
plugins: "crowdsec"
|
|
lua-shared-dicts: "crowdsec_cache: 50m"
|
|
server-snippet: |
|
|
resolver local=on ipv6=off;
|
|
|
|
extraArgs:
|
|
default-ssl-certificate: "network/valinor-social-tls"
|
|
|
|
topologySpreadConstraints:
|
|
- maxSkew: 2
|
|
topologyKey: kubernetes.io/hostname
|
|
whenUnsatisfiable: DoNotSchedule
|
|
labelSelector:
|
|
matchLabels:
|
|
app.kubernetes.io/instance: ingress-nginx
|
|
app.kubernetes.io/component: controller
|
|
affinity:
|
|
podAntiAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
- labelSelector:
|
|
matchExpressions:
|
|
- key: app.kubernetes.io/component
|
|
operator: In
|
|
values:
|
|
- controller
|
|
- key: app.kubernetes.io/instance
|
|
operator: In
|
|
values:
|
|
- ingress-nginx
|
|
topologyKey: kubernetes.io/hostname
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 23m
|
|
memory: 381M
|
|
extraVolumes:
|
|
- name: crowdsec-bouncer-plugin
|
|
emptyDir: {}
|
|
extraInitContainers:
|
|
- name: init-clone-crowdsec-bouncer
|
|
image: crowdsecurity/lua-bouncer-plugin
|
|
imagePullPolicy: IfNotPresent
|
|
env:
|
|
- name: API_URL
|
|
value: "http://crowdsec-service.security.svc.cluster.local:8080" # crowdsec lapi service-name
|
|
- name: API_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: nginx-ingress-secrets
|
|
key: nginx-ingress-bouncer-apikey
|
|
- name: BOUNCER_CONFIG
|
|
value: "/crowdsec/crowdsec-bouncer.conf"
|
|
- name: BAN_TEMPLATE_PATH
|
|
value: /etc/nginx/lua/plugins/crowdsec/templates/ban.html
|
|
command: ['sh', '-c', "sh /docker_start.sh; mkdir -p /lua_plugins/crowdsec/; cp -R /crowdsec/* /lua_plugins/crowdsec/"]
|
|
volumeMounts:
|
|
- name: crowdsec-bouncer-plugin
|
|
mountPath: /lua_plugins
|
|
extraVolumeMounts:
|
|
- name: crowdsec-bouncer-plugin
|
|
mountPath: /etc/nginx/lua/plugins/crowdsec
|
|
subPath: crowdsec
|
|
|
|
defaultBackend:
|
|
enabled: false
|