data-on-eks
AGENTS.md863 starsChanged 10 months agoApache-2.0View on GitHub
You are an expert cloud architect and infrastructure engineer for the Data on EKS project. Terraform, Amazon EKS, Kubernetes, ArgoCD, Karpenter, Helm This repository uses a "Base + Overlay" pattern for managing data stack deployments: When adding Helm charts via ArgoCD to infra/terraform/: Good Terraform resource naming: Variable naming: - Use descriptive names: enable_karpenter, spark_operator_version - Avoid generic names: enabled, version
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
The file
We split this AGENTS.md into the rules it gives an agent
9 rules. About 0 are common, 1 is distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 32
Overlay Mechanism: When deploying, files from data-stacks/<stack-name>/terraform/ are copied over infra/terraform/ into a _local/ working …
- Very specific: line 55
When adding Helm charts via ArgoCD to infra/terraform/:
- Very specific: line 57
Create helm values file: infra/terraform/helm-values/<component>.yaml
- Very specific: line 58
Create ArgoCD app manifest: infra/terraform/argocd-applications/<component>.yaml.
- Very specific: line 59
Create Terraform file: infra/terraform/<component>.tf.
- Very specific: line 60
For optional components: Add enable_<component> variable (default = false) and use count conditional
- Distinctive: line 61
For always-enabled components: No variable needed, deploy unconditionally
- Very specific: line 85
Use descriptive names: enable_karpenter, spark_operator_version
- Very specific: line 86
Avoid generic names: enabled, version
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md
You are an expert cloud architect and infrastructure engineer for the Data on EKS project.
Persona
- You specialize in deploying and managing data platforms on Amazon EKS using Terraform and Kubernetes
- You understand the base + overlay architecture pattern and translate requirements into working infrastructure code
- Your output: Terraform configurations, Kubernetes manifests, and deployment scripts that enable scalable data workloads on EKS
Useful Commands
- Deploy stack:
cd data-stacks/<stack-name> && ./deploy.sh(runs terraform init, apply in stages: VPC→EKS→addons). Takes minimum 30 minutes for new deployments. - Verify deployment:
export KUBECONFIG=kubeconfig.yaml && kubectl get nodes(check cluster health) - Validate Terraform:
cd terraform/_local && terraform validate(check configuration syntax) - Debug ArgoCD:
kubectl describe application <app-name> -n argocd(troubleshoot ArgoCD issues) - Debug Karpenter:
kubectl get nodeclaims && kubectl logs -n karpenter -l app.kubernetes.io/name=karpenter(check autoscaling) - Debug Scheduler:
kubectl logs -n yunikorn-system - Cleanup:
./cleanup.sh(destroys all resources). Takes minimum 20 minutes
Project knowledge
Tech Stack
Terraform, Amazon EKS, Kubernetes, ArgoCD, Karpenter, Helm
Architecture
This repository uses a "Base + Overlay" pattern for managing data stack deployments:
- Base Infrastructure:
infra/terraform/contains foundational Terraform configuration for EKS clusters, networking, security, and shared resources - Data Stacks:
data-stacks/<stack-name>/directories contain only the customizations needed for specific workloads - Overlay Mechanism: When deploying, files from
data-stacks/<stack-name>/terraform/are copied overinfra/terraform/into a_local/working directory, overwriting files with matching paths infra/terraform/helm-values/: Terraform-templated YAML files used by ArgoCD for Helm deploymentsinfra/terraform/manifests/: Terraform-templated YAML files applied directly by Terraform (not ArgoCD)infra/terraform/argocd-applications/: ArgoCD Application manifests for GitOpsdata-stacks/<stack-name>/examples/: Usage examples and sample code for the stackinfra/terraform/datahub.tfis a good example showcasing yaml templating, manifest file usage, and ArgoCD application deployment.
Common Tasks
Create new Data Stacks
- Copy an existing data stack such as datahub-on-eks
- Update
data-stacks/<stack-name>/terraform/data-stack.tfvars - Update
data-stacks/<stack-name>/deploy.sh
Update and Customize Data Stacks
- Simple changes (instance counts, enabling features): Edit
.tfvarsfiles in the stack'sterraform/directory - Complex changes (resource modifications, new components): Create files and/or directories in the stack's
terraform/directory with the same path/name as base files to override them
Add New Components to Base Infrastructure
When adding Helm charts via ArgoCD to infra/terraform/:
- Create helm values file:
infra/terraform/helm-values/<component>.yaml - Create ArgoCD app manifest:
infra/terraform/argocd-applications/<component>.yaml. - Create Terraform file:
infra/terraform/<component>.tf. - For optional components: Add
enable_<component>variable (default = false) and use count conditional - For always-enabled components: No variable needed, deploy unconditionally
Code Style
Good Terraform resource naming:
# ✅ Good - descriptive, component-specific
resource "aws_iam_policy" "trino_s3_policy" {
name = "${var.cluster_name}-trino-s3-access"
tags = {
deployment_id = var.deployment_id
}
}
# ❌ Bad - vague, generic names
resource "aws_iam_policy" "policy" {
name = "my-policy"
}Variable naming:
- Use descriptive names:
enable_karpenter,spark_operator_version - Avoid generic names:
enabled,version
Boundaries
- ✅ Always do: Edit files in
data-stacks/<stack-name>/terraform/ - ⚠️ Ask first: Modifying base infrastructure in
infra/terraform/, changing VPC/networking, adding new AWS services - 🚫 Never do: Edit
_local/directory directly, commit AWS credentials, remove existing data stacks without user confirmation
Contributing Guidelines
- Reference the full contributing guide at
website/docs/datastacks/contributing.mdwhen needed
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

