This Repo is meant to be a starter kit for managing organizations mono repository that contains
- IAC (Terraform/OpenTofu)
- Terragrunt
- Managed K8S
- FluxCD
The starter kit is opinionated to some degree. We do focus on best practice so the aim here is to create a kit that can for the basis of managing large projects with large teams.
Every aspect of this repo is documented in this academeez course.
In the course we will learn how to manage your K8S cluster in a professional way using Flux.
The course and this repo are completly free and open source (MIT Licensed)
Here are the lessons we are going to learn in this course. Clicking the link to the lesson will point you to the lesson article and video lesson.
Things you need to know before we start our journey. Requirements, Prerequisites, etc.
In this lesson we will Install Flux on our K8S cluster
When we installed Flux, gitops operators were installed as well. We will go over each of those operators, starting with kustomize-controller
which collects manifests and keeps our cluster synced with the state described in those manifests.
No more using the helm
command to altar our k8s cluster state. Installing helm charts is done in a declarative gitops way using flux helm-controller. In this lesson we will learn about helm-controller
by installing our first chart - nginx ingress controller
There are a few advantages of installing Flux using infrastructure as code technology like Terraform.
Especially when you will need to manage more than one cluster.
It's best to split our IAC big project to small mini projects where each one is stored in a seperate state. Unfortunately doing so with Terraform will be hard, but terragrunt which is a small wrapper around Terraform/OpenTofu is perfect for the job.
Since all this course is using the same repo, and we still want you to examine source code for each lesson, therefor each lesson will have a branch created.
For example to see the source code for lesson one go to the branch lesson-01