Flux#
License: Apache 2.0
Flux is a grouping of tools used to sync Kubernetes clusters with various configuration sources and methods. This is leveraged by the Platform for the Tenants who use Gitlab as a source and can use some of the methods/projects below to deploy their code in a CD manner.
Our current implementation of Flux allows our tenants to deploy their code through a few methods:
- Git Repo (of manifests)
- Helm Charts (GitOps Toolkit Helm Controller)
- Kustomize
- Terraform - Upon Request
This process is simplified for our customers by creating the necessary objects to do this automatically inside the landlord project to create the Git Repo, Kustomize and the Helm Release objects.
Git Repository#
License: GPLv3
Flux is capable of deploying manifest files in a plain git repo.
GitOps Toolkit Helm Controller#
License: Apache 2.0
Helm manages software using Charts. Many common pieces of software are available as a chart. Curated charts often contain a variety of tunables the implementor can use to setup the software for their particular needs across a variety of platforms.
In addition to existing curated software, the intuitive templating makes it a popular choice for our customers looking to deploy and configure their own software.
Helm objects declared in tenant repos will be operated on by Flux's Helm Controller. This behavior is different than the Helm seen elsewhere which is managed through Terraform outside the Flux/GitOps Toolkit environment.
Kustomize#
License: Apache 2.0
Kustomize allows customization of non-templated yaml manifest files.
Terraform#
License: Business Source License 1.1
Terraform allows you to declaritively define objects. While not currently used, the Terraform controller could be easily made available.
Links#
-
Code:
-
Releases:
-
Documentation:
- Flux:
- General Documentation: https://fluxcd.io/flux/
- Flux Upgrade Documentation: https://fluxcd.io/flux/installation/upgrade/
- Flux Troubleshooting Documentation: https://fluxcd.io/flux/cheatsheets/troubleshooting/
- Helm:
- General Documentation: https://helm.sh/docs/
- Kustomize:
- General Documentation: https://kubectl.docs.kubernetes.io/references/kustomize/
- Flux:
-
Implementation:
- eks-cluster: Call Self-maintained Helm Chart for fluxcd
- eks-cluster: Call Self-maintained Landlord Setup Helm Chart - Landlord populates most of the flux objects that are used by the tenants
- fluxcd - helmchart: A helmchart generated by the flux cli utility allowing for easier rollback/upgrade.
Project contains upgrade information.
https://code.vt.edu/it-common-platform/platform-support/helm-charts/fluxcd
- landlord-setup - helmchart: Sets up the groundwork to deploy the main landlord helmchart
https://code.vt.edu/it-common-platform/platform-support/helm-charts/landlord-setup
- landlord - helmchart: Installs all the landlord pieces for all the tenants by looping through their inventory. Additionally includes some one off cluster settings for Gatekeeper.
https://code.vt.edu/it-common-platform/platform-support/helm-charts/landlord
Update Concerns#
General Concerns#
- Flux:
- Helm:
- Kustomize:
- APIs are still evolving, be sure to check release notes for deprecation.