The GitOps Toolkit is a set of APIs and controllers that make up the runtime for Flux v2. It is designed to enable continuous delivery by integrating tightly with all relevant APIs and SDKs, and providing the best possible Git support for GitOps. This document will explain the key technologies and dependencies of the GitOps Toolkit and how to use it to extend or build your own systems for continuous delivery.
The Big Picture
The GitOps Toolkit is a collection of focused controllers that are responsible for different functions and capabilities of Flux v2. These controllers include source
, kustomize
, image-automation
, notification
, helm
, etc. The GitOps Toolkit integrates very tightly with all relevant APIs and SDKs, and does not shell out to Git for GitOps.
Design Philosophy
The GitOps Toolkit is designed to be modular, extensible, and easy to use. It follows the Kubernetes API versioning pattern, and the GitOps Toolkit APIs follow the Kubernetes API versioning pattern. The GOTK Custom Resource Definitions, which are at v1beta1, v1beta2, v2beta1 and v2beta2, and their controllers are considered stable and production-ready.
Programming Languages
The GitOps Toolkit is built using Go, and the Flux CLI follows the Semantic Versioning scheme. The GitOps Toolkit APIs follow the Kubernetes API versioning pattern.
Kubernetes API Extension System
The GitOps Toolkit uses the Kubernetes API Extension System to extend the Kubernetes API with custom resources. This allows users to define custom resources that can be managed and automated using Flux.
Git
Git is used as the source of truth for the desired state of the system. The GitOps Toolkit integrates tightly with Git, and provides the best possible Git support for GitOps.
Helm
Helm is used for package management and deployment of applications on Kubernetes. The GitOps Toolkit includes a Helm controller that can manage Helm releases.
Prometheus
Prometheus is used for monitoring and alerting in the GitOps Toolkit. It is used to monitor the health and status of the Flux controllers and the applications being managed.
GitOps
GitOps is a practice for continuous delivery using Git as the source of truth. The GitOps Toolkit provides the APIs and controllers needed to implement GitOps on Kubernetes.
Kustomize
Kustomize is used for customizing and configuring Kubernetes resources. The GitOps Toolkit includes a Kustomize controller that can manage Kustomize configurations.
Alpine Linux
Alpine Linux is used as the base image for the Flux controllers.
Docker
Docker is used for building and distributing the Flux controllers.
YAML
YAML is used for defining Kubernetes resources and configurations in the GitOps Toolkit.
Getting Started
To get started with the GitOps Toolkit, you can follow the Getting Started guide in the Flux documentation. This guide will take you through the process of installing Flux, deploying the controllers, and configuring your first GitOps delivery pipeline.
Flux Ecosystem
There are a variety of UIs for Flux in the Flux Ecosystem, including Weave GitOps, VS Code GitOps Tools, and Flux Extensions. These projects extend Flux with new capabilities and provide additional tools for managing and automating Kubernetes resources.
Further Information
For more information on the GitOps Toolkit, you can refer to the following resources: