Commit Graph

64 Commits

Author SHA1 Message Date
stefanprodan f16e5f041a Promote API to v1beta1 2020-09-30 16:11:00 +03:00
Hidde Beydals 431ea05427 Implement `fluxcd/pkg/meta/api` in APIs 2020-09-30 10:18:43 +02:00
Hidde Beydals b9576d56f1 Prevent resources getting stuck on transient err
This commit ensures that resources will only return early if they are
already in a `Ready==True` state. If not, but the status object somehow
still reports that it has an artifact, the reconciliation will continue
to ensure and/or guarantee state, and to prevent a deadlock from
happening.
2020-09-22 17:00:54 +02:00
Hidde Beydals 270b6a5c0c api: add HasRevision method to Artifact 2020-09-21 22:41:51 +02:00
stefanprodan c2c61b10a1 Implement S3 Bucket controller 2020-09-18 16:11:24 +03:00
Hidde Beydals f40a42115b Conditionally remove artifact from source status
We only want to remove it if it is no longer in storage, otherwise we
still want to keep it around till we have a new artifact.
2020-09-11 10:10:47 +02:00
Hidde Beydals b5d869db03 Include PATCH rule for events in manager-role
During high custom resource count / low interval tests, I was greated
with a `cannot patch resource "events"` message. This happened due to
event compaction, where it will perform a patch instead of a create.
By giving the role the permission to do so this should no longer pose
a problem.
2020-09-10 21:17:10 +02:00
Hidde Beydals d03f4fa4c4 Change advertised artifact URLs on hostname change 2020-09-10 14:13:46 +02:00
Hidde Beydals 7a3a5938d3 Mark resources as progressing on spec changes 2020-09-10 14:13:41 +02:00
Hidde Beydals 42706a342b Calculate checksums during file writes 2020-09-10 13:00:08 +02:00
Michael Bridgen 901463eaaa Use pkg/runtime for predicate and logger 2020-09-09 17:57:16 +01:00
Hidde Beydals 68947cfca6 controllers: resolve issue with gc on delete
When a delete of a resource is requested a `deletionTimestamp` is set
on the resource by the requester, this also results in a generation
change of the resource.

If the resource is under reconciliation while this timestamp is set, and
had not produced an artifact earlier on, this becomes a problem as the
artifact metadata is used to determine what should be garbage collected
on a deletion, resulting in stray files for resources that are no longer
present.

To resolve this for now, we always create a new artifact object for the
resource when `all==true` on the GC method call, and no longer rely on
the presence of the artifact object on the resource itself.
2020-09-09 13:41:56 +02:00
Hidde Beydals 99b74da044 api/artifact: add checksum field to artifact
This includes a change to how the revision for HelmRepository sources is
recorded, as this will now equal to the generated timestamp from the index
in RFC3339Nano format.
2020-09-09 13:41:56 +02:00
Hidde Beydals 8e1b213da5 Change CRD domain to 'source.toolkit.fluxcd.io'
Due to required domain changes for the helm-controller so that it
can co-exist in a cluster with the Helm Operator, other Toolkit
components are moving to a *.toolklit.fluxcd.io domain too.
2020-07-30 21:50:46 +02:00
stefanprodan e65e2f0623 Make git package public 2020-07-20 13:10:18 +03:00
Hidde Beydals e72855f88d Refactor garbage collectors to finalizers 2020-07-16 14:18:33 +02:00
stefanprodan eb20a8f465 Improve error handling and reporting
- return reconciliation error so that controller runtime metrics record failures
- change structure logging labels to match the controller runtime format
- log the reconciliation duration for all kinds
- normalise log messages and labels across all controllers
2020-07-15 12:24:11 +03:00
Erik Hollensbe b1b1dbcec5 Support programming excluded patterns in gitrepository spec
-- More coming in this commit message soon

Signed-off-by: Erik Hollensbe <github@hollensbe.org>
2020-07-08 14:38:44 +00:00
stefanprodan 6f89f2d4c5 Implement event recording
- emit Kubernetes events for artifact acquisition actions
- forward events to notification controller
2020-07-03 08:46:26 +03:00
Hidde Beydals 39ee34897a Replace tar/gzip shell-out with Go implementation 2020-06-06 19:15:52 +02:00
Hidde Beydals 96a76c2ad8
Merge pull request #55 from fluxcd/tar-ignore 2020-05-13 20:06:01 +02:00
Hidde Beydals e880a45474 controllers: control tar ignores w/ exclude files
This commit changes the file excludes for tarballs generated for
Git repository artifacts from a fixed set of strings to include
exclusion files files. It currently takes `.sourceignore` and
in the root of the given directory into account.

In addition to this the Git VCS related files that are ignored have
been extended to not only include the .git/ directory, but also the
.gitignore, .gitmodules and .gitattributes files. Mimicking part of
the --exclude-vcs flag not available on all tar versions.
2020-05-13 19:45:31 +02:00
Hidde Beydals 9c67baa158 controllers: implement checkout strategies 2020-05-03 23:04:12 +02:00
Hidde Beydals e42561f13b git: refactor transport into strategies 2020-05-03 10:03:47 +02:00
Hidde Beydals d0487302f6 git/ssh: use in-memory known hosts database 2020-05-03 10:03:42 +02:00
Hidde Beydals 48fcc52a3d controllers: factor out GitRepository verification 2020-05-02 21:44:27 +02:00
Hidde Beydals 2c0b175807 controllers: check GitRepository reference != nil
To prevent the reconciler from panicing when no reference is
configured for the GitRepository.
2020-04-29 16:45:25 +02:00
stefanprodan 5ee875afbd status: add revision to the ready condition message 2020-04-29 08:49:45 +03:00
stefanprodan f0497d3164 Fix revision for git tags 2020-04-28 20:18:33 +03:00
stefanprodan 9540efe9de git: add archive integrity check 2020-04-27 13:39:36 +03:00
stefanprodan 8071dadbf0 status: record progressing
Set ready condition to unknown while the reconciliation is progressing.
This allows other operators to wait for a sync to complete.
2020-04-27 11:16:35 +03:00
stefanprodan 502a80b194 git: Update status after sync failure 2020-04-26 23:21:16 +03:00
Hidde Beydals 2103d38a70
Merge pull request #33 from fluxcd/git-timeout
api: add timeout field to GitRepositorySpec
2020-04-22 12:16:31 +02:00
Hidde Beydals 920d37fcda api: add timeout field to GitRepositorySpec
This commit adds a timeout field to the GitRepositorySpec to be used
during the git clone operation when reconciling the resource.
When no interval is defined the default timeout returned by the getter
is 20 seconds.

The timeout can not be added yet to the Helm related sources as it
is currently not possible to inject anything custom into the HTTP
client from the Helm HTTP getter except for the authentication
options built in. A submit has been submitted to make this possible
and is waiting for review.

This commit includes some context changes to the other reconcilers
to tidy them up and make them depend on a single background context.

It also includes some added docblocks that crossed my path.
2020-04-22 11:42:27 +02:00
Hidde Beydals 5b77100589 controllers: make concurrent reconciles config opt
Introduces new helpers and config structs to all reconcilers to
set the max concurrent reconciles number.

Introduces a new flag `--concurrent` to configure the number of
concurrent reconciles per reconciler, defaults to `2`.
2020-04-19 11:52:10 +02:00
stefanprodan 40c1851ffc Add verification failed reason 2020-04-14 18:35:23 +03:00
Stefan Prodan 440c70d010 Fix public key naming
Co-Authored-By: Hidde Beydals <hiddeco@users.noreply.github.com>
2020-04-14 18:26:59 +03:00
stefanprodan 96e289fda0 Implement PGP signature verification
- check if HEAD commit is PGP signed
- load GPG public keys from Kubernetes secret
- verify PGP signature
2020-04-14 18:25:25 +03:00
Hidde Beydals 45da46216c
Merge pull request #21 from fluxcd/log-context
Use same logger during reconcile operations
2020-04-14 12:08:53 +02:00
stefanprodan 1832b2d11d Introduce source interface
- add source interface with `GetArtifact` and `GetInterval` funcs
- implement source interface for all types
- fix HelmChart requeue
2020-04-14 12:49:31 +03:00
Hidde Beydals b0f4908af0 Use same logger during reconcile operations 2020-04-14 11:36:46 +02:00
Hidde Beydals 90348ebf08 Internal helpers for Git auth methods from secrets 2020-04-13 13:19:23 +02:00
Hidde Beydals ea610829c3 Helm repository and chart HTTP and TLS auth 2020-04-13 11:47:51 +02:00
Hidde Beydals 1b391f4896 Move artifact gc to delete event predicate 2020-04-13 01:35:44 +02:00
Hidde Beydals 629da726c6 Rename RepositoryChange to SourceChange predicate 2020-04-13 01:11:07 +02:00
Hidde Beydals 4bde6bf880 Prevent delete from wiping all artifacts for kind 2020-04-12 22:07:57 +02:00
Hidde Beydals 7e99998c5f Factor out injection of kind string in controllers 2020-04-12 22:07:53 +02:00
stefanprodan f9a35a6613 Move status condition helpers to API 2020-04-12 18:12:28 +03:00
stefanprodan 2bbcd91544 Add artifact to Git and Helm repos status
- create index.yaml symlink for Helm repos
- set symlink URL in status
2020-04-12 17:39:07 +03:00
stefanprodan 41d36f54ae Wrap errors in git controller 2020-04-12 17:13:50 +03:00