Files
homelab-manifests/control-system/reloader.yaml
Renovate Bot 22d5c38bac
renovate/stability-days Updates have not met minimum release age requirement
Update ghcr.io/stakater/reloader Docker tag to v1.4.17
2026-06-06 08:33:03 +00:00

223 lines
4.5 KiB
YAML

# Reloader - Automatically restarts pods when ConfigMaps/Secrets change
# https://github.com/stakater/Reloader
# Namespace: control-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: reloader
namespace: control-system
labels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
---
# Role for Reloader's own namespace (for leader election configmap)
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: reloader-leader-election
namespace: control-system
labels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- list
- get
- watch
- create
- update
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- list
- get
- watch
- create
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: reloader-leader-election
namespace: control-system
labels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: reloader-leader-election
subjects:
- kind: ServiceAccount
name: reloader
namespace: control-system
---
# ClusterRole for watching ConfigMaps/Secrets and updating workloads across all namespaces
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: reloader
labels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
rules:
- apiGroups:
- ""
resources:
- secrets
- configmaps
verbs:
- list
- get
- watch
- apiGroups:
- apps
resources:
- deployments
- daemonsets
- statefulsets
verbs:
- list
- get
- update
- patch
- apiGroups:
- extensions
resources:
- deployments
- daemonsets
verbs:
- list
- get
- update
- patch
- apiGroups:
- batch
resources:
- cronjobs
verbs:
- list
- get
- apiGroups:
- batch
resources:
- jobs
verbs:
- create
- delete
- list
- get
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: reloader
labels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: reloader
subjects:
- kind: ServiceAccount
name: reloader
namespace: control-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: reloader
namespace: control-system
labels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
app.kubernetes.io/version: "v1.4.12"
spec:
replicas: 1
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
template:
metadata:
labels:
app.kubernetes.io/name: reloader
app.kubernetes.io/instance: reloader
app.kubernetes.io/version: "v1.4.12"
spec:
serviceAccountName: reloader
securityContext:
runAsNonRoot: true
runAsUser: 65534
seccompProfile:
type: RuntimeDefault
containers:
- name: reloader
image: ghcr.io/stakater/reloader:v1.4.17
imagePullPolicy: IfNotPresent
env:
- name: GOMAXPROCS
valueFrom:
resourceFieldRef:
divisor: "1"
resource: limits.cpu
- name: GOMEMLIMIT
valueFrom:
resourceFieldRef:
divisor: "1"
resource: limits.memory
- name: RELOADER_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: RELOADER_DEPLOYMENT_NAME
value: reloader
ports:
- name: http
containerPort: 9090
protocol: TCP
resources:
requests:
cpu: 10m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
livenessProbe:
httpGet:
path: /live
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
readinessProbe:
httpGet:
path: /metrics
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL