Operators are _application aware Kubernetes objects._
Active throughout the application’s lifecycle,
they manage instantiation, ongoing state, and
destruction.
@KeithResar
Slide 6
Slide 6 text
FROM VISION TO _PROBLEM_
@KeithResar
Slide 7
Slide 7 text
_problem:_
_turnkey management of stateless application_
_solution:_
_kubernetes (we just saw this)_
_S2I, Helm_
@KeithResar
Slide 8
Slide 8 text
@KeithResar
Slide 9
Slide 9 text
_build image from_
_source_
@KeithResar
Slide 10
Slide 10 text
_intra-cluster traffic_
_management_
@KeithResar
Slide 11
Slide 11 text
_application runtime_
_configuration_
@KeithResar
Slide 12
Slide 12 text
_external traffic_
@KeithResar
Slide 13
Slide 13 text
_problem:_
_I’m a vendor or I create data service apps,
_kubernetes doesn’t know anything about me_
@KeithResar
Slide 14
Slide 14 text
@KeithResar
etcd is a _distributed key value store_
that provides a reliable way to store
data across a cluster of machines.
Stand-in
for
your app
Slide 15
Slide 15 text
@KeithResar
Create and Destroy • Resize • Failover
Rolling upgrade • Backup and Restore
Stand-in
for
your app
Slide 16
Slide 16 text
_problem:_
_I’m a vendor or I create data service apps,
_kubernetes doesn’t know anything about me_
_solution:_
_create custom resource definitions_
@KeithResar
Slide 17
Slide 17 text
@KeithResar
---
apiVersion: v1
kind: Service
metadata:
name: simpleapp
spec:
ports:
- name: 8080-tcp
port: 8080
protocol: TCP
targetPort: 8080
selector:
deploymentconfig: simpleapp
sessionAffinity: None
type: ClusterIP
Defining a
_service_
resource
service resources
are a built in object
type.
@KeithResar
DS AS
API Server Cluster Workload
Native K8s objects like...
DeploymentConfig
Services
Routes
etc.
Slide 25
Slide 25 text
@KeithResar
AS
DS
_* operator_
watch reconcile
action
_________
_______________________
______
_____________________________
Operator as an Artifact
Create, version control, and
deploy new versions to align
with changes to underlying
product versions.
Slide 26
Slide 26 text
@KeithResar
AS
DS
_Ansible operator_
watch reconcile
ansible-runner
_________
_______________________
______
_____________________________
Ansible playbook or role
This is the only component
you need to worry about!
Slide 27
Slide 27 text
@KeithResar
kubernetes layer
application layer
Slide 28
Slide 28 text
@KeithResar
kubernetes layer
ETCD
pod
ETCD
pod
Phase I
Manage native K8s objects
application layer
Slide 29
Slide 29 text
@KeithResar
Slide 30
Slide 30 text
application layer
@KeithResar
kubernetes layer
ETCD
pod
ETCD
pod
Phase II
Manage application objects
01001
etcd data
01001
etcd data
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
A GIFT OF THE _DEMO_ TO YOU
@KeithResar
Slide 33
Slide 33 text
Demo Operator for data
service _SimpleDB,_ that
manages instantiation and
version upgrades.
RBAC
CRD
CR
@KeithResar
DC
Slide 34
Slide 34 text
Create service account, role, and
role binding. Our operator uses
these to monitor events and
reconcile desired and actual
states.
RBAC
CRD
CR
@KeithResar
DC
Instantiate our custom resource
object. The operator is listening
for any SimpleDB events in our
namespace.
RBAC
CRD
CR
@KeithResar
DC
Slide 43
Slide 43 text
RBAC
CRD
CR
@KeithResar
DC
---
apiVersion: example.com/v1alpha1
kind: SimpleDB
metadata:
name: simpledb
spec:
# Add fields here
version: 1
Slide 44
Slide 44 text
No content
Slide 45
Slide 45 text
GO FARTHER WITH THESE _RESOURCES_
@KeithResar
● Introducing the operator framework
● water-hole’s ansible-operator repo
● ansible-operator-demo repo
● Awesome operators in the wild