mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-21 05:26:49 +00:00
Reduce replicas to 1 for workloads that don't need HA in a homelab: - Prometheus 2→1, Alertmanager 2→1 (~4.4GB RAM saved) - cert-manager 3→1 - GitLab: registry 2→1, kas 2→1, sidekiq 2→1, praefect 2→1, pgbouncer-ro 3→1 - Guacamole + guacd 2→1 - Kiali 2→1, ArgoCD server 2→1 - Kyverno background-controller 2→1 - Scylla operator 2→1 - ext-authz-proxy 2→1, netbird-cluster-router 2→1 Kept multi-replica: coredns, envoy-gateway, kyverno admission, vault, argocd-repo-server, gitlab-webservice, istiod, rook-ceph CSI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
117 lines
3.0 KiB
YAML
117 lines
3.0 KiB
YAML
---
|
|
# PgBouncer Pooler for GitLab PostgreSQL
|
|
# Managed by CloudNativePG Operator
|
|
apiVersion: postgresql.cnpg.io/v1
|
|
kind: Pooler
|
|
metadata:
|
|
name: pgbouncer-gitlab
|
|
namespace: gitlab
|
|
spec:
|
|
cluster:
|
|
name: pg-gitlab
|
|
|
|
# Number of PgBouncer instances (keep small; GitLab points directly at CNPG RW service)
|
|
instances: 1
|
|
|
|
# PgBouncer configuration
|
|
type: rw # Read-Write pooler (connects to primary)
|
|
|
|
pgbouncer:
|
|
poolMode: transaction
|
|
authQuerySecret:
|
|
name: pg-gitlab-app
|
|
# Use custom user_search function for SCRAM-SHA-256 authentication
|
|
# This function is created by gitlab-bootstrap.sh script
|
|
authQuery: "SELECT usename, passwd FROM public.user_search($1)"
|
|
|
|
parameters:
|
|
max_client_conn: "2000"
|
|
default_pool_size: "50"
|
|
reserve_pool_size: "10"
|
|
server_idle_timeout: "600" # Keep connections alive for 10 minutes
|
|
log_connections: "1"
|
|
log_disconnections: "1"
|
|
log_pooler_errors: "1"
|
|
stats_period: "60"
|
|
|
|
# Template for PgBouncer pods
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: pgbouncer-gitlab
|
|
spec:
|
|
containers:
|
|
- name: pgbouncer
|
|
resources:
|
|
requests:
|
|
cpu: 25m
|
|
memory: 256Mi
|
|
limits:
|
|
memory: 512Mi
|
|
|
|
# Anti-affinity to spread PgBouncer pods across nodes
|
|
affinity:
|
|
podAntiAffinity:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
- weight: 100
|
|
podAffinityTerm:
|
|
labelSelector:
|
|
matchLabels:
|
|
app: pgbouncer-gitlab
|
|
topologyKey: kubernetes.io/hostname
|
|
---
|
|
# Read-only Pooler for Database Load Balancing
|
|
apiVersion: postgresql.cnpg.io/v1
|
|
kind: Pooler
|
|
metadata:
|
|
name: pgbouncer-gitlab-ro
|
|
namespace: gitlab
|
|
spec:
|
|
cluster:
|
|
name: pg-gitlab
|
|
|
|
instances: 1
|
|
|
|
type: ro # Read-Only pooler (connects to replicas)
|
|
|
|
pgbouncer:
|
|
poolMode: transaction
|
|
authQuerySecret:
|
|
name: pg-gitlab-app
|
|
# Use custom user_search function for SCRAM-SHA-256 authentication
|
|
# This function is created by gitlab-bootstrap.sh script
|
|
authQuery: "SELECT usename, passwd FROM public.user_search($1)"
|
|
|
|
parameters:
|
|
max_client_conn: "2000"
|
|
default_pool_size: "50"
|
|
reserve_pool_size: "10"
|
|
max_db_connections: "100"
|
|
server_idle_timeout: "600" # Keep connections alive for 10 minutes
|
|
log_connections: "1"
|
|
log_disconnections: "1"
|
|
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: pgbouncer-gitlab-ro
|
|
spec:
|
|
containers:
|
|
- name: pgbouncer
|
|
resources:
|
|
requests:
|
|
cpu: 25m
|
|
memory: 256Mi
|
|
limits:
|
|
memory: 512Mi
|
|
|
|
affinity:
|
|
podAntiAffinity:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
- weight: 100
|
|
podAffinityTerm:
|
|
labelSelector:
|
|
matchLabels:
|
|
app: pgbouncer-gitlab-ro
|
|
topologyKey: kubernetes.io/hostname
|