🔥 redis-lb

This commit is contained in:
auricom
2023-06-23 19:58:16 +02:00
parent 001d9200d6
commit f79c9a003e
11 changed files with 4 additions and 277 deletions

View File

@@ -35,7 +35,7 @@ spec:
tag: 1.282.0
env:
NODE_ENV: production
REDIS_HOST: redis-lb.default.svc.cluster.local
REDIS_HOST: redis.default.svc.cluster.local
REDIS_PORT: 6379
envFrom:
- secretRef:

View File

@@ -9,16 +9,13 @@ data:
DISABLE_REVERSE_GEOCODING: "true"
ENABLE_MAPBOX: "false"
LOG_LEVEL: verbose
NODE_ENV: "production"
# REDIS_HOSTNAME: redis-lb.default.svc.cluster.local
# REDIS_DBINDEX: "10"
REDIS_HOSTNAME: immich-redis.default.svc.cluster.local
REDIS_DBINDEX: "10"
REDIS_HOSTNAME: redis.default.svc.cluster.local
REDIS_PORT: "6379"
TYPESENSE_HOST: immich-typesense.default.svc.cluster.local
TYPESENSE_DATA_DIR: /config
TYPESENSE_PORT: "8108"
TYPESENSE_PROTOCOL: http
REDIS_DBINDEX: "10"
IMMICH_WEB_URL: http://immich-web.default.svc.cluster.local:3000
IMMICH_SERVER_URL: http://immich-server.default.svc.cluster.local:3001
IMMICH_MACHINE_LEARNING_URL: http://immich-machine-learning.default.svc.cluster.local:3003

View File

@@ -8,7 +8,6 @@ resources:
- ./microservices
- ./machine-learning
- ./secret.sops.yaml
- ./redis
- ./server
- ./typesense
- ./volume.yaml

View File

@@ -1,44 +0,0 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: immich-redis
namespace: default
spec:
interval: 15m
chart:
spec:
chart: app-template
version: 1.4.0
sourceRef:
kind: HelmRepository
name: bjw-s
namespace: flux-system
maxHistory: 3
install:
createNamespace: true
remediation:
retries: 3
upgrade:
cleanupOnFail: true
remediation:
retries: 3
uninstall:
keepHistory: false
values:
image:
repository: public.ecr.aws/docker/library/redis
tag: 7.0.11
env:
REDIS_REPLICATION_MODE: master
command: ["redis-server"]
service:
main:
ports:
http:
port: 6379
resources:
requests:
cpu: 10m
memory: 10Mi

View File

@@ -1,6 +0,0 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./helmrelease.yaml

View File

@@ -10,7 +10,7 @@ metadata:
spec:
dependsOn:
- name: cluster-apps-cloudnative-pg-app
- name: cluster-apps-redis-lb
- name: cluster-apps-redis
path: ./kubernetes/apps/default/immich/app
prune: true
sourceRef:

View File

@@ -23,28 +23,3 @@ spec:
interval: 30m
retryInterval: 1m
timeout: 3m
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: cluster-apps-redis-lb
namespace: flux-system
labels:
substitution.flux.home.arpa/enabled: "true"
spec:
dependsOn:
- name: cluster-apps-redis
path: ./kubernetes/apps/default/redis/lb
prune: true
sourceRef:
kind: GitRepository
name: home-ops-kubernetes
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: redis-lb
namespace: default
interval: 30m
retryInterval: 1m
timeout: 3m

View File

@@ -1,88 +0,0 @@
global
daemon
maxconn 256
defaults
mode tcp
timeout connect 4s
timeout client 30s
timeout server 30s
retry-on all-retryable-errors
resolvers cluster_ns
parse-resolv-conf
hold valid 10s
hold other 30s
hold refused 30s
hold nx 30s
hold timeout 30s
hold obsolete 30s
resolve_retries 3
timeout retry 1s
timeout resolve 1s
frontend http
bind :8080
http-request use-service prometheus-exporter if { path /metrics }
default_backend stats
backend stats
mode http
stats enable
stats uri /
stats refresh 5s
stats show-legends
stats admin if TRUE
resolvers k8s
parse-resolv-conf
hold other 10s
hold refused 10s
hold nx 10s
hold timeout 10s
hold valid 10s
hold obsolete 10s
frontend redis-read
bind *:6380
default_backend redis-online
frontend redis-write
bind *:6379
default_backend redis-primary
frontend redis-sentinel
bind *:26379
default_backend redis-sentinel
backend redis-primary
balance first
option tcp-check
tcp-check connect port 6379
tcp-check send info\ replication\r\n
tcp-check expect string role:master
server redis-0 redis-node-0.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
server redis-1 redis-node-1.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
server redis-2 redis-node-2.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
backend redis-online
balance roundrobin
option tcp-check
tcp-check connect port 6379
tcp-check send PING\r\n
tcp-check expect string +PONG
server redis-0 redis-node-0.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
server redis-1 redis-node-1.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
server redis-2 redis-node-2.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
backend redis-sentinel
balance roundrobin
option tcp-check
tcp-check connect port 26379
tcp-check send PING\r\n
tcp-check expect string +PONG
server redis-0 redis-node-0.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
server redis-1 redis-node-1.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns
server redis-2 redis-node-2.redis-headless.default.svc.cluster.local check inter 5s resolvers cluster_ns

View File

@@ -1,86 +0,0 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helmrelease_v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: redis-lb
namespace: default
spec:
interval: 15m
chart:
spec:
chart: app-template
version: 1.4.0
sourceRef:
kind: HelmRepository
name: bjw-s
namespace: flux-system
maxHistory: 3
install:
createNamespace: true
remediation:
retries: 3
upgrade:
cleanupOnFail: true
remediation:
retries: 3
uninstall:
keepHistory: false
values:
controller:
replicas: 3
strategy: RollingUpdate
image:
repository: public.ecr.aws/docker/library/haproxy
tag: 2.8.0-alpine
service:
main:
type: LoadBalancer
loadBalacerIP: "${CLUSTER_LB_REDIS}"
externalTrafficPolicy: Local
ports:
http:
port: 8080
targetPort: 8080
redis-write:
port: 6379
targetPort: 6379
redis-read:
port: 6380
targetPort: 6380
redis-sentinel:
port: 26379
targetPort: 26379
serviceMonitor:
main:
enabled: true
endpoints:
- port: http
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
ingress:
main:
enabled: true
ingressClassName: nginx
annotations:
hajimari.io/icon: simple-icons:redis
hosts:
- host: redis-lb.${SECRET_CLUSTER_DOMAIN}
paths:
- path: /
pathType: Prefix
podSecurityContext:
runAsUser: 99
runAsGroup: 99
fsGroup: 99
fsGroupChangePolicy: "OnRootMismatch"
persistence:
config:
enabled: true
type: configMap
name: redis-lb-configmap # overriden by kustomizeconfig
mountPath: /usr/local/etc/haproxy/haproxy.cfg
subPath: haproxy.cfg
readOnly: true

View File

@@ -1,13 +0,0 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: default
resources:
- helmrelease.yaml
configMapGenerator:
- name: redis-lb-configmap
files:
- haproxy.cfg=./config/haproxy.cfg
configurations:
- ./patches/kustomizeconfig.yaml

View File

@@ -1,7 +0,0 @@
---
nameReference:
- kind: ConfigMap
version: v1
fieldSpecs:
- path: spec/values/persistence/config/name
kind: HelmRelease