Deploy Natoma On-Prem (Amazon EKS)
Deploy the Natoma on-premises agent on Amazon EKS using a Helm chart pulled from Natoma's ECR repository.
This guide covers deploying the Natoma agent on-premises on Amazon EKS. The on-prem agent connects to the Natoma cloud control plane for orchestration while routing all MCP traffic within your own infrastructure.
Prerequisites
A running Amazon EKS cluster with
kubectland Helm installedAccess to the Natoma tenant admin panel with Admin permissions
Your AWS account ID — share this with the Natoma team so they can grant read permissions to the ECR repositories containing the agent image and Helm chart
Network Requirements
You may need to allowlist both inbound and outbound traffic depending on your network configuration.
Natoma egress
35.247.116.223
May not be utilized for on-prem since traffic will always be unidirectional from agent to Natoma.
Natoma ingress
34.49.218.52
Agents will make calls to the Natoma API and auth server.
Agent Image & Helm Chart
Natoma agent images are hosted on AWS ECR in the Natoma AWS org. Share your AWS account ID with the Natoma team — they will grant your account read permissions for the ECR repositories containing the agent image and Helm chart.
The recommended setup uses a dedicated Kubernetes namespace (natoma), a ServiceAccount (natoma-ecr-pull-sa), and an IAM role (NatomaECRPullRole) with ECR pull permissions.
Setup
Step 1: Retrieve On-Prem Credentials
Navigate to your Natoma web tenant at
https://<tenant>.natoma.app.Log in as an admin and navigate to Admin > On-Premise Deployments.
Create a new deployment, provide an optional name, and proceed.
Copy the Client ID and Client Secret — you will need both when configuring the Helm chart.
Store the Client ID and Client Secret securely. You will reference these values in your Helm configuration.
Step 2: Create an On-Prem MCP Server
In the Natoma web app, navigate to Apps.
Click Add custom app and set App Source Type to Remote URL.
Fill out the relevant fields and check This is an on-prem server.
Enter the remote URL pointing to your on-prem MCP server, including the
/mcpsuffix (or equivalent path pointing directly to the MCP server).
Once the agent is successfully running, the MCP server will be populated with the list of available tool calls.
Step 3: Configure IAM Permissions
The Natoma pod needs permissions to pull images from the Natoma ECR repository. Create the following IAM policy:
Attach this policy to an IAM role with the following trust policy. Replace <OIDC_PROVIDER_HOST> with the OIDC provider of your EKS cluster (format: oidc.eks.<region>.amazonaws.com/id/<cluster-id>), <ACCOUNT_ID> with your AWS account ID, <NAMESPACE> with the Kubernetes namespace, and <SA_NAME> with the ServiceAccount name.
Step 4: Create a Namespace and ServiceAccount
Create a sa.yaml file for the ServiceAccount:
Apply it to your cluster:
Step 5: Deploy the Helm Chart
Authenticate against ECR and deploy:
Step 6: Verify Tool Scanning
Once the agent is running, Natoma automatically detects it and initiates tool scanning. Each time the agent polls the Natoma cloud server, any pending scan requests are processed alongside the polling data.
To trigger a manual re-scan at any time, click the more menu icon next to the MCP server in the Natoma web app and select Scan tools.
Helm Configuration
Required Values
The following properties must be provided at install time.
natoma.clientID
natoma.clientIDThe Client ID generated within the Natoma web application for this clustered deployment.
natoma.clientSecret.*
natoma.clientSecret.*Contains secretName and secretKey properties pointing to the Kubernetes secret that holds the Natoma client secret. The defaults expect a secret named natoma with a client-secret key.
Create the secret with:
ingress.host
ingress.hostThe hostname through which MCP traffic will be routed. Must be routable and resolvable by all end-users connecting to MCP servers through the Natoma agent.
image.repository
image.repositoryFull image name including the repository path. Contact the Natoma team for the ECR repository path.
image.tag
image.tagA specific version tag for the agent image.
serviceAccount.name
serviceAccount.nameThe name of the ServiceAccount that has permissions to pull from the Natoma ECR.
Enabling Audit Logs
To capture audit logs, enable audit logging via the env block in your values.yaml. Once enabled, agents capture logs in-memory and send them to Natoma every 15 minutes, or when the batch reaches 10,000 entries (both values are configurable).
Optional Values
For help with any of these values, contact the Natoma team or email [email protected].
replicaCount
replicaCountNumber of agent replicas. Ignored when autoscaling.enabled: true.
Default: 2
autoscaling.enabled
autoscaling.enabledSet to true to enable horizontal pod autoscaling.
Default: false
autoscaling.minReplicas
autoscaling.minReplicasMinimum replicas during low activity.
Default: 1
autoscaling.maxReplicas
autoscaling.maxReplicasMaximum replicas when scaling.
Default: 8
autoscaling.targetCPUUtilizationPercentage
autoscaling.targetCPUUtilizationPercentageCPU utilization percentage to target for horizontal scaling.
Default: 80
natoma.logLevel
natoma.logLevelSupported values: debug, info, warn, error. Leave at info in production unless advised otherwise by Natoma support.
Default: info
natoma.extraCACerts.*
natoma.extraCACerts.*Enables the agent to validate certificates from MCP servers that use an internal root CA. Configure the root certificates in a Kubernetes ConfigMap containing a single PEM-formatted file.
Set natoma.extraCACerts.configMap to extra-certs and natoma.extraCACerts.key to internal-ca.pem.
ingress.enabled
ingress.enabledSet to false to disable the default Ingress resource. May be necessary for complex networking environments or certain managed Kubernetes providers.
Default: true
ingress.tls.secretName
ingress.tls.secretNameName of a Kubernetes Secret containing a crt key (full certificate chain) and a key key (private key).
ingress.tls.hosts
ingress.tls.hostsString array of hostnames matching the certificate's CN and DNS Alternative Names. Use {} notation via the Helm CLI:
ingress.annotations.*
ingress.annotations.*Optional annotations on the Ingress resource. Escape . characters when passing via the Helm CLI:
env
envAny configurable overrides to agent behavior. Values must be strings.
AUDIT_LOG_ENABLED
Set to "true" to enable audit log capture and upload
false
AUDIT_LOG_INTERVAL_SEC
Frequency in seconds at which audit logs are sent to Natoma
900 (15 min)
AUDIT_LOG_MAX_ENTRIES
Maximum entries per audit log batch
10000
POLLER_INTERVAL_SEC
Polling interval in seconds. Controls how often the agent fetches updated policy data, pending scans, etc. Changes made in the Natoma web app won't reflect in on-prem agents until the next poll.
300 (5 min)
Sample values.yaml
values.yamlSupport
Please reach out to the Natoma team or email [email protected].
Last updated

