Production-grade platform engineering handbook — Kubernetes, Terraform, Flux CD, GitHub Actions, AWS, and more.
67
84%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Status: Beta
A GitOps repository pattern for multiple teams sharing a single cluster, with RBAC and network isolation per tenant.
Each tenant gets:
The platform team owns the cluster bootstrap and tenant onboarding. Tenant teams push to their own source repositories.
multi-tenant/
├── clusters/
│ └── production/
│ ├── platform.yaml # Kustomization for ClusterRole + NetworkPolicy
│ └── tenants.yaml # Kustomization pointing to tenants/ (dependsOn: platform)
├── tenants/
│ └── team-a/
│ ├── namespace.yaml
│ ├── serviceaccount.yaml # Created in flux-system namespace
│ ├── rolebinding.yaml
│ ├── gitrepository.yaml
│ └── kustomization.yaml
└── platform/
├── kustomization.yaml # Kustomize config listing rbac + network-policy
├── rbac/
│ └── tenant-role.yaml # ClusterRole with namespace-scoped permissions
└── network-policy/
└── default-deny.yaml # Default-deny + allow-same-namespace per tenant# tenants/team-a/kustomization.yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: team-a
namespace: flux-system
spec:
interval: 10m
prune: true
wait: true
timeout: 5m
serviceAccountName: team-a # runs as team-a SA — limits to team-a namespace
sourceRef:
kind: GitRepository
name: team-a-app
path: ./deployTenant Kustomizations must not reference resources in other tenant namespaces. Use spec.targetNamespace to enforce.
To add a new tenant, copy tenants/team-a/ to tenants/<new-team>/, update namespace and names, and commit. Flux will create the namespace, RBAC, and source reconciliation automatically.
flux CLI installedkubectl with cluster-admin access for initial setup# Bootstrap Flux (or apply FluxInstance if using Flux Operator)
flux bootstrap github \
--owner=my-org \
--repository=platform-gitops \
--branch=main \
--path=./clusters/production
# Verify tenants are reconciling
flux get kustomizations -n flux-system | grep team-# Check a tenant's Kustomization status
flux get kustomization team-a -n flux-system
# Check RBAC — is the ServiceAccount missing permissions?
# SA is in flux-system namespace, not the tenant namespace
kubectl auth can-i create deployments \
--as=system:serviceaccount:flux-system:team-a -n team-a
# Check NetworkPolicy is not blocking cross-namespace traffic unexpectedly
kubectl describe networkpolicy -n team-a.claude-plugin
.github
commands
docs
examples
agent-self-improve
argocd
awesome-docs
aws
cloudfront
functions
lambda-edge
functions
azure
compliance
conventional-commits
datadog
llm-observability
demo
documentation
dora
dynatrace
fluxcd
github-actions
composite-actions
configure-cloud
db-migrate
docker-build-push
k8s-deploy
notify-slack
pr-comment
release-tag
security-scan
setup-env
setup-terraform
terraform-plan
helm
web-service
templates
kubernetes
kyverno
mcp
observability
openshift
pr-review
ownership
runtime-security
supply-chain
terraform
references
scripts
skills
platform-skills
tests