Operator that configures nodes that are part of a Kubernetes cluster. Used in our clusters as a minimal replacement for Ansible.
This operator configures multiple parts of a Ubuntu server, such as:
- Configuration of kernel parameters (via sysctl)
- Loading of kernel modules
- Creation of systemd units and systemd overrides
- Writing blocks of text to files
- Installation of apt packages
- A running Kubernetes cluster
- A dedicated namespace
- If any kind of pod security admission policy is enforced, ensure that nodeconfig operator has an unrestricted policy.
-
Install the chart with:
helm upgrade --install --create-namespace -n nco-system nco oci://ghcr.io/whitestack/node-config-operator-chart
-
The operator will start, but no changes will be applied to hosts until a valid
NodeConfig
CR is applied.
A sample CR can be found here
This project aims to follow the Kubernetes Operator pattern
It uses Controllers which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster.
- Install the CRDs into the cluster:
make install
- Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
make run
NOTE: You can also run this in one step by running: make install run
If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
make manifests
You can run:
make dev
To generate the controller types, manifests, update the chart and autogenerated documentation. You must run this command before every push.
NOTE: Run make --help
for more information on all potential make
targets
More information can be found via the Kubebuilder Documentation