k8s-conventions
Skill1 starsChanged 25 days agoMITView on GitHub
OpenTeams Kubernetes deploy & local-dev conventions — Helm charts, Tilt + k3d/minikube inner loop, docker-compose, ArgoCD, and kubectl/k9s debugging. Use when writing or editing Helm charts (Chart.yaml, values.yaml, templates), Tiltfiles, docker-compose files, or ArgoCD Applications, when running a service locally on a cluster, or when debugging a deployment (pods crashing, images not updating, services unreachable).
In this repository12 other files it gives its agents.
- a11y-auditSkill
- backend-conventionsSkill
- decision-deckSkill
- frontend-conventionsSkill
- github-issueSkill
- new-nebari-appSkill
- new-projectSkill
- pr-reviewSkill
- start-devSkill
- talk-deckSkill
- tool-evalSkill
- web-app-auditSkill
The file
Files
OpenTeams Kubernetes Deployment
How services ship and run on Kubernetes in this org. Every backend repo carries a helm/ (or chart/) directory, most carry a Tiltfile for the local inner loop, and production rolls out via ArgoCD. Follow these when touching any of that.
The Stack
| Concern | Tool |
| Packaging | Helm charts (helm/<name>/ or chart/) |
| Local inner loop | Tilt + k3d (or minikube) |
| Local-only / non-k8s dev | docker-compose |
| Production rollout | ArgoCD Applications (GitOps) |
| Image registry | quay.io/nebari/<name> |
| Live debugging | kubectl, k9s |
First Moves In Any Repo
- Is there a
Tiltfile? → local dev runs on a cluster via Tilt. Read it for the cluster name, namespace, and whichvalues-*.yamlit feeds Helm. helm/<name>/orchart/? → the Helm chart. Readvalues.yaml(+values.schema.jsonif present) before editing templates.docker-compose*.yml? → lightweight local stack (often just Postgres/Valkey), or an alternative to the cluster loop.Makefile— repos wrap common flows (make up,make down,make dev). Prefer the existing target over inventing a command.- ArgoCD
ApplicationYAML (in-repo or in a deploy repo) → how it reaches production. NotetargetRevisionandsync-wave.
Match the repo's existing structure. The patterns below are the org default, not a mandate to restructure.
Non-Negotiables
- Never
kubectl apply/helm upgradestraight to a production cluster. Production is GitOps — change the chart or values in git and let ArgoCD sync. Manual changes drift and get reverted. - Pin image tags in production values. No
:latest. The chart falls back toappVersion; set an explicit tag for a release. - Secrets never go in
values.yamlor git. Reference an existing Secret (existingConfigMap/secret refs,kubectl create secret, or the cluster's secret manager). - Keep the security context. Charts run
runAsUser/Group/fsGroup: 1000withreadOnlyRootFilesystem: true. Don't drop these to "make it work" — add a writableemptyDirvolume/mount instead. helm lint+helm templatebefore committing chart changes. Render it and read the output; a template that lints can still produce broken YAML.- Use a
values-*-test.yaml(orvalues-k8s-test.yaml) for the local cluster, separate from production values. Don't point Tilt at production values.
Reference Files
references/helm.md— chart layout, the orgvalues.yamlconventions (image, securityContext, resources, config inline/existingConfigMap, extraEnv), the_helpers.tpl/_env.tpl/_validate.tpltemplate trio,values.schema.json, and how to add a new templated resource.references/local-dev.md— the Tilt + k3d inner loop (cluster create,custom_build+ image import,k8s_resourcegrouping, port-forwards,tilt ci), docker-compose usage, the ArgoCD Application shape, and a kubectl/k9s debugging playbook.
What NOT To Do
| Don't | Do instead |
helm upgrade / kubectl apply to prod | Commit to git; ArgoCD syncs |
image.tag: latest in prod values | Pin an explicit tag |
| Secrets in values.yaml or committed | Reference an existing Secret / create out-of-band |
Drop readOnlyRootFilesystem to get writes | Mount an emptyDir at the writable path |
| Point Tilt at production values | Use values-k8s-test.yaml |
Hand-write a one-off kubectl run for local dev | tilt up (or the repo's make target) |
| Edit templates without rendering | helm template . -f values-k8s-test.yaml and read it |
| Guess at chart values shape | Read values.schema.json / values.yaml first |
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.

