Multi-tenant EKS? For shared clusters reconciling
RunlayerInstance + MCPServer CRs, use the Runlayer Operator chart instead of anysource-chart.AWS EKS with Terraform (Recommended for Production)
For AWS production deployments, use the Terraform EKS module to provision infrastructure, then deploy the application with Helm. This provides better separation of concerns and security.New to EKS deployment? See the comprehensive EKS + Terraform deployment guide for detailed instructions on provisioning EKS infrastructure.
Quick Start: EKS + Helm
Step 1: Provision EKS Infrastructure- Managed Infrastructure: RDS, ElastiCache, VPC, IAM roles
- Security: IRSA, ALB with ACM certificates, private subnets
- Scalability: Auto-scaling groups, load balancing
- Monitoring: CloudWatch integration
AWS IAM Role Configuration
For AWS production deployments, you’ll need to create an IAM role with the following configuration:Required Permissions
The role must have the following Bedrock permissions:One-time AWS step. Anthropic requires a use case details form before its models can be invoked in an AWS account, and Runlayer Assistant always routes through Bedrock — so this applies even when
BEDROCK_ENABLED is false.Submit it in the account the Bedrock calls come from (your deployment’s account, or the account behind a Bedrock AI provider role you configure): Bedrock console → Model catalog → any Anthropic model → Submit use case details. AWS accepts it once per account, or once at your AWS Organization’s management account — member accounts inherit that.Deploying outside the US? Also set RUNLAYER_ASSISTANT_BEDROCK_MODEL to your geography’s inference profile, for example au.anthropic.claude-opus-4-6-v1 in ap-southeast-2.If skipped, this leaves Bedrock-backed agents failing with Model use case details have not been submitted for this account — see troubleshooting for the CLI checks and Region caveats.Trust Policy
The role must have this trust policy to allow EKS service account access:<aws_account_id>with your AWS account ID<oidc_id>with your EKS cluster’s OIDC provider ID<anysource_namespace>with your deployment namespace
Configure in Values
Set the role ARN in your values file:Overview
Deploy Runlayer on Kubernetes clusters using Helm charts. This guide covers multiple deployment patterns:- AWS EKS + Terraform (Recommended): Provision infrastructure with Terraform, deploy application with Helm
- Development: Use embedded databases for local testing
- Production: External databases with high availability
infra/aws-helm/anysource-chart/
AWS Production Architecture
The recommended AWS production deployment separates infrastructure provisioning from application deployment. The Terraform EKS module supports three deployment modes:- Full Stack: Create new VPC + new EKS cluster + application infrastructure
- Existing VPC: Use existing VPC + create new EKS cluster + application infrastructure
- Existing EKS: Use existing VPC + existing EKS cluster + application infrastructure only
For AWS production, first provision infrastructure with EKS Terraform
module, then deploy the application with this Helm
chart. This separation provides better security, scalability, and operational
control.
Quick Start
Step 1: Navigate to the Helm chart- Minimal (Recommended)
- Custom Configuration
Get production-ready deployment with just 5 parameters:That’s it! You get production-ready defaults for everything else.
Deployment Telemetry: The chart automatically sends deployment completion events to Sentry via Helm hooks for observability. Use
--atomic --wait flags to ensure both success and failure events are captured. Telemetry gracefully degrades if SENTRY_DSN is not configured.Configuration Options
Prerequisites
1
Kubernetes Cluster
- Kubernetes 1.19+
- Sufficient resources (4+ CPU cores, 8+ GB RAM)
- Storage class for persistent volumes
- Load balancer support (for ingress)
2
Required Tools
3
AWS Production Requirements
- EKS cluster with AWS Load Balancer Controller
- External RDS PostgreSQL and ElastiCache Redis
- AWS ACM certificate
- IAM role with Bedrock permissions and EKS OIDC trust policy
4
Ingress Controller (Required)
5
Cert-Manager (Optional)
Deployment
1. Add Required Repositories
2. Configure Values
Copy and customize the example values file:3. Deploy Runlayer
- Using Chart Directory (Iteration)
- Using Packaged Chart (Production)
Deploy directly from the chart source:Best for testing chart changes in non-production environments.
Deployment takes 5-10 minutes. SSL certificate provisioning may add 2-5
minutes.
4. Verify
Configuration
Copyvalues.example.yaml to create your environment-specific values file:
Required Configuration
Set these values in your values file:Database Configuration
Embedded PostgreSQL (Development):readerHost to your RDS reader endpoint to offload read-heavy queries (audit logs, analytics) to a read replica. When omitted, all traffic goes to the primary host.
Existing Backend Secret
By default the chart creates a Kubernetes Secret from the values inbackend.secrets. To reference a pre-existing Secret instead (useful when secrets are managed by an external operator or Vault):
SECRET_KEY, MASTER_SALT, AUTH_API_KEY, and optionally SENTRY_DSN). When existingSecret is set, backend.secrets values are ignored.
Audit Log Spool
The backend’s local audit-log spool is enabled by default (backend.auditSpool.enabled: true). Audit records are appended to a spool on the pod’s local disk and delivered asynchronously by an in-process tailer, so requests through the MCP proxy do not wait on audit delivery. Records are typically delivered within seconds, and delivery is at-least-once with deduplication. If the spool cannot keep up or its disk budget fills, individual records fall back to inline delivery on the request path, so nothing is lost to backpressure.
Two things to verify:
- Node-disk encryption. The spool briefly holds pre-redaction audit payloads at rest, in an
emptyDirvolume on the node’s disk. Encrypted worker-node volumes are a hard requirement — the same guarantee Fargate’s encrypted ephemeral storage provides automatically on ECS deployments. Use encrypted EBS on EKS (managed node groups with encrypted AMIs/volumes, or account-level EBS encryption by default). The chart cannot verify node-disk encryption at render time, so this precondition is documented rather than enforced. backend.terminationGracePeriodSecondsfeeds the shutdown drain window. When a backend pod stops, it drains the remaining spool forterminationGracePeriodSeconds - 30s; records not delivered before that window expires are lost with the pod. The chart refuses to render with the spool enabled and a grace period of 30 seconds or less.
backend.auditSpool.enabled: false and redeploy. New pods write audit logs inline again, and each old pod drains its residual spool within its shutdown drain window as it stops; backlog beyond that window is discarded. No data migration is needed in either direction.
Custom Trusted CA Bundle
If outbound HTTPS traffic passes through an enterprise proxy that terminates TLS with a private CA, mount the CA certificate so the backend trusts the proxy:Certificate Management
AWS ACM (Recommended for AWS):Architecture
Commands
Install/Upgrade
- Using Chart Directory
- Using Packaged Chart (.tgz)
Deploy directly from the chart directory:Use this when developing or testing chart changes locally.
Uninstall
Debug
Deployment Telemetry
The Helm chart automatically reports deployment status to Sentry via Helm hooks for observability and debugging.How It Works
The chart includes Helm hook Jobs that run automatically after each deployment:- post-upgrade hook: Sends success event after successful deployment
- post-rollback hook: Sends failure event if deployment fails (triggered by
--atomicflag)
SENTRY_DSN is not configured.
Key Features
- Automatic: No wrapper scripts needed - hooks run on every
helm upgrade - Secure: SENTRY_DSN only exposed to short-lived hook Jobs, not long-running pods
- Reliable: Exactly one event per deployment outcome (no duplicates on pod restarts)
- Non-blocking: Telemetry failures don’t impact deployment success
Configuration
Telemetry settings are read from your values file:What Gets Reported
Each deployment event includes:- Deployment status (success/failure)
- Customer ID (from
global.domain) - Infrastructure version (from
global.deployment.infraVersion) - Environment (from
global.environment) - Deployment duration and timestamp
- Operator and hostname metadata
Disabling Telemetry
To disable telemetry hooks, set in your values file:Advanced: Pre-Deployment Diff Telemetry
For pre-deployment diff capture (optional), use the wrapper script:Recommended: Always use
--atomic --wait flags with helm upgrade to ensure:- Deployments roll back automatically on failure
- The post-rollback hook captures failure telemetry
- Kubernetes waits for pods to be ready before marking success
Troubleshooting
Check Status
View Logs
Check Events
Support
For issues and questions, contact the Runlayer team at team@runlayer.comNext Steps
AWS EKS Provisioning
Use our Terraform EKS module to provision production-grade infrastructure:
EKS clusters, RDS, ElastiCache, VPC, IAM roles, and monitoring. Then deploy
applications with this Helm chart.