Higher-Order Deployments
Reducing Boilerplate With Kubernetes Custom Resource Definitions
@jrbowes
April 18, 2018
}}
{{
@jrbowes
a puppet
(also a chef)
Photo by Liliane Limpens on Unsplash
@jrbowes
Y
Photo by Mariam Soliman on Unsplash
@jrbowes
CUSTOM
RESOURCE
DEFINITIONS.
CONTROLLERS.
ADMISSION
CONTROLLERS.
JAVASCRIPT?
@jrbowes
YES, WE
ARE HIRING
SIGN UP
TODAY
Photo by Caleb Jones on Unsplash
Photo by Tyler Milligan on Unsplash
Photo by Connor Betts on Unsplash
@jrbowes
Photo by chuttersnap on Unsplash
@jrbowes
Photo by Etienne Pauthenet on Unsplash
By Frank Vincentz (Own work) GFDL via Wikimedia Commons
Photo by Lauren Lester on Unsplash
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: worker
spec:
replicas: 2
strategy:
Photo by Lauren Lester on Unsplash
Photo by Alexandru Tugui on Unsplash
@jrbowes
@jrbowes
@jrbowes
Kubernetes is
Composition
@jrbowes
Kubernetes is
a Database
@jrbowes
Photo by Wine Dharma on Unsplash
@jrbowes
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
validation:
openAPIV3Schema:
properties:
spec:
properties:
replicas:
type: integer
minimum: 2
image:
type: string
@jrbowes
@jrbowes
Start with
@jrbowes
@jrbowes
Why?
@jrbowes
@jrbowes
@jrbowes
- name: Create my app's deployment
k8s_raw:
state: present
definition:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
- 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
Photo by Matthew Hamilton on Unsplash
@jrbowes
Thank you!
@jrbowes
April 18, 2018