Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Intro to building Kubernetes Operators

Intro to building Kubernetes Operators

Data Riders Meetup, San Mateo, California

Josh Wood

April 03, 2019
Tweet

More Decks by Josh Wood

Other Decks in Technology

Transcript

  1. Any application on any platform must be installed, configured, managed,

    and upgraded over time. Patching is critical to security Anything that isn’t automated is slowing you down. Operators are automated software managers for Kubernetes clusters: Install and Lifecycle. Why you care about Operators
  2. You find a killer new database, perfect match for your

    project’s requirements You don’t want to become an expert killernewDB DBA Operators make it easier to run foundation services You can use Operators today
  3. Running a database is harder •Resize/Upgrade - coordination for availability

    •Reconfigure - tedious generation / templating •Backup - requires coordination among instances •Healing - restore backups, rejoin db cluster
  4. Application-specific controllers that extend the Kubernetes API to create, configure,

    and manage instances of complex stateful applications on behalf of a Kubernetes user
 1. Extend the Kubernetes API through the Custom Resources (CR(D)) mechanism
 2. Custom controller watches CRs, acts in response What are Operators?
  5. Demo: etcd Operator $ sh create_role.sh --namespace=etcdcluster0 # RBAC role

    and rights - (local technique, done, smaller font for space) $ kubectl create -f deployment.yaml # Deploy the etcd Operator $ kubectl create -f etcd-cluster.yaml # Create an etcd cluster $ kubectl {delete,apply,get} # etcd failure recovery, version upgrade, Operator failure recovery $> etcdctl put foo bar # While using etcd API
  6. Databases
 File, block, and object storage
 Applications with their own

    notion of “cluster”
 Apps for distribution on Kubernetes What are Operators good for?
  7. https://github.com/operator-framework/operator-sdk An Operator is a custom Kubernetes controller for your

    app. The SDK makes it easier to build Operators: • High level APIs and abstractions to write operational logic • Scaffolding and code generation to bootstrap new projects • Extensions to cover common Operator use cases Build your Operator
  8. Get persistence faster, cheaper Reliability automated down the stack Advanced:

    Make your app a Kubernetes Native What are Operators good for?
  9. Demo Live! • Memcached Operator: • Getting the Operator SDK:

    https://github.com/operator-framework/operator-sdk • You need: Docker local (to build into), Kubernetes or OpenShift (deploy and test) • Local dev clusters: Mini^(kube shift) • sdk-generated skeleton • change for your handler • `Member` name change to v0.0.2 • Rebuild, push, deploy • CRD • Service Account, Role, Binding • Operator • Operator’s managed app: a memcached cluster • $ kubectl describe memcached/example-memcached 
 

  10. Resources • Operator Hub
 https://operatorhub.io/ • Learn.OpenShift.com:
 https://learn.openshift.com/operatorframework/ • Etcd

    Operator examples from this talk: Recovery, backup, upgrade:
 https://github.com/coreos/etcd-operator/ • Awesome Operators!
 https://github.com/operator-framework/awesome-operators
 • Operator Framework and SDK on Github
 https://github.com/operator-framework/
 • Introducing the Operator Framework
 https://coreos.com/blog/introducing-operator-framework