The team replaced a year‑old, community‑maintained Helm chart for n8n on Amazon EKS with the official n8n Helm chart. The key change was moving the main n8n pod from a StatefulSet with per‑replica volumes to a Deployment that expects a single shared PVC, which in practice was disabled because no state needed to survive pod restarts. Practitioners care because the change alters persistence requirements, upgrade mechanics, and the way secrets are injected.
n8n on EKS: New Deployment Model
The community chart implemented the main instance as a StatefulSet with one gp3 ReadWriteOnce volume per replica. This avoided the multi‑attach limitation of AWS EBS when scaling the main pod. Workers and webhook processors already ran as Deployments. The official chart flips the model: the main instance runs as a Deployment and, by default, expects a single shared PersistentVolumeClaim. Because a gp3 volume cannot attach to multiple nodes simultaneously, the migration required a full cut‑over rather than an in‑place Helm upgrade. The team disabled main‑pod persistence entirely, confirming that all durable data resides in external services.
Why the Change Matters for Practitioners
AI engineers, platform engineers, and SREs often rely on n8n for webhook handling, data pipelines, and RAG workloads. The shift to the official chart brings three practical benefits:
- Supported upgrade path: Ongoing maintenance and community backing reduce the risk of drift and untested patches.
- Clear separation of state: All workflow metadata, execution logs, queued jobs, and binary assets are stored in PostgreSQL, Redis, and S3 respectively, eliminating hidden state on the main pod.
- Consistent secret management: Secrets remain in
AWS Secrets Managerand are synced into Kubernetes viaExternal Secrets Operator, preserving a single source of truth.
Architecture and Operational Implications
The migration reinforced a pattern where the application itself is stateless and all persistence lives in managed services. Key implications include:
- Persistence strategy: With main‑pod storage disabled, scaling the main component no longer requires additional EBS volumes. Operators can add replicas without worrying about volume attachment errors.
- Upgrade discipline: The team kept the n8n container image version constant during the cut‑over to avoid triggering database migrations. Future version bumps should be tested in a non‑production environment with a restored database snapshot.
- Rollback readiness: Prior to the cut‑over, a full database snapshot was taken and rollback procedures were validated in a staging cluster. This practice is essential when the underlying chart changes the pod model.
- Secret synchronization: Using
External Secrets Operatorensures that API keys, encryption keys, and environment variables are pulled from Secrets Manager at pod start, reducing the attack surface of static Kubernetes Secrets. - Ingress separation: Public and internal webhook traffic continue to be routed through distinct load balancers, preserving the traffic isolation strategy already in place.
Related CloudNinjas coverage: hands-on guides.
What This Means For Practitioners
When moving to the official n8n Helm chart on EKS, verify that no critical data resides on the main pod’s volume and that all state is externalized. Disable main‑pod persistence if the external services already hold the required data. Use a controlled cut‑over: snapshot the database, test a full restore, keep the container image version stable, and validate rollback in a non‑production cluster. Continue to rely on AWS Secrets Manager plus External Secrets Operator for secret injection, and maintain separate ingress paths for public versus private webhooks. This approach minimizes upgrade friction, aligns with the official chart’s expectations, and keeps the deployment reproducible and secure.



