Skip to content

Latest commit

 

History

History
36 lines (27 loc) · 1.76 KB

README.md

File metadata and controls

36 lines (27 loc) · 1.76 KB

Examples

These two examples represent the usage of controller-runtime libraries for built-in Kubernetes resources as well as custom resources.

builtins/

This example implements a custom controller and webhooks for the existing ReplicaSet resource.

  • controller.go: implements a reconciler for ReplicaSets
  • mutatingwebhook.go: implements a mutating webhook that adds an annotation to every incoming Pod ("example-mutating-admission-webhook" = "foo")
  • validatingwebhook.go: implements a validating webhook that checks to see if a Pod has the aforementioned annotation
  • main.go
    1. Creates a new manager
    2. Creates a new controller that watches both ReplicaSets and Pods and reconciles the objects with the implemented reconciler
    3. Registers the mutating and validating webhooks with the manager
    4. Starts the manager

crd/

This example implements a new Kubernetes resource, ChaosPod, and creates a custom controller that watches it and webhooks that mutate and validate.

  • pkg/
    • resource.go: defines the schema for the ChaosPod API and implements validate and mutate webhooks
    • groupversion_info.go: specifies the Group and Version for the ChaosPod API
    • zz_generated.deepcopy.go: deep copy functions generated by kubebuilder
  • main.go
    1. Creates a new manager
    2. Adds ChaosPod resource to the manager's schema
    3. Implements a reconciler to execute the desired behavior of the ChaosPod API
    4. Creates a new controller that watches ChaosPods and reconciles the objects with the implemented reconciler
    5. Adds ChaosPod webhooks to manager
    6. Starts the manager

Deploying and Running

To install and run the provided examples, see the Kubebuilder Quick Start.