Files
homeprod/kubernetes/infrastructure/caddy/values.yaml
T

209 lines
7.2 KiB
YAML

# Caddy Edge Proxy
replicaCount: 2
# Listen on standard HTTP port
listenPort: 80
# Enable HTTPS
https:
enabled: true
port: 443
image:
repository: caddy
pullPolicy: IfNotPresent
tagSuffix: ""
tag: 2.11.7
service:
type: LoadBalancer
# Cluster (not Local) so any node can forward to pods on any other node.
externalTrafficPolicy: Cluster
# Disable ingress - Caddy IS the edge proxy
ingress:
enabled: false
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
# Caddy needs root to bind to ports 80/443 and write runtime data
# Using restrictive security context causes "operation not permitted"
podSecurityContext: {}
securityContext: {}
health:
path: /
port: 9999
# Extra volumes: TLS certificates from cert-manager + external routes ConfigMap
volumes:
- name: vhaudiquet-fr-tls
secret:
secretName: vhaudiquet-fr-tls
optional: true
- name: wildcard-vhaudiquet-fr-tls
secret:
secretName: wildcard-vhaudiquet-fr-tls
optional: true
# semery.fr certs from cert-manager (OVH DNS-01)
- name: semery-fr-tls
secret:
secretName: semery-fr-tls
optional: true
- name: wildcard-semery-fr-tls
secret:
secretName: wildcard-semery-fr-tls
optional: true
- name: buildpath-win-tls
secret:
secretName: buildpath-win-tls
optional: true
# saggar.dev cert from cert-manager (Porkbun DNS-01)
- name: saggar-dev-tls
secret:
secretName: saggar-dev-tls
optional: true
- name: api-saggar-dev-tls
secret:
secretName: api-saggar-dev-tls
optional: true
# docs.saggar.dev cert — the saggar book (static nginx)
- name: docs-saggar-dev-tls
secret:
secretName: docs-saggar-dev-tls
optional: true
# get.saggar.dev cert — the saggar distribution host (garage web)
- name: get-saggar-dev-tls
secret:
secretName: get-saggar-dev-tls
optional: true
# rhema.rs certs from cert-manager (Cloudflare DNS-01)
- name: rhema-rs-tls
secret:
secretName: rhema-rs-tls
optional: true
- name: www-rhema-rs-tls
secret:
secretName: www-rhema-rs-tls
optional: true
- name: get-rhema-rs-tls
secret:
secretName: get-rhema-rs-tls
optional: true
- name: s3-rhema-rs-tls
secret:
secretName: s3-rhema-rs-tls
optional: true
- name: routes
configMap:
name: caddy-routes
# Extra volume mounts - each secret mounted as a directory with tls.crt/tls.key
volumeMounts:
- name: vhaudiquet-fr-tls
mountPath: /etc/caddy/certs/vhaudiquet-fr
readOnly: true
- name: wildcard-vhaudiquet-fr-tls
mountPath: /etc/caddy/certs/wildcard-vhaudiquet-fr
readOnly: true
- name: semery-fr-tls
mountPath: /etc/caddy/certs/semery-fr
readOnly: true
- name: wildcard-semery-fr-tls
mountPath: /etc/caddy/certs/wildcard-semery-fr
readOnly: true
- name: buildpath-win-tls
mountPath: /etc/caddy/certs/buildpath-win
readOnly: true
- name: saggar-dev-tls
mountPath: /etc/caddy/certs/saggar-dev
readOnly: true
- name: api-saggar-dev-tls
mountPath: /etc/caddy/certs/api-saggar-dev
readOnly: true
- name: docs-saggar-dev-tls
mountPath: /etc/caddy/certs/docs-saggar-dev
readOnly: true
- name: get-saggar-dev-tls
mountPath: /etc/caddy/certs/get-saggar-dev
readOnly: true
- name: rhema-rs-tls
mountPath: /etc/caddy/certs/rhema-rs
readOnly: true
- name: www-rhema-rs-tls
mountPath: /etc/caddy/certs/www-rhema-rs
readOnly: true
- name: get-rhema-rs-tls
mountPath: /etc/caddy/certs/get-rhema-rs
readOnly: true
- name: s3-rhema-rs-tls
mountPath: /etc/caddy/certs/s3-rhema-rs
readOnly: true
- name: routes
mountPath: /etc/caddy/routes
readOnly: true
# Caddy configuration
config:
debug: false
# Global options (goes inside the global {} block)
global: |
auto_https off
# The main Caddyfile content - imports routes from external ConfigMap
# This keeps routes in a separate, easily editable file
caddyFile: |
:80 {
redir https://{host}{uri} permanent
}
import /etc/caddy/routes/Caddyfile
affinity:
# Prefer non-failover nodes in normal operation
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: ENC[AES256_GCM,data:AsOdq9OGQbAGV42W4d22EGVMi5E=,iv:U3sLu8pI7fqOPbvpfpVz21cUfwovKRFi8jY6laTyStY=,tag:EQVSFAzTYw2En2xdGTCF3Q==,type:str]
operator: NotIn
values:
- "true"
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/name: caddy
topologyKey: kubernetes.io/hostname
tolerations:
# Tolerate the failover taint so caddy CAN schedule on p330 (small-node-1).
- key: ENC[AES256_GCM,data:s3X0PmRJCCVh,iv:UYZl3EsmdSTdF9NoYsL+zbxLlkfO2GU80Sy3CpSXMBY=,tag:35UtC37ldCItR9fAtSXVVw==,type:str]
operator: Equal
value: failover
effect: NoSchedule
- key: ENC[AES256_GCM,data:NYCyZsj7wMxKUjaDu+rUOQYxDKvvEwSWuDAxQkSGTczXyApCbw==,iv:3AcvLXryeZ6dfmqanFpGOgEf1nGuEVbvUmZzruxzL98=,tag:Daa9AgXQZkkr7RIzljWOeQ==,type:str]
operator: Exists
effect: NoSchedule
sops:
lastmodified: "2026-10-16T07:06:11Z"
mac: ENC[AES256_GCM,data:kMIxep2WVIr8/uAiw12T1JXMbtpyijo1c1MOOUKuok2Z1zSrnFZovgIup3u8/2BhqJ2UUDm5hFJi41Tsq45ba5ELs4PX1whi6EXlHQJxNo7ScfepEi10es/wa+p+3w9V8Yv9cklIWk14zh0UABs8jRzOJXhn5XI3O644CJSULQA=,iv:3ssxqRNRvXbmn0HiQFdwoGVbsnzvtQxfpHPIUpplMK8=,tag:5VRyB/Hh4tZUWp6KCPNSQg==,type:str]
pgp:
- created_at: "2026-10-16T07:06:11Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA7uy4qQr71wiARAAuN5nBauJiH5bFx80iF2W2XJDwMCFG+SPlqv2ErxVaYkD
kSt8pA0o4Bzqr6gP6cEgEhzQHAVVvsvTZJTY5lX6KWNRxhz/RXDhxAi9xdBHQ81f
dDWn7pgD8sv8cODM39yeukhGlHxZuk7FiUJ4fBnouojWUCxf2Ib5m5TEaWwmmv5n
EBBjjcbGZzyWBzCkLbEY/ML1FIx5j/jyZjpjMp2En1309ljIBckjLk5s9Kntp6oJ
/TkW/BhU96y8fyGM6u3FV54wORNlCT3P5cDT4rsQd+KgG0DDchAdUSb7hmBEn+iC
W/eUsp7nhObkZZBjTKYeS502Q+3RUEXoLnVLWougDxMSA1rJNS3nkgzK1cmKs97/
Ghnb5TUGPmoQMUltQzxInDq1mgeGfuFUffprYprYKGeVC/oQ6uPHE4jVZImlWRjv
w6YPHv/2XhWMN5vH/ybsrqxcFb5+1z8u8J58GAJ37hDXzkL8ENJUouonM3sywaBc
VbXHzJwYEuLhRfNpay6ovwPkhU25gV3atBiXloIWc0PivPjOAJqqs0vkMgRiA+3R
yUagVKdyavVUhqou2LOxSGSv77uFPWZwhqUILtqzTeSE6GHUxVqKQPa91klRRNI7
YWNtM7ZqSeANK99h5vgphhPZpuKkIzXHSLEXdplxvaRERfWMU3UGCDZOMVcDMlbS
XgGovkHZ9+NKVgZVpsRyQQutbSJqvHVZJx162gu3UKC1IgnDnhslOGKVWw/oKNb5
KyPf0CLk9BCAlSngr5D5pw4GJ9eq7RNFOqC32LPwXgNSD1AfLFHYGWh3RZM+81w=
=eA3w
-----END PGP MESSAGE-----
fp: DC6910268E657FF70BA7EC289974494E76938DDC
encrypted_regex: ^(data|stringData|.*key|.*crt)$
version: 3.10.2