Managing Kubewarden with Rancher Fleet
The Kubewarden Helm charts, like other Helm charts, can be managed via Rancher Fleet. Rancher Fleet uses Kubernetes CRDs to define a GitOps approach for managing Kubernetes clusters. It does this by defining Fleet Bundles.
The Kubewarden charts are normal charts, they have dependencies (such as
cert-manager), and depend transitively on each other (
kubewarden-defaults, see the Quickstart
On Rancher Fleet, one can codify the chart dependencies using
dependsOn in the fleet.yaml file.
At the time of writing and by how Rancher Fleet works, one may see transient errors until the charts are ready, such as:
ErrApplied(1) [Cluster fleet-local/local: dependent bundle(s) are not ready:
These errors don't signify a problem, and once each chart has finished deploying, they will be gone.
When blindly removing the GitRepo, all 3 Kubewarden charts get removed at once.
This means the
kubewarden-crds chart gets removed.
Kubewarden uses a pre-delete helm hook job in
kubewarden-controller chart that
deletes the default policy-server. This pre-delete hook is needed because we
need to vacate the webhooks of the policies (this is true any Policy Engine)
before deleting the PolicyServer. If not, the cluster will have webhooks for
policies that don't exist anymore, rejecting everything and being in a
Removing the GitRepo and hence the
kubewarden-crds chart at the same time as
kubewarden-controller chart will make the pre-delete hook job to fail, and
the removal to be incomplete, leaving leftovers in the cluster.
Uninstalling CRDs automatically is normally not supported in any tooling, and Rancher Fleet is no exception.
If you want to perform a correct removal, make sure to remove first the Bundle
kubewarden-defaults from the cluster by commiting those changes to the
repo holding the Fleet configuration and waiting for it being applied. Then
kubewarden-controller in the same way, and last,
Another option is to add 2 GitRepos, one for the CRDs only, and another for the rest of the Kubewarden charts. This way you can remove the Kubewarden charts first and the Kubewarden CRDs last.
Have a look at github.com/kubewarden/fleet-example for an example of Fleet Bundle definitions.