Understanding the various CRDs available in Flux v2

Flux v2 is a GitOps tool for Kubernetes that enables declarative infrastructure updates. It uses Custom Resource Definitions (CRDs) to extend the Kubernetes API with custom resources. In this documentation, we will cover the various CRDs available in Flux v2, including:

  • GitRepository
  • OCIRepository
  • HelmRepository
  • HelmChart
  • Bucket
  • Kustomization
  • HelmRelease
  • ImageRepository
  • ImagePolicy
  • ImageUpdateAutomation

What is Custom Resource Definitions (CRDs)?

Custom Resource Definitions (CRDs) are a way to extend the Kubernetes API with custom resources. CRDs define a new type of resource that can be managed by Kubernetes. They consist of a schema that defines the structure of the custom resource, and a controller that manages the lifecycle of the resource.

Learn more about CRDs in the Kubernetes documentation

Why is Custom Resource Definitions (CRDs) important?

CRDs are important because they allow you to define custom resources that can be managed by Kubernetes. This enables you to extend the capabilities of Kubernetes to meet the specific needs of your application.

For example, Flux v2 uses CRDs to manage Git repositories, Helm repositories, Helm charts, and more. By defining these resources as CRDs, Flux v2 is able to manage them as first-class citizens in the Kubernetes cluster.

GitRepository

The GitRepository CRD represents a Git repository that Flux can manage. It includes fields for the Git URL, branch, and commit ref.

apiVersion: sourceright.io/v1beta1
          kind: GitRepository
          metadata:
            name: my-repo
          spec:
            url: [email protected]:username/repo.git
            branch: main
            commitRef: refs/heads/main
          

Learn more about the GitRepository CRD in the Flux documentation

OCIRepository

The OCIRepository CRD represents an OCI registry that Flux can manage. It includes fields for the registry URL and the authentication method.

apiVersion: sourceright.io/v1beta1
          kind: OCIRepository
          metadata:
            name: my-registry
          spec:
            url: registry.example.com
            auth:
              ocicredHelper:
                name: my-ocicred-helper
          

Learn more about the OCIRepository CRD in the Flux documentation

HelmRepository

The HelmRepository CRD represents a Helm repository that Flux can manage. It includes fields for the Helm chart repository URL and the chart version.

apiVersion: helm.fluxcd.io/v1beta1
          kind: HelmRepository
          metadata:
            name: my-repo
          spec:
            url: https://example.com/charts
            interval: 30m
          

Learn more about the HelmRepository CRD in the Flux documentation

HelmChart

The HelmChart CRD represents a Helm chart that Flux can manage. It includes fields for the Helm chart repository, chart name, and release name.

apiVersion: helm.fluxcd.io/v1beta1
          kind: HelmChart
          metadata:
            name: my-chart
          spec:
            repository:
              url: https://example.com/charts
            chart:
              name: my-chart
              version: 1.0.0
            release:
              name: my-release
              namespace: my-namespace
          

Learn more about the HelmChart CRD in the Flux documentation

Bucket

The Bucket CRD represents a cloud storage bucket that Flux can manage. It includes fields for the cloud provider, bucket name, and access key.

apiVersion: sourceright.io/v1beta1
          kind: Bucket
          metadata:
            name: my-bucket
          spec:
            provider:
              name: aws
            name: my-bucket
            accessKey: my-access-key
          

Learn more about the Bucket CRD in the Flux documentation

Kustomization

The Kustomization CRD represents a Kustomization file that Flux can manage. It includes fields for the patch files and the base directory.

apiVersion: kustomize.config.k8s.io/v1beta1
          kind: Kustomization
          metadata:
            name: my-kustomization
          spec:
            patches:
            - patch: |
                apiVersion: v1
                kind: Pod
                metadata:
                  name: my-pod
                spec:
                  containers:
                  - name: my-container
                    image: my-image
          

Learn more about the Kustomization CRD in the Flux documentation

HelmRelease

The HelmRelease CRD represents a Helm release that Flux can manage. It includes fields for the Helm chart, release name, and namespace.

apiVersion: helm.fluxcd.io/v1beta1
          kind: HelmRelease
          metadata:
            name: my-release
          spec:
            chart:
              repository:
                url: https://example.com/charts
              name: my-chart
              version: 1.0.0
            release:
              name: my-release
              namespace: my-namespace
          

Learn more about the HelmRelease CRD in the Flux documentation

ImageRepository

The ImageRepository CRD represents an image registry that Flux can manage. It includes fields for the registry URL and the authentication method.

apiVersion: sourceright.io/v1beta1
          kind: ImageRepository
          metadata:
            name: my-registry
          spec:
            url: registry.example.com
            auth:
              secretRef:
                name: my-secret
          

Learn more about the ImageRepository CRD in the Flux documentation

ImagePolicy

The ImagePolicy CRD represents an image policy that Flux can manage. It includes fields for the image repository, image tag, and the image scanning provider.

apiVersion: security.fluxcd.io/v1beta1
          kind: ImagePolicy
          metadata:
            name: my-policy
          spec:
            repository:
              url: registry.example.com
              tag: latest
            scan:
              provider:
                name: trivy
          

Learn more about the ImagePolicy CRD in the Flux documentation

ImageUpdateAutomation

The ImageUpdateAutomation CRD represents an image update automation that Flux can manage. It includes fields for the image repository, image tag, and the image scanning provider.