Forked from ryanj/Operator-Hack-Night-at-CoreOS-SF.html
Last active
May 8, 2017 21:38
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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