🧰 This repo is an Argo App definition which references other helm charts. It should not exclusively run Helm Templates but be a more generic Argo App which could reference Kustomize or Operators etc.
🎨 This is the new home for the evolution of what was Labs CI / CD. This project represents a major milestone in moving away from the 3.x OpenShift clusters to a new GitOps approach to tooling, app management and configuration drift using ArgoCD.
There are three main components (one in each folder) to this repository. Each part can be used independently of each other but sequentially they create the full stack. If you already have an ArgoCD instance you want to add the tooling to just move to part 2:
- Bootstrap - Contains references two helm charts used to create and manage projects and deploy ArgoCD
- Ubiquitous Journey - Contains all the tools, collaboration software and day2ops to be deployed on Red Hat OpenShift. This includes chat applications, task management apps and tools to support CI/CD workflows and testing. For the complete list and details: What's in the box?👨
- An example (pet-battle) to show how the same structure can be used to implement GitOps for a simple three tiered app stack.
- OpenShift 4.3 or greater (cluster admin user required) - https://try.openshift.com
- Install helm v3 (cli) or greater - https://helm.sh/docs/intro/quickstart
- Install Argo CD (cli) 1.4.2+ or greater - https://argoproj.github.io/argo-cd/getting_started/#2-download-argo-cd-cli
A handy two liner to deploy all the artifacts in this project using their default values
# bootstrap to install argocd and create projects
helm upgrade --install bootstrap -f bootstrap/values-bootstrap.yaml bootstrap --create-namespace --namespace labs-bootstrap
# give me ALL THE TOOLS, EXTRAS & OPSY THINGS !
helm template -f argo-app-of-apps.yaml ubiquitous-journey/ | oc -n labs-ci-cd apply -f-
If you want to find out all the magic behind, how to override the default values, deploy an example application through ArgoCD and collect metrics, let's meet here!🧙♀️
We can create a master ArgoCD instance in the cluster that can bootstrap other "child" ArgoCD instance(s) for any given project team. This is a good approach if you want each project team to own and operate their own software development tools (jenkins, sonar, argocd, etc) but restrict any elevated permissions they may need e.g.creating argocd Custom Resources Definitions (CRD's
) or limiting project creation. See ArgoCD Master and Child Deployment
Uninstall and delete all resources in the various projects
# delete ubiquitous-journey
helm template -f argo-app-of-apps.yaml ubiquitous-journey/ | oc -n labs-ci-cd delete -f-
# uninstall and clean-up bootstrap, run:
helm uninstall bootstrap --namespace labs-bootstrap
TODO - add some instructions for adding:
- new helm charts
- new Operators etc
You can find low hanging fruit to help here.