The GitOps Toolkit source management component
Go to file
Sunny 42bc3e8b0a helmrepo-oci: check before rec on type switching
When a HelmRepository with "default" spec.type is switched to "oci", the
existing HelmRepository is processed by HelmRepositoryReconciler by
running reconcileDelete() which removes all the previous status
information and allows the HelmRepositoryOCIReconciler to process the
object and add its own status data. But at times, when
HelmRepositoryOCIReconciler starts processing a HelmRepository with
stale status data from the client cache, it contains the stale
conditions that are owned only by HelmRepositoryReconciler and isn't
managed by HelmRepositoryOCIReconciler. This results in situations where
Ready is marked as True with the latest generation of the object and the
unmanaged stale conditions remain in the previous generation, resulting
in unexpected status conditions.

In the observed flaky tests,
`TestHelmRepositoryReconciler_ReconcileTypeUpdatePredicateFilter` would
fail because of stale ArtifactInStorage condition with previous
generation value.

This change adds a check in the HelmRepositoryOCIReconciler to start
processing the object only once the stale unmanaged conditions have been
removed.

Signed-off-by: Sunny <darkowlzz@protonmail.com>
2023-02-07 20:11:49 +05:30
.github/workflows CI: Replace engineerd/setup-kind with helm/kind-action 2023-01-30 18:25:09 +02:00
api Update dependencies 2023-01-27 14:03:04 +02:00
config Release v0.34.0 2023-01-31 20:56:10 +05:30
controllers helmrepo-oci: check before rec on type switching 2023-02-07 20:11:49 +05:30
docs Add a note about sourceignore recursion 2023-01-30 09:47:52 -05:00
hack build: Remove unused scripts 2022-12-12 15:34:30 +00:00
internal Use condition checker with gomega WithT 2023-02-07 20:11:46 +05:30
pkg purge minio test container at the end of tests 2022-12-23 03:46:01 +05:30
tests/fuzz libgit2: Remove libgit2 from fuzzers 2022-12-12 15:34:29 +00:00
.dockerignore libgit2: Remove references to libgit2 from code 2022-12-12 15:34:28 +00:00
.gitignore Update libgit2 to 1.1.1-6 2022-02-07 13:00:57 +00:00
.goreleaser.yaml Publish SBOM and sign release artifacts 2022-01-20 13:49:36 +02:00
CHANGELOG.md Release v0.34.0 2023-01-31 20:56:10 +05:30
CODE_OF_CONDUCT.md Add governance files like DCO, MAINTAINERS, CoC 2020-04-12 23:54:35 +02:00
DCO Add governance files like DCO, MAINTAINERS, CoC 2020-04-12 23:54:35 +02:00
DEVELOPMENT.md libgit2: Update documentation 2022-12-12 15:34:30 +00:00
Dockerfile Update Alpine to 3.17 2023-01-27 16:26:47 +02:00
LICENSE Initial commit 2020-04-05 11:55:46 +03:00
MAINTAINERS Paulo is Core Maintainer 2023-01-31 17:13:16 +01:00
Makefile build: Remove unused scripts 2022-12-12 15:34:30 +00:00
PROJECT Add OCIRepository kind to v1beta2 API 2022-08-02 13:07:05 +03:00
README.md Disable caching of secrets and configmaps 2023-01-27 11:38:56 +00:00
go.mod Use condition checker with gomega WithT 2023-02-07 20:11:46 +05:30
go.sum Use condition checker with gomega WithT 2023-02-07 20:11:46 +05:30
main.go Disable caching of secrets and configmaps 2023-01-27 11:38:56 +00:00

README.md

Source controller

CII Best Practices e2e report license release

The source-controller is a Kubernetes operator, specialised in artifacts acquisition from external sources such as Git, Helm repositories and S3 buckets. The source-controller implements the source.toolkit.fluxcd.io API and is a core component of the GitOps toolkit.

overview

Features:

  • authenticates to sources (SSH, user/password, API token)
  • validates source authenticity (PGP)
  • detects source changes based on update policies (semver)
  • fetches resources on-demand and on-a-schedule
  • packages the fetched resources into a well-known format (tar.gz, yaml)
  • makes the artifacts addressable by their source identifier (sha, version, ts)
  • makes the artifacts available in-cluster to interested 3rd parties
  • notifies interested 3rd parties of source changes and availability (status conditions, events, hooks)
  • reacts to Git push and Helm chart upload events (via notification-controller)

See the docs folder for more information.