2af1ed39a7
Helm Chart Release / release-chart (push) Successful in 4s
Root cause: Docker Hub sorts tags by last_updated (non-monotonic). Some versions (e.g. 2.24.x) had older last_updated than 2.23.4, so they fell off page 1 and were never detected. Workflow stuck at 2.22.2. Fix: - Primary source: GitHub Releases API (stable releases, per_page=30) - Secondary source: Docker Hub page 1 (catches releases before GitHub promotes them) - Take the maximum of both candidates - Sanity check: LATEST must be >= CURRENT to prevent false downgrades - Added --retry 3 and .draft==false filter to GitHub source Also bump chart and image to 2.26.3 (manual catch-up from 2.22.2). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
210 lines
4.1 KiB
YAML
210 lines
4.1 KiB
YAML
# Default values for n8n
|
|
# This is a YAML-formatted file.
|
|
# Declare variables to be passed into your templates.
|
|
|
|
replicaCount: 1
|
|
|
|
image:
|
|
registry: docker.io
|
|
repository: n8nio/n8n
|
|
tag: "2.26.3"
|
|
pullPolicy: IfNotPresent
|
|
|
|
imagePullSecrets: []
|
|
nameOverride: ""
|
|
fullnameOverride: ""
|
|
|
|
serviceAccount:
|
|
create: true
|
|
annotations: {}
|
|
name: ""
|
|
|
|
podAnnotations: {}
|
|
|
|
podSecurityContext:
|
|
fsGroup: 1000
|
|
runAsNonRoot: true
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
readOnlyRootFilesystem: false
|
|
runAsNonRoot: true
|
|
runAsUser: 1000
|
|
|
|
service:
|
|
type: LoadBalancer
|
|
# type: ClusterIP
|
|
port: 5678
|
|
targetPort: 5678
|
|
annotations: {}
|
|
|
|
ingress:
|
|
enabled: false
|
|
className: "nginx"
|
|
annotations: {}
|
|
# {
|
|
# acme.cert-manager.io/http01-ingress-class: "nginx",
|
|
# cert-manager.io/cluster-issuer: "letsencrypt-issuer",
|
|
# nginx.ingress.kubernetes.io/from-to-www-redirect: "true",
|
|
# nginx.ingress.kubernetes.io/proxy-body-size: "100m"
|
|
# }
|
|
hosts:
|
|
- host: n8n.local
|
|
paths:
|
|
- path: /
|
|
pathType: Prefix
|
|
tls: []
|
|
# - secretName: n8n-tls
|
|
# hosts:
|
|
# - n8n.local
|
|
|
|
# Resource limits suitable for Raspberry Pi
|
|
resources:
|
|
limits:
|
|
cpu: 1000m
|
|
memory: 512Mi
|
|
requests:
|
|
cpu: 250m
|
|
memory: 256Mi
|
|
|
|
autoscaling:
|
|
enabled: false
|
|
minReplicas: 1
|
|
maxReplicas: 3
|
|
targetCPUUtilizationPercentage: 80
|
|
targetMemoryUtilizationPercentage: 80
|
|
|
|
nodeSelector: {}
|
|
|
|
tolerations: []
|
|
|
|
affinity:
|
|
podAntiAffinity:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
- weight: 100
|
|
podAffinityTerm:
|
|
labelSelector:
|
|
matchExpressions:
|
|
- key: app.kubernetes.io/name
|
|
operator: In
|
|
values:
|
|
- n8n
|
|
topologyKey: kubernetes.io/hostname
|
|
|
|
# n8n specific configuration
|
|
n8n:
|
|
# Encryption key for stored credentials (auto-generated if not provided)
|
|
encryptionKey: ""
|
|
existingSecret: ""
|
|
|
|
# Host and protocol settings (used for webhook URLs)
|
|
host: "n8n.local"
|
|
protocol: "http"
|
|
# webhookUrl: "https://n8n.example.com/"
|
|
|
|
# Timezone
|
|
timezone: "Asia/Tokyo"
|
|
|
|
# Log level: error, warn, info, verbose, debug
|
|
logLevel: "info"
|
|
|
|
# Basic authentication
|
|
basicAuth:
|
|
enabled: false
|
|
user: "admin"
|
|
password: ""
|
|
existingSecret: ""
|
|
passwordKey: "basic-auth-password"
|
|
|
|
# Execution data pruning
|
|
executions:
|
|
pruneData: true
|
|
pruneDataMaxAge: 336 # hours (14 days)
|
|
pruneDataMaxCount: 10000
|
|
|
|
# Database configuration
|
|
database:
|
|
# type: sqlite (default) or postgresdb
|
|
type: "sqlite"
|
|
# PostgreSQL settings (used when type=postgresdb)
|
|
postgresdb:
|
|
host: "postgres.default.svc.cluster.local"
|
|
port: 5432
|
|
database: "n8n"
|
|
user: ""
|
|
password: ""
|
|
existingSecret: ""
|
|
passwordKey: "postgres-password"
|
|
|
|
# Extra environment variables
|
|
extraEnv: {}
|
|
# extraEnv:
|
|
# N8N_METRICS: "true"
|
|
# N8N_DIAGNOSTICS_ENABLED: "false"
|
|
|
|
# Persistent storage for n8n data (workflows, credentials, sqlite DB)
|
|
persistence:
|
|
enabled: true
|
|
storageClass: ""
|
|
accessMode: ReadWriteOnce
|
|
size: 5Gi
|
|
annotations: {}
|
|
# existingClaim: ""
|
|
|
|
# Liveness and readiness probes
|
|
livenessProbe:
|
|
enabled: true
|
|
initialDelaySeconds: 60
|
|
periodSeconds: 30
|
|
timeoutSeconds: 10
|
|
failureThreshold: 6
|
|
successThreshold: 1
|
|
|
|
readinessProbe:
|
|
enabled: true
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 10
|
|
timeoutSeconds: 5
|
|
failureThreshold: 3
|
|
successThreshold: 1
|
|
|
|
# Network Policy
|
|
networkPolicy:
|
|
enabled: false
|
|
policyTypes:
|
|
- Ingress
|
|
- Egress
|
|
ingress:
|
|
- from:
|
|
- namespaceSelector:
|
|
matchLabels:
|
|
name: ingress-nginx
|
|
ports:
|
|
- protocol: TCP
|
|
port: 5678
|
|
egress:
|
|
- to:
|
|
- namespaceSelector: {}
|
|
ports:
|
|
- protocol: TCP
|
|
port: 443
|
|
- protocol: TCP
|
|
port: 80
|
|
- to:
|
|
- namespaceSelector:
|
|
matchLabels:
|
|
name: kube-system
|
|
ports:
|
|
- protocol: UDP
|
|
port: 53
|
|
|
|
# Pod Disruption Budget
|
|
podDisruptionBudget:
|
|
enabled: true
|
|
minAvailable: 1
|