Stage 2: GitOps Tooling
The Makefile targets used in Stage 1 invoke Helm to install the applications, using application-specific values files found the cloned directory (e.g., ~/systemsapproach/aether-onramp/roc-values.yaml) to override the values for the corresponding Helm charts. In an operational setting, all the information needed to deploy a set of Kubernetes applications is checked into a Git repo, with a tool like Fleet automatically updating the deployment whenever it detects changes to the configuration checked into the repo.
To see how this works, look at the resources/deploy.yaml file included in the cloned directory:
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
name: aiab
namespace: fleet-local
spec:
repo: "https://github.com/systemsapproach/aether-apps" # Replace with your fork
branch: main
paths:
- aether-2.1-alpha # Specify one of "aether-2.0" or "aether-2.1-alpha"
This particular version uses https://github.com/systemsapproach/aether-apps as its source repo. Fork that repo and then edit your local deploy.yaml to point to your new repo. Then install Fleet on your Kubernetes cluster by typing:
$ make fleet-ready
Once complete, kubectl will show the cattle-fleet-system namespace running. All that’s left is to type the following command to activate Fleet:
$ kubectl apply -f deploy.yaml
The following command will let you track Fleet as it makes progress installing applications (which Fleet refers to as bundles):
$ kubectl -n fleet-local get bundles
Once complete, you can rerun the same emulated 5G test against Aether:
$ make 5g-test
Once you configure your cluster to use Fleet to deploy the Kubernetes applications, the “clean” targets in the Makefile will no longer work correctly: Fleet will persist in reinstalling any namespaces that have been deleted. You have to first uninstall Fleet by typing:
$ make fleet-clean
before executing the other “clean” targets. Alternatively, leave Fleet running and instead modify your forked copy of the aether-apps repo to no longer include applications you do not want Fleet to automatically instantiate. This mimics how an operator would change a deployment by checking in Configuration-as-Code, a practice that proves useful when supporting live 5G workloads.