This repository contains the Kubernetes manifests used for GitOps-based deployments in our infrastructure.
I use a GitOps approach to manage our Kubernetes resources. This repository is the single source of truth for our infrastructure configuration. Changes to manifests in this repository trigger automatic deployments to the Kubernetes clusters via FluxCD.
Gitops Repo
├── helm-repositories # Helm repository configuration and secrets
│ ├── repository.yaml # Definition of the Helm repository
│
├── services/json-server # Manifests for json-server
│ ├── kustomization.yaml # Kustomization file for json-server
│ ├── HelmRelease.yaml # HelmRelease for json-server
│ ├── values.yaml # Custom Helm values for json-server
│
├── kustomization.yaml # Kustomization file for FluxCD
The key workflow for this repository is:
- Changes to application code in microservice/app repositories trigger their CI pipelines
- Those CI pipelines build and tag docker images then pushes it to the ACR
- The CI pipeline then updates the corresponding manifest in this GitOps repository with the new image tag and chart version
- The GitOps operator (Flux) detects changes and applies them to the cluster
This approach ensures that:
- Application repositories are responsible for their own deployment updates
- All infrastructure changes are versioned and tracked in this central repository
- Deployments happen automatically when manifests are updated
- kubectl
- git
- Azure CLI (for accessing Azure resources)