presentations/kubebuilder/content.md
2019-06-12 20:24:09 +02:00

3.1 KiB

Kubebuilder


Content

  • CRDs
  • Controller / Operator
  • Kubebuilder
  • Live Coding
  • Real Life Use Cases

CRD's

  • introduced in Kubernetes 1.7
  • replacing "third party ressources"
  • enables users to create own Kubernetes Objects
  • can be used like any other object

--

Resources and Kinds

"A resource is an endpoint in the Kubernetes API that stores a collection of API objects of a certain kind."

--

Kinds

  • API types
  • called "Kinds"
  • e.g. Pod, Deployment etc.

--

Resources

  • use of a "Kind"
  • Pod resource holds Pod Objects

Controller

A control loop that watches the state [...] and makes changes attempting to move the current state towards the desired state.

--

Controller

  • integrated in kube-apiserver or kube-controller-manager
  • watch builtin k8s objects (core, apps, batch)
  • logic ontop of data
  • create sub-resources

--

Controller

deployment controller

  • watches Deployments
  • creates and deletes ReplicaSets
  • scales ReplicaSets for rolling deployments

--

Controller

kubelet

  • watches PodSpecs
  • starts/stops containers

--

Operator

  • term coined by CoreOS
  • same as controller but for CRDs
  • integrate operational knowledge
  • provide usability features
    • updates
    • scaling
    • backups
    • integration with k8s

Kubebuilder

"Kubebuilder is a framework for building Kubernetes APIs using custom resource definitions (CRDs)."

--

Kubebuilder

  • First release in March 2018
  • Version 2.0.0 five days ago

--

Kubebuilder

Motivation

  • need to create a lot of files
  • need to create much boilerplate code

--

Kubebuilder

What Kubebuilder is doing..

  • generates the whole project
  • CRD's, RBAC settings, tests etc.
  • so you can focus on your use case

Live Coding

Check out the source at
https://github.com/apricote/kubebuilder-poke-sync


Real Life Use Cases

Databases

--

Real Life Use Cases

Provisioning external resources

--

Real Life Use Cases

Application Lifecycle Managment