Skip to content

Instantly share code, notes, and snippets.

@soggiest
Forked from ryanj/Operator-Hack-Night-at-CoreOS-SF.html
Last active May 8, 2017 21:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save soggiest/d97e089632df63531f77a70a8e8f981b to your computer and use it in GitHub Desktop.
Save soggiest/d97e089632df63531f77a70a8e8f981b to your computer and use it in GitHub Desktop.
CoreOS Kube Operators Seattle Kubernetes Meetup on April 12th, 2017 http://bit.ly/operatorhacks
<section>
<section id='stateful-problems' data-markdown>
## Operators
### Six Months Later
</section>
</section>
<section>
<section id='the-problem'>
<h3>The Problem with Stateful</h3>
<ol>
<p class='fragment'>Stateful applications retain information about each of its communication partners</p>
<p class='fragment'>Deploying and scaling these applications requires processes specific to each application</p>
<p class='fragment'>This clearly presents a problem deploying these applications in Kubernetes</p>
</section>
<section id='kubernetes-and-stateful'>
<h3>Kubernetes and Stateful</h3>
<p class='fragment'>Deploying stateful applications would either be forced to only use one pod or require accessing the Pods after deployment</p>
<p class='fragment'>Scaling stateful applications is forced to occur as a response to human interaction, rather than automatically</p>
<p class='fragment'>None of the inherant disaster recovery of Kubernetes, either there will be total outtage from Pods redeploying or more manual steps will need to be ran to recovery functionality</p>
</section>
</section>
<section id='k8s-operators' data-markdown>
## Kubernetes Operators
</section>
<section>
<section id='what-are-operators'>
<h3>What are Operators?</h3>
<p class='fragment'>Kube Operators establish a pattern for introducing higher-order interfaces that represent the logical domain expertise (and perhaps the ideal product output) of a Kubernetes SRE</p>
<p class='fragment'><a href="https://coreos.com/blog/introducing-operators.html">blog post: "Introducing Operators"</a></p>
</section>
<section id='k8s-controllers' data-markdown>
### K8s Controllers
Controllers work to regulate the declarative nature of the platform state, reconsiling imbalances via a basic control loop
https://kubernetes.io/docs/admin/kube-controller-manager/
Kubernetes allows you to introduce your own custom controllers!
</section>
<section id='k8s-tpr'>
<h3>Third Party Resources (TPRs)</h3>
TPRs allow you to establish new k8s primitives, extending the capabilities of the platform by allowing you to add your own terminology to the modeling language
<a href>https://kubernetes.io/docs/user-guide/thirdpartyresources/</a>
<img alt="example" src="http://i.imgur.com/hApw6P4.png" style="width:50%"/>
</section>
<section id='best-practices' data-markdown>
### Best Practices for Writing Operators
https://coreos.com/blog/introducing-operators.html#how-can-you-create-an-operator
</section>
</section>
<section id='the-solution' data-markdown>
## So, how do they help?
</section>
<section>
<section id='no-problem'>
<h2>Deployment and Scaling!</h2>
<p class='fragment'>Human interaction with stateful applications minimized as operators handle domain knowledge tasks</p>
<p class='fragment'>Customer Controllers maintain the current and desired state of the application, adjusting pod counts as necessary</p>
</section>
<section id='resiliency'>
<h2>Resiliency!</h2>
<p class='fragment'>Operators don't need to be active for the application itself to run</p>
<p class='fragment'>If a stateful pod goes down the custom controller will create new pods and repair clusters seemlessly</p>
<p class='fragment'>Helper pods, like ETCD's optional backup pod, can provide extra functionality to the cluster including disaster recovery</p>
</section>
<section id='upgrades'>
<h2>Upgrades!</h2>
<p class='fragment'>Custom Controllers maintain the desired state of the cluster, which includes version</p>
<p class='fragment'>Updating clusters is as easy as scaling up a cluster, tell the operator which version you need and it will roll out new pods at the desired version</p>
</section>
</section>
<section>
<section id='operator-examples' data-markdown>
## Operator Examples
</section>
<section id='etcd' data-markdown>
### Etcd
blog post: https://coreos.com/blog/introducing-the-etcd-operator.html
sources: https://github.com/coreos/etcd-operator
demo video: https://www.youtube.com/watch?v=n4GYyo1V3wY
</section>
<section id='prometheus' data-markdown>
### Prometheus
blog post: https://coreos.com/blog/the-prometheus-operator.html
sources: https://github.com/coreos/prometheus-operator
demo video: https://www.youtube.com/watch?v=GYSKEd9FePk
</section>
<section id='kube-cert-manager' data-markdown>
### Kube Cert Manager
https://github.com/kelseyhightower/kube-cert-manager
</section>
<section id='rook' data-markdown>
### Rook (Storage)
https://rook.io/
</section>
<section id='elasticsearch' data-markdown>
### Elastic Search
https://github.com/upmc-enterprises/elasticsearch-operator
</section>
<section id='postgres' data-markdown>
### PostgreSQL
Postgres Operator from CrunchyData
https://github.com/CrunchyData/postgres-operator
</section>
<section id='tectonic' data-markdown>
### Tectonic
Tectonic uses operators to manage "self-hosted" Kubernetes
[k8s cluster upgrades made easy](https://twitter.com/ryanj/status/846866079792062464)
</section>
<!--
<section id='' data-markdown>
###
</section>
<section id='' data-markdown>
###
</section>
-->
</section>
<section>
<h2>Demo</h2>
</section>
<section>
<img alt="etcd" src="http://i.imgur.com/u2OKtkf.gif" style="width:100%"/>
</section>
<section>
<img alt="etcd2" src="http://i.imgur.com/zIpNSjN.gif" style="width:100%"/>
</section>
<section id='follow-up' data-markdown>
### Follow-up Topics and Links
1. [Brandon Philips' TPR list](https://gist.github.com/philips/a97a143546c87b86b870a82a753db14c)
2. [Eric Chiang's "Custom Go Controllers" presentation](https://github.com/ericchiang/go-1.8-release-party)
3. [Josh Rosso's Operator talk from FOSDEM (same stuff at Kubecon)](https://docs.google.com/presentation/d/1MV029sDifRV2c33JW_83k1tjWDczCfVkFpKvIWuxT6E/edit#slide=id.g1c65fcd8a9_0_54 )
4. [Paul Burt's new blog post on community use of operators](https://coreos.com/blog/kubernetes-operators-ecosystem.html)
5. [ETCD autorecovery demo from Brandon](https://www.youtube.com/watch?v=9sD3mYCPSjc)
6. [Sign up to receive the CoreOS Community Newsletter](http://coreos.com/newsletter)
</section>
<section id='coreos-jobs' data-markdown>
### CoreOS is hiring!
Join us in our mission to help *Secure the Internet!*
[coreos.com/careers](https://coreos.com/careers)
</section>
<section id='coreos-training' data-markdown>
### CoreOS Training
Want to learn more?
Check out the lineup of pro training courses from CoreOS!
[coreos.com/training](http://coreos.com/training)
</section>
<section id='coreos-fest' data-markdown>
### CoreOS Fest
Tickets are on sale now!
[coreos.com/fest](http://coreos.com/fest)
</section>
<section id='tectonic-free-teir' data-markdown>
### Tectonic Free Tier
Try CoreOS Tectonic today
[coreos.com/tectonic](http://coreos.com/tectonic)
Your first ten Enterprise-grade Kubernetes nodes are free!
</section>
</section>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment