Vanilla EKS Quickstart¶
Use this path for a production-shaped EKS install that does not depend on Istio, External Secrets Operator, or cert-manager. The profile uses AWS Load Balancer Controller, IRSA, RDS/Postgres, and Kubernetes Secrets.
Choose the right profile first:
| Need | Profile |
|---|---|
| Laptop-speed demo | eks-control-plane-sqlite-pilot-values.yaml |
| Vanilla EKS production | eks-vanilla-values.yaml |
| Mesh-hardened production | eks-istio-kyverno-values.yaml |
Prerequisites¶
- EKS cluster with AWS Load Balancer Controller installed
- ACM certificate ARN for the control-plane hostname
- distinct RDS/Postgres credentials for app, maintenance, and migration/admin roles
- IRSA role ARN for scanner/API AWS read access and backup access
- Helm 3
1. Create The Namespace¶
2. Create Secret Env Files¶
Create three database env files locally:
echo 'AGENT_BOM_POSTGRES_URL=postgresql://agent_bom_app:REPLACE_ME@REPLACE_ME_RDS_ENDPOINT:5432/agent_bom' > agent-bom-db.env
echo 'AGENT_BOM_POSTGRES_MAINTENANCE_URL=postgresql://agent_bom_maintenance:REPLACE_ME@REPLACE_ME_RDS_ENDPOINT:5432/agent_bom' > agent-bom-maintenance.env
echo 'ALEMBIC_DATABASE_URL=postgresql://REPLACE_ME_MIGRATION_ADMIN:REPLACE_ME@REPLACE_ME_RDS_ENDPOINT:5432/agent_bom' > agent-bom-admin.env
Create agent-bom-auth.env locally:
AGENT_BOM_API_KEYS=REPLACE_ME_OPENSSL_RAND_HEX_24:admin
AGENT_BOM_CONNECTIONS_KEY=REPLACE_ME_FERNET_KEY
AGENT_BOM_AUDIT_HMAC_KEY=REPLACE_ME_32_BYTES_OR_LONGER
AGENT_BOM_AUDIT_HMAC_KEY_LAST_ROTATED=2026-04-26T00:00:00+00:00
AGENT_BOM_BROWSER_SESSION_SIGNING_KEY=REPLACE_ME_32_BYTES_OR_LONGER
AGENT_BOM_BROWSER_SESSION_SIGNING_KEY_LAST_ROTATED=2026-04-26T00:00:00+00:00
AGENT_BOM_RATE_LIMIT_KEY=REPLACE_ME_32_BYTES_OR_LONGER
AGENT_BOM_RATE_LIMIT_KEY_LAST_ROTATED=2026-04-26T00:00:00+00:00
AGENT_BOM_TRUST_PROXY_AUTH_SECRET=REPLACE_ME_32_BYTES_OR_LONGER
AGENT_BOM_TRUST_PROXY_AUTH_ISSUER=aws-alb
Generate the API-key value with openssl rand -hex 24 and append :admin.
Generate AGENT_BOM_CONNECTIONS_KEY with
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())";
an arbitrary hex value is not a valid Fernet key. Replace the remaining
placeholders with independently generated secret material.
Replace AGENT_BOM_API_KEYS with a complete OIDC, SAML, or trusted-proxy auth
configuration when that backend is enabled. SCIM provisioning does not replace
an interactive login backend. Keep the env files in your secret-management
workflow, not in Git.
Apply the Kubernetes Secrets:
kubectl create secret generic agent-bom-control-plane-db \
--namespace agent-bom \
--from-env-file=agent-bom-db.env
kubectl create secret generic agent-bom-control-plane-maintenance \
--namespace agent-bom \
--from-env-file=agent-bom-maintenance.env
kubectl create secret generic agent-bom-control-plane-admin \
--namespace agent-bom \
--from-env-file=agent-bom-admin.env
kubectl create secret generic agent-bom-control-plane-auth \
--namespace agent-bom \
--from-env-file=agent-bom-auth.env
3. Customize The Values File¶
Copy the shipped profile and replace placeholders:
Update:
alb.ingress.kubernetes.io/certificate-arncontrolPlane.ingress.hosts[0].host- IRSA role ARNs
- backup bucket, region, and KMS key
4. Install¶
helm upgrade --install agent-bom deploy/helm/agent-bom \
--namespace agent-bom \
--create-namespace \
-f ./agent-bom-eks-vanilla-values.yaml
5. Verify¶
kubectl get ingress -n agent-bom
curl -fsS https://agent-bom.internal.example.com/healthz
curl -fsS https://agent-bom.internal.example.com/readyz
helm test agent-bom -n agent-bom
The API uses /healthz (JSON liveness; /health is the same probe) and /readyz for dependency readiness.
Gateway and sidecar runtime surfaces also use /healthz.
NetworkPolicy Note¶
The vanilla profile keeps NetworkPolicy enabled for egress controls, but it
does not enable restricted ingress by default. With ALB target-type: ip, data
traffic reaches pod IPs directly and cannot be selected as an in-cluster
controller pod. Enable restricted ingress only after you add environment-specific
CIDR or CNI policy controls that match your ALB data path.
Going Further¶
- Mesh and policy-controller hardening:
deploy/helm/agent-bom/examples/eks-istio-kyverno-values.yaml - Full EKS operator guide:
site-docs/deployment/own-infra-eks.md - Postgres ownership:
site-docs/deployment/postgres-provisioning.md