k3OS Config Operator
This operator will keep all fields of k3OS's config.yaml
files in sync. Specifically, it's written to:
- sync node labels
- sync node taints
- keep the
/var/lib/rancher/k3os/config.yaml
on each node in sync
It runs as a DaemonSet on each node in the cluster.
It was written to address this part of the k3OS README:
The /var/lib/rancher/k3os/config.yaml or config.d/* files are intended to be used at runtime. These files can be manipulated manually, through scripting, or managed with the Kubernetes operator.
That Kubernetes operator doesn't exist. At least, it didn't until now. π€
Prerequisites
- A k3OS cluster that's running nominally.
- A local clone of https://github.com/annismckenzie/picl-k3os-image-generator (my fork).
- The
config
directory with YAML files as describes in https://github.com/sgielen/picl-k3os-image-generator#getting-started:
βββ config
β βββ dc:a6:32:xx:xx:xx.yaml
β βββ dc:a6:32:xx:xx:xx.yaml
β βββ dc:a6:32:xx:xx:xx.yaml
- Your local
kubectl
configured to push YAMLs to your k3OS cluster.
- Execute
make update-k3osconfig-secret
in your local checkout of picl-k3os-image-generator
to validate the YAML files in the config
directory and to generate the secret for the operator.
- Execute
make deploy-k3os-config
in your local checkout of picl-k3os-image-generator
. This will generate the configuration and push it into the cluster.
- Continue on with the installation steps outlined below.
Installation
kubectl apply -f https://raw.githubusercontent.com/annismckenzie/k3os-config-operator/v0.3.2/deploy/operator.yaml
Releasing
- Create
release-vx.y.z
branch. Update config/release/kustomization.yaml
with the new version, commit.
- Tag locally with
vx.y.z
. Make sure the working directory is clean.
- Run
make render-static-manifests
. This will build and push the new multi-arch image.
- Update the installation path above with the new tag.
- Commit the updated
deploy/operator.yaml
and the update to the README.
- Recreate the local tag, push the tag, then update the changelog with
make update-changelog
. Commit and push.
- Merge the release PR.