examples/

directory
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 11, 2024 License: Apache-2.0

README

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.

Directories

Path Synopsis
configfile
custom/v1alpha1
Package v1alpha1 provides the CustomControllerManagerConfiguration used for demoing componentconfig +kubebuilder:object:generate=true
Package v1alpha1 provides the CustomControllerManagerConfiguration used for demoing componentconfig +kubebuilder:object:generate=true
crd
pkg
+kubebuilder:object:generate=true +groupName=chaosapps.metamagical.io
+kubebuilder:object:generate=true +groupName=chaosapps.metamagical.io

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL