Skip to content

Sebastian-RG/node-config-operator

 
 

Repository files navigation

Node Config Operator

Operator that configures nodes that are part of a Kubernetes cluster. Used in our clusters as a minimal replacement for Ansible.

Description

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

Quickstart

Prerequisites

  • 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.

Deploy using helm

  1. Install the chart with: helm upgrade --install --create-namespace -n nco-system nco oci://ghcr.io/whitestack/node-config-operator-chart

  2. 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

Reference

Contributing

How it works

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.

Test It Out

  1. Install the CRDs into the cluster:
make install
  1. 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

Modifying the API definitions

If you are editing the API definitions, generate the manifests such as CRs or CRDs using:

make manifests

Dev notes

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 70.0%
  • Shell 13.6%
  • Makefile 13.2%
  • Smarty 1.8%
  • Dockerfile 1.4%