This commit adds support for HelmRelease v1 resources with backwards
compatability for v1beta1 resources, it also reintroduces some of
the removed `integrations/` packages, as those resources have been
removed from the Helm operator.
The v1 resource is prioritized over v1beta1 resources, as Flux is
only aware of the resource kind and not the api version. The
prioritization means that if there are two resources with the same
namespace and name, Flux will only see the v1 resource. The fallback
is based on returned errors from the API, this comes at a cost, as
errors during the first try may actually be relevant.
The version of `github.com/fluxcd/helm-operator` has been pinpointed
Before this change, and due to the fact that we no longer compare
the spec of the given HelmRelease against the spec of the old one,
every status and condition update would enqueue a new release job.
By updating the subresource instead of the resource, we no longer
trigger the update event, causing no unwanted trigger of a release.
Instead of requiring people to cut across from the old version of the
helm operator to the new, support both in fluxd.
This means you can not only have different versions of the custom
resources, you can keep running the old operator, while you transition
to the new.
To keep the `kind` part of Resource IDs unambiguous, I have renamed
the new custom resource to `HelmRelease` (it was already in the API
`flux.weave.works/v1beta`). This is the same as the kind bitnami's
helm operator uses, but the `apiVersion` is different (so Kubernetes
won't confuse them), and it's unlikely you'd be running both