Your infrastructure repository will be the central location for you to manage the teams that are deploying workloads across your different environments, as well as the core services you will make available to those teams as part of your shared services platform.
A sample repository is available at https://github.com/weaveworks-gitops-demo/team-ssp.git
In our scenario, we will have two sample teams:
Each team is using an individual repository and will have full freedom to deploy any workload within a specifically assigned namespace.
Go to https://github.com/weaveworks-gitops-demo/team-ssp.git and make a copy of this repository to your account by clicking the Fork
button.
Do the same for both Team Blue and Team Green repositories shown above. You should end up with three repos copied over to your GitHub Account.
Follow the instructions here and create a personal access token with Repo
scope. Copy and paste the token (you will not be able to see it after it’s just been created), and set it in your environment:
export GITHUB_TOKEN=<your token>
export GITHUB_USER=<your user>
You will need a local copy of all three repositories, use git to clone them:
git clone https://github.com/${GITHUB_USER}/team-ssp.git
git clone https://github.com/${GITHUB_USER}/team-green.git
git clone https://github.com/${GITHUB_USER}/team-blue.git
You should be able to see now the three directories in your Cloud9 IDE:
This is the structure of the SSP repository, let’s go over each directory and its purpose.
. ├── README.md ├── environments │ ├── dev │ │ ├── blue-patches.yaml │ │ ├── green-patches.yaml │ │ └── kustomization.yaml │ └── prod │ ├── blue-patches.yaml │ ├── green-patches.yaml │ └── kustomization.yaml ├── platform │ ├── core │ │ └── ingress.yaml │ └── team │ ├── applications.yaml │ ├── kustomization.yaml │ ├── namespace.yaml │ ├── repository.yaml │ ├── role.yaml │ ├── rolebinding.yaml │ └── serviceaccount.yaml └── teams ├── team-blue │ ├── kustomization.yaml │ └── patches.yaml └── team-green ├── kustomization.yaml └── patches.yaml
The SSP Repository has three directories at its root:
environments/
: For each one of our clusters, we will have a subdirectory inside environments, in our case that means two subdirectories: prod/
which will be tracked by our EKS Distro cluster, and dev/
that will be tracked by our managed EKS cluster in the cloud. Each environment specific subdirectory will hold environment specific patches to the various base components we want to deploy on that specific target.platform/
: In platform we have our reusable bases. The core/
subdirectory is the place for us to place any resources we want available in the cluster for shared use by all teams, think for example Ingress
controllers. The team/
subdirectory holds all the resources that we will want to deploy for every team, we’ll go over these in details shortly.teams/
: This is where we declare our teams, by kustomizing our platform/team
base.