cloudflared: aggressive reconnects, always-pull latest, restricted PSS compliance
- imagePullPolicy: Always so :latest actually tracks upstream (nodes were running two different cached digests) - --retries 1: supervisor retries forever; this caps the jittered backoff at ~2s instead of the exponential 1..32s ramp - liveness failureThreshold 30: let cloudflared's own fast retry loop reconnect instead of killing pods into exponential CrashLoopBackOff (pods had 300+ restarts) - maxSurge 0 / maxUnavailable 1: required anti-affinity on 3 workers deadlocked surge-based rollouts - securityContext for restricted:latest PodSecurity (nonroot 65532, drop ALL caps, no privilege escalation, RuntimeDefault seccomp) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
8c94ca0d09
commit
514b346662
1 changed files with 28 additions and 1 deletions
|
|
@ -6,6 +6,13 @@ metadata:
|
||||||
namespace: cloudflared
|
namespace: cloudflared
|
||||||
spec:
|
spec:
|
||||||
replicas: 3
|
replicas: 3
|
||||||
|
# With required anti-affinity and 3 worker nodes, a surge pod can never
|
||||||
|
# schedule — replace in place instead.
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 0
|
||||||
|
maxUnavailable: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: cloudflared
|
app: cloudflared
|
||||||
|
|
@ -24,12 +31,19 @@ spec:
|
||||||
containers:
|
containers:
|
||||||
- name: cloudflared
|
- name: cloudflared
|
||||||
image: cloudflare/cloudflared:latest
|
image: cloudflare/cloudflared:latest
|
||||||
imagePullPolicy: IfNotPresent
|
# Always pull so :latest actually tracks upstream instead of a
|
||||||
|
# per-node cached digest
|
||||||
|
imagePullPolicy: Always
|
||||||
args:
|
args:
|
||||||
- tunnel
|
- tunnel
|
||||||
- --no-autoupdate
|
- --no-autoupdate
|
||||||
- --metrics
|
- --metrics
|
||||||
- 0.0.0.0:2000
|
- 0.0.0.0:2000
|
||||||
|
# Reconnects retry forever; --retries caps the backoff interval
|
||||||
|
# (1s * 2^retries, jittered). 1 = retry every ~2s max, no
|
||||||
|
# exponential growth.
|
||||||
|
- --retries
|
||||||
|
- "1"
|
||||||
- run
|
- run
|
||||||
env:
|
env:
|
||||||
- name: TUNNEL_TOKEN
|
- name: TUNNEL_TOKEN
|
||||||
|
|
@ -37,6 +51,15 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: tunnel-token
|
name: tunnel-token
|
||||||
key: token
|
key: token
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 65532
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
ports:
|
ports:
|
||||||
- name: metrics
|
- name: metrics
|
||||||
containerPort: 2000
|
containerPort: 2000
|
||||||
|
|
@ -47,6 +70,10 @@ spec:
|
||||||
port: 2000
|
port: 2000
|
||||||
initialDelaySeconds: 10
|
initialDelaySeconds: 10
|
||||||
periodSeconds: 10
|
periodSeconds: 10
|
||||||
|
# Tolerate long edge outages: let cloudflared's own fast retry
|
||||||
|
# loop reconnect instead of killing the pod into CrashLoopBackOff
|
||||||
|
# (which backs off exponentially up to 5m).
|
||||||
|
failureThreshold: 30
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "64Mi"
|
memory: "64Mi"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue