Slide 1

Slide 1 text

Higher-Order Deployments Reducing Boilerplate With Kubernetes Custom Resource Definitions @jrbowes May 3, 2018

Slide 2

Slide 2 text

https://www.manifold.co YES, WE ARE HIRING SIGN UP TODAY

Slide 3

Slide 3 text

Photo by Caleb Jones on Unsplash

Slide 4

Slide 4 text

Photo by Tyler Milligan on Unsplash

Slide 5

Slide 5 text

Photo by Connor Betts on Unsplash @jrbowes

Slide 6

Slide 6 text

Photo by Connor Betts on Unsplash @jrbowes

Slide 7

Slide 7 text

Photo by chuttersnap on Unsplash @jrbowes

Slide 8

Slide 8 text

Photo by Etienne Pauthenet on Unsplash

Slide 9

Slide 9 text

By Frank Vincentz (Own work) GFDL via Wikimedia Commons

Slide 10

Slide 10 text

Photo by Lauren Lester on Unsplash apiVersion: extensions/v1beta1 kind: Deployment metadata: name: worker spec: replicas: 2 strategy: Photo by Lauren Lester on Unsplash

Slide 11

Slide 11 text

Y Photo by Mariam Soliman on Unsplash @jrbowes

Slide 12

Slide 12 text

Photo by Alexandru Tugui on Unsplash @jrbowes

Slide 13

Slide 13 text

Photo by Alexandru Tugui on Unsplash @jrbowes

Slide 14

Slide 14 text

@jrbowes

Slide 15

Slide 15 text

@jrbowes

Slide 16

Slide 16 text

@jrbowes

Slide 17

Slide 17 text

Kubernetes is Composition @jrbowes

Slide 18

Slide 18 text

Kubernetes is a Database @jrbowes

Slide 19

Slide 19 text

Photo by Wine Dharma on Unsplash ● 1 Custom Resource Definition ● 1 Controller ● Admission Controllers to taste @jrbowes

Slide 20

Slide 20 text

apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: applications.manifold.co spec: group: stable.manifold.co version: v1 scope: Namespaced names: plural: applications singular: application kind: Application @jrbowes

Slide 21

Slide 21 text

validation: openAPIV3Schema: properties: spec: properties: replicas: type: integer minimum: 2 image: type: string @jrbowes

Slide 22

Slide 22 text

@jrbowes

Slide 23

Slide 23 text

Start with Metacontroller @jrbowes

Slide 24

Slide 24 text

@jrbowes

Slide 25

Slide 25 text

Why?

Slide 26

Slide 26 text

@jrbowes

Slide 27

Slide 27 text

@jrbowes

Slide 28

Slide 28 text

@jrbowes

Slide 29

Slide 29 text

- name: Create my app's deployment k8s_raw: state: present definition: apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-app spec: replicas: 2 @jrbowes

Slide 30

Slide 30 text

- name: Create all of my app k8s_raw: state: present definition: apiVersion: manifold.co/v1 kind: Application metadata: name: my-app spec: external: true @jrbowes

Slide 31

Slide 31 text

Build your own Operators

Slide 32

Slide 32 text

Photo by Matthew Hamilton on Unsplash CRDs are new & incomplete No multi-version support yet @jrbowes

Slide 33

Slide 33 text

Photo by Matthew Hamilton on Unsplash Many moving parts Definition, controller, webhooks @jrbowes

Slide 34

Slide 34 text

Photo by Matthew Hamilton on Unsplash Attempts to simplify are still early ● Metacontroller ● Kubekit ● operator-sdk ● Your cool project? @jrbowes

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Thank you! @jrbowes April 18, 2018