Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kuuji/gitops
https://github.com/kuuji/gitops
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/kuuji/gitops
- Owner: kuuji
- Created: 2021-12-18T22:09:37.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-02-06T01:42:25.000Z (almost 3 years ago)
- Last Synced: 2024-11-07T14:29:54.452Z (about 2 months ago)
- Size: 160 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Argocd
## gitops repo structure
```
clusters
{cluster_name}
system
ops
game
etc.
shared
system
istio
cert-manager
ops
nginx
nginx-header_helm.yaml
game
etc.
````clusters/{cluster_name}/system` contains the system components that are not shared. For example argocd only exists on the argocd cluster
gha-controller only exists on the ci cluster
etc.`shared/system/` contains applicationSets, those resources generate Application for every cluster according to some parameters (cluster/git files/list/more complex if we want to). It doesn't have to be on all clusters, but if it's more than 1 it's useful to have an applicationSet for it.
These are the things we always install and have very little variation between clusters. For example istio, cert-manager, etc.
We should aim to have as much as possible here.`shared/ops/nginx/nginx_helm.yaml` is an applicationSet that takes a remote helm chart and installs it in a list of cluster. values can be templated directly in the applicationSet. This design while being the most straightforward does not allow to permanently override values for a given cluster. It's good for things that have very little variation between clusters.
`shared/ops/nginx/nginx_helm_umbrella.yaml` is an applicationSet that looks for a helm chart in `clusters/{cluster_name}/ops/nginx`
This folders contains:
- A Chart.yaml file with a dependency to a chart that installs nginx-header
- A values.yaml file that has values specific to the clusterterraform
- create cluster
- create cluster dependencies
- acm
- iam role
- install argo via helm provider
- install alb ingress
- bootstrap argo
- create an argo application that looks at the clusters/argo folder in gitops
- clusters/argo folder contains bootstrap.yaml <- from now on we manage argo via argo
- clusters/argo/system/argocd contains all argocd required config
- clusters/argo/root.yaml creates an application that looks at shared/
- shared/system/istio contains everything to bootstrap istio on any cluster