Although all the APIs had interval as a required field, when tests objects were created, they had the zero value of interval, which the API server accepts. A zero interval value results in the test objects to reconcile only once when they are created and never reconcile again unless there's an update to the object. Most of the tests worked with this behavior. With HelmRepository removing the interval requirement and adding an internal default, all the HelmRepository objects created in the tests without any interval have a default interval value which results in objects to reconcile automatically if they are not cleaned up after running tests. TestHelmRepositoryReconciler_InMemoryCaching and TestHelmChartReconciler_Reconcile create HelmRepository but doesn't delete it at the end. This leads to a reconciliation of HelmRepository outside of the test in the envtest environment. It just happened to be that the reconciliation time matches with the end of test time. At the end of the test run, the reconcilers receive shutdown signal and any test server, like helmrepository server, are stopped. A HelmRepository reconciliation triggered just before the shutdown signal gets stuck in the reconciliation. HelmRepository can't download the index as the test index server has stopped and hangs for some time. The HelmRepository reconciler worker remains in active state, unlike other reconciler workers that shut down, resulting in the test to timeout at the end. The is fixed by deleting the HelmRepository object created in TestHelmRepositoryReconciler_InMemoryCaching and TestHelmChartReconciler_Reconcile at the end of the test similar to other tests. Signed-off-by: Sunny <darkowlzz@protonmail.com> |
||
---|---|---|
.github | ||
api | ||
config | ||
docs | ||
hack | ||
internal | ||
pkg | ||
tests/fuzz | ||
.dockerignore | ||
.gitignore | ||
.goreleaser.yaml | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
DCO | ||
DEVELOPMENT.md | ||
Dockerfile | ||
LICENSE | ||
MAINTAINERS | ||
Makefile | ||
PROJECT | ||
README.md | ||
go.mod | ||
go.sum | ||
main.go |
README.md
Source controller
The source-controller is a Kubernetes operator, specialised in artifacts acquisition from external sources such as Git, OCI, Helm repositories and S3-compatible buckets. The source-controller implements the source.toolkit.fluxcd.io API and is a core component of the GitOps toolkit.
APIs
Kind | API Version |
---|---|
GitRepository | source.toolkit.fluxcd.io/v1 |
OCIRepository | source.toolkit.fluxcd.io/v1beta2 |
HelmRepository | source.toolkit.fluxcd.io/v1beta2 |
HelmChart | source.toolkit.fluxcd.io/v1beta2 |
Bucket | source.toolkit.fluxcd.io/v1beta2 |
Features
- authenticates to sources (SSH, user/password, API token, Workload Identity)
- validates source authenticity (PGP, Cosign)
- 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, Helm and OCI artifacts push events (via notification-controller)
Guides
- Get started with Flux
- Setup Webhook Receivers
- Setup Notifications
- How to build, publish and consume OCI Artifacts with Flux
Roadmap
The roadmap for the Flux family of projects can be found at https://fluxcd.io/roadmap/.
Contributing
This project is Apache 2.0 licensed and accepts contributions via GitHub pull requests. To start contributing please see the development guide.