The GitOps Toolkit source management component
Go to file
Hidde Beydals 48ebbcd64e Introduce more explicit Condition types
This commit introduces new Condition types to the v1beta1 API,
facilitating easier observation of (potentially) problematic state for
end-users.

- `ArtifactUnavailableCondition`: indicates there is no artifact
  available for the resource. This Condition should be set by the
  reconciler as soon as it observes the absence of an artifact for a
  source.
- `CheckoutFailedCondition`: indicates a transient or persistent
  checkout failure. This Condition should be set by the reconciler as
  soon as it observes a Git checkout failure, including any
  prerequisites like the unavailability of the referenced Secret used
  for authentication. It should be deleted as soon as a successful
  checkout has been observed again.
- `SourceVerifiedCondition`: indicates the integrity of the source has
  been verified. The Condition should be set to True or False by the
  reconciler based on the result of the integrity check.
  If there is no verification mode and/or secret configured, the
  Condition should be removed.
- `IncludeUnavailableCondition`: indicates one of the referenced
  includes is not available. This Condition should for example be set
  by the reconciler when the include does not exist, or does not have
  an artifact. If the includes become available, it should be deleted.
- `ArtifactOutdatedCondition`: indicates the current artifact of the
  source is outdated. This Condition should for example be set by the
  reconciler when it notices there is a newer revision for an artifact,
  or the previously included artifacts differ from the current available
  ones. The Condition should be removed after writing a new artifact
  to the storage.

Signed-off-by: Hidde Beydals <hello@hidde.co>
2021-07-30 12:20:26 +02:00
.github Print pods status on e2e failures 2021-06-29 16:40:15 +03:00
api Introduce more explicit Condition types 2021-07-30 12:20:26 +02:00
config Introduce more explicit Condition types 2021-07-30 12:20:26 +02:00
controllers Drop deprecated `io/ioutil` 2021-07-29 09:58:00 +02:00
docs Update Helm to v3.6.1 2021-06-18 12:31:23 +02:00
hack Add LastHandledReconcileAt to source statuses 2020-11-19 13:21:59 +01:00
internal Drop deprecated `io/ioutil` 2021-07-29 09:58:00 +02:00
pkg Drop deprecated `io/ioutil` 2021-07-29 09:58:00 +02:00
.gitignore ci: Add release workflow 2020-04-13 18:28:22 +03:00
CHANGELOG.md Release v0.15.3 2021-06-29 12:27:52 +03:00
CODE_OF_CONDUCT.md Add governance files like DCO, MAINTAINERS, CoC 2020-04-12 23:54:35 +02:00
CONTRIBUTING.md Document how to build libgit2 from source 2020-12-09 17:00:17 +01:00
DCO Add governance files like DCO, MAINTAINERS, CoC 2020-04-12 23:54:35 +02:00
Dockerfile Use libgit2 from "unstable" / "sid" 2021-06-22 13:00:16 +02:00
LICENSE Initial commit 2020-04-05 11:55:46 +03:00
MAINTAINERS Share maintainers from fluxcd/flux2 2020-12-01 12:20:27 +00:00
Makefile Update K8s, controller-runtime and fluxcd/pkg deps 2021-06-08 13:41:34 +02:00
PROJECT Promote API to v1beta1 2020-09-30 16:11:00 +03:00
README.md add CII badge 2021-04-08 12:13:56 +02:00
go.mod Update Helm to v3.6.3 2021-07-14 23:24:26 +02:00
go.sum Update Helm to v3.6.3 2021-07-14 23:24:26 +02:00
main.go Panic on non-nil AddToScheme errors in main init 2021-06-17 15:38:24 +02: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)