Application teams are empowered to deploy, run, and maintain their own software on top of the platform, in a self-service fashion. The efforts that follow allow to:
- isolate different teams
- make them more autonomous
- lower their cognitive load
- Decide on a reserved Kubernetes namespace e.g.
sciety
. - Create a Github repository that will contain definitions for all Kubernetes resources. Optionally create a deploy key and add to this repository in github.
- Sync this repository by adding a Kustomization for the team, and a Flux Kustomization.
- In the kustomizations, create (as needed):
- Create a dedicated node pool that will host all workloads in a certain namespace.
- Create a dedicated storage class that will configure and tag storage for a namespace.
- Create a deployment sync object for the git repository created above, referencing the deploy key secret if created above
- Test the setup via the creation of the desired Kubernetes namespace. Note: Make sure to set the annotation to assign workloads to the correct nodepool:
apiVersion: v1 kind: Namespace metadata: name: application-team-1 annotations: elifesciences.org/default-project: application-team-1