Skip to content

Instantly share code, notes, and snippets.

@ryanj
Last active July 26, 2018 18:52
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 ryanj/0bfc37c6638f51df8f9d7ab8bbcca5e7 to your computer and use it in GitHub Desktop.
Save ryanj/0bfc37c6638f51df8f9d7ab8bbcca5e7 to your computer and use it in GitHub Desktop.
Using the Open Service Catalog to deliver Redis for Dev, Test, and Prod - http://bit.ly/redis-devtestprod
<section>
<section data-background-color="white" data-background-size="contain" id='with-the-OpenShift-Service-Catalog' data-background="https://github.com/ryanj/redisconf-2018/raw/master/static/redisconf-backdrop.png">
<h2>Redis in Dev, Test, and Prod</h2>
<p>with the</p>
<h1>OpenShift Service Catalog</h1>
<br/>
<p><a href="http://bit.ly/redis-devtestprod">bit.ly/redis-devtestprod</a><br/><a href="http://redisconf.com/sessions.php#167">Weds, April 25th 4:00-4:45 pm</a></p>
</section>
<section data-transition='concave' data-background-transition='fade' data-background='black' id='presented-by-ryanj'>
<p>presented by <a href="http://twitter.com/ryanj/">@ryanj</a>, Developer Advocate at Red Hat</p>
<p class='fragment fade-up'><a href="http://twitter.com/ryanj/"><img alt="ryanj" src="http://ryanjarvinen.com/images/ryanj-mestrefungo-com.gif" style="width:50%"/></p>
</section>
<section id='brought-to-you-by' data-background='black' data-markdown>
brought to you by
[![Red Hat logo](https://i.imgur.com/ArZFG3e.png "")](https://redhat.com)
</section>
</section>
<section>
<section id='flackback' data-markdown>
*flashback to 2014*
## The Kubernetes Guestbook example
# A Classic
</section>
<section id='all-the-way-back' data-markdown>
See:
* [K8s tutorials](https://kubernetes.io/docs/tutorials/stateless-application/guestbook/)
* [pull #7, June 6th 2014](https://github.com/kubernetes/kubernetes/pull/7)
</section>
<section id='typical-update-cycle' data-markdown>
typical update cycle:
cd redis-app-specifications
git pull
kubectl apply -f .
* pros: multi-container spec, first "stateful" example?
* cons: destructive re-create, admin party
</section>
</section>
<section>
<section id='introducing'>
<p>introducing&hellip;</p>
<div class='fragment'>
<h1>the Open Service Broker</h1>
<p><a href="https://www.openservicebrokerapi.org/">www.openservicebrokerapi.org</a></p>
</div>
</section>
<section id='service-catalog' data-markdown>
### Everyone's Service Catalog
> "The Open Service Broker API project allows developers, ISVs, and SaaS vendors a single, simple, and elegant way to deliver services to applications running within cloud native platforms"
Works with: [Kubernetes](https://github.com/kubernetes-incubator/service-catalog), [OpenShift](https://docs.openshift.com/container-platform/3.6/architecture/service_catalog/template_service_broker.html), [Cloud Foundry](https://github.com/spring-cloud/spring-cloud-open-service-broker)
</section>
<section id='available-on' data-background='black' data-markdown>
available on...
</section>
<section id='all-the-most-popular-platforms' data-background='black' data-markdown>
## 2017 Octoverse Report
> 🏆 Most-discussed project(s) on GitHub in 2017!
http://octoverse.github.com
[Kubernetes Community - Top of the Open Source Charts in 2017](https://kubernetes.io/blog/2018/04/25/open-source-charts-2017/)
</section>
<section id='kubernetes' data-markdown>
available on
# Kubernetes
* [is](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/): an ops tool; a collection of APIs for managing container-based workloads
* [is not](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#what-kubernetes-is-not): a PaaS
</section>
<section id='openshift' data-markdown>
available on
# OpenShift
* includes, extends, is a distribution of: Kubernetes
* adds: mult-tenanant security, PaaS features, a Template broker
</section>
</section>
<section id='service-catalog-on-openshift'>
<h2>Service Catalog & Brokers</h2>
<p>Expose and provision services</p>
<p><img style='width:100%;' src='https://github.com/ryanj/redisconf-2018/raw/master/static/catalog-options.png' alt='pluggable-broker-options' /></p>
</section>
<section id='agenda' data-markdown>
## Agenda
Delivering Redis in:
1. [Dev](#/dev)
2. [Test](#/test)
3. [Production](#/production)
with the OpenShift Service Broker
</section>
<section>
<section data-markdown id='dev'>
# Dev
</section>
<section data-background="black" data-markdown>
demo: iterative development with Redis (Ephemeral)
https://github.com/ryanj/redisconf-2018#dev-demos
</section>
<section data-background="black" data-markdown>
demo: image promotion via BuildConfig, DeploymentConfig & ImageStream
</section>
<section data-background="black" data-markdown>
demo: early access to feedback from local replication and rollout testing (pre-commit)
</section>
</section>
<section>
<section data-markdown id='test'>
# Test
</section>
<section data-markdown>
### Services and data sets that meet your specific performance criteria
Select from a catalog of available back-end services, configurations, and data sets:
* small or large datasets
* dummy / test data
* snapshots of production data?
</section>
<section data-background="black" data-markdown>
demo: production-like testing - immutable infra (w/ config, volumes & pvcs)
https://github.com/ryanj/redisconf-2018#test-demos
</section>
<section data-background="black" data-markdown>
demo: recovery and failover testing - scale up and show autorecovery of web tier; show zero-downtime deployments; rollout testing; rollback testing
</section>
</section>
<section>
<section data-markdown id='production'>
# Production
</section>
<section data-background="black" data-markdown>
demo: NOT FOR USE IN PRODUCTION!
https://github.com/ryanj/redisconf-2018#production-demos
</section>
<section data-markdown id='headless'>
## Headless Services
Make external / legacy services discoverable via the Catalog, and at Runtime
##### RedisCloud or Redis Enterprise?
</section>
<section data-markdown id='telepresence'>
#### Telepresence
Proxy production-sized data services into smaller scale environments (like Minikube or Minishift)
</section>
</section>
<section id="open-extensibility" data-markdown>
# Open Extensibility
Cloud-Native solutions targeting your specific use-cases and performance criteria
</section>
<section id="service-brokers" data-markdown>
### Open Service Broker API
Expand your Service Catalog by designing your own API-compliant Service Brokers, or borrow from the growing list of options:
* [Kubernetes Service Catalog](https://github.com/kubernetes-incubator/service-catalog)
* [AnsibleServiceBroker / AutomationBroker](http://automationbroker.io/)
* [DIY MariaDB Broker example](https://github.com/prydonius/mariadb-broker)
* [OpenShift Template Broker](https://docs.openshift.com/container-platform/3.6/architecture/service_catalog/template_service_broker.html)
* [Helm Chart Broker](https://github.com/google/helm-broker)
* [CloudFoundry Spring Cloud](https://github.com/spring-cloud/spring-cloud-open-service-broker)
</section>
<section id="take-aways">
<h1>Take aways</h1>
<ol>
<li class='fragment'>The Open Service Broker & Service Catalog provide a great way to deliver containerized Redis "as-a-Service" on popular cloud-native platforms</li>
<li class='fragment'>Use the Open Service Catalog with OpenShift's Template Broker to offer targeted use-cases for leveraging Redis in Dev, Test, and Production environments</li>
<li class='fragment'>Expand your Catalog offering by adding API-compliant Brokers to meet your needs</li>
</ol>
</section>
<section id="extensibility" data-markdown>
### More Ways to Extend the Platform
* [Custom Resource Definitions](https://kubernetes.io/docs/concepts/api-extension/custom-resources/)
* [custom controllers](https://github.com/kubernetes/sample-controller)
* CRDs+Controllers &map; [Operators](https://coreos.com/blog/introducing-operator-framework)
* https://github.com/spotahome/redis-operator
* https://github.com/jw-s/redis-operator
* https://coreos.com/blog/introducing-operator-framework
</section>
<section id="resources" data-markdown>
## Resources
1. [Today's example repo and demo scripts](https://github.com/ryanj/redisconf-2018)
1. Join the conversation in the [Kubernetes Service Catalog SIG](https://github.com/kubernetes/community/blob/master/sig-list.md)
1. [OpenShift.com](http://OpenShift.com) / [learn.openshift.com](http://OpenShift.com)
</section>
<section id="thank-you" data-background-color="white" data-background-size="contain" data-background="https://github.com/ryanj/redisconf-2018/raw/master/static/redisconf-backdrop.png" data-markdown>
# Thank You!
[bit.ly/redis-devtestprod](http://bit.ly/redis-devtestprod)
@ryanj
ryanj@redhat.com
</section>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment