SlideShare a Scribd company logo
Operators ABC
Robert Bohne
SR. SPECIALIST SOLUTION ARCHITECT | OPENSHIFT
Twitter: @RobertBohne
1
2
What is an Operator?
Operator is a
automated software manager
that deals with the installation and life cycle of
an applications on top of Kubernetes/OpenShift.
3
Controller
Piece of software that deals
with the installation and life cycle of
an applications on top of OpenShift.
Custom Resource Definition (CRD)
OpenShift API extension to interact and
communicate with the Controller.
4
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: cars.openshift.pub
spec:
group: openshift.pub
names:
kind: Car
listKind: CarList
plural: cars
singular: car
scope: Namespaced
subresources:
status: {}
version: v1
apiVersion: openshift.pub/v1
kind: Car
metadata:
name: bmw
spec:
date_of_manufacturing: "2014-07-01T00:00:00Z"
engine: N57D30
Custom Resource Definition (CRD) Custom Resource (CR)
Custom Resource Definition (CRD)
5
[..snipped..]
additionalPrinterColumns:
- JSONPath: .status.conditions[?(@.type=="Succeeded")].status
name: Succeeded
type: string
- JSONPath: .status.conditions[?(@.type=="Succeeded")].reason
name: Reason
type: string
- JSONPath: .spec.date_of_manufacturing
name: Produced
type: date
- JSONPath: .spec.engine
name: Engine
type: string
priority: 1
6
apiVersion: apps/v1
kind: Deployment
metadata:
name: operator
spec:
replicas: 1
selector:
matchLabels:
name: operator
template:
metadata:
labels:
name: operator
spec:
containers:
- name: operator
Image: "quay.io/org/operator:v0.0.1"
Controller
Peace of software running
on top of OpenShift
7
{
}
Custom Resource
8
{
}
Custom Resource
Custom Resource
MyApplication
State
k8s API
Controller
Watch Events Reconciliation
My Application
Kubernetes Resources
for My App
Operator Pattern
9
10
How to create an Operator?
11
OPERATOR
SDK
KUBERNETES
OPERATOR
+ =
DEVELOPER
“create new
operator”
scaffolding custom logic
Operator Framework in Action
Deployment
Role
ClusterRole
RoleBinding
ClusterRoleBinding
ServiceAccount
CustomResourceDefinition
implemented as a container image plus:
Ansible SDKHelm SDK Go SDK
Helm Chart
Ansible Playbooks
APBs
Build operators from
Helm chart, without any
coding
Build operators from
Ansible playbooks and
APBs
Build advanced operators
for full lifecycle
management
Operator Adoption Patterns
12
13
Types of Operators
14
Use Cases ideal for operator development
● stateful applications (such as databases)
● clustered or high-availability applications (clustered databases, key value stores such as etcd,
in-memory cache clusters such as redis)
● multiservice applications (an application which needs dependent services to come online first)
● microservices (numerous small components that together make up a cohesive product or app)
Use cases less ideal for operator development
● stateless apps (most web apps or front-ends)
● infrastructure/host agents (monitoring agents or log forwarders)
Demo
15
Custom Resource
MyApplication
State
k8s API
Ansible Operator
Operator-S
DK
Ansible
Role
My Application
Kubernetes Resources
for My App
Ansible Operator
File
Mapping
Ansible k8s modules will be
used to create resources in
kubernetes
16
What you need to create an Ansible
Operator
● A CustomResourceDefinition (CRD)
● An Ansible Playbook or Role
● A mapping from CRD to Ansible playbook / roles
● operator-sdk
17
Create the Operator with the SDK
$ operator-sdk new memcached-operator 
--api-version=cache.example.com/v1alpha1 
--kind=Memcached --type=ansible
Creates:
● Ansible Role
● Mapping File (watches.yaml)
● Custom Resource Definition
● Deploy manifest for the new Operator
18
Custom Resource (CR)
apiVersion: <Group/Version>
kind: <kind>
metadata:
name: <name>
spec:
<key>: <value>
….
status:
<key>: <value>
….
Ansible Operator
Status will be a generic status defined
by the operator. This will use ansible
runner output to generate meaningful
output for the user.
Spec values will be translated to
Ansible extra vars.
19
Ansible Role
Create a Role that deploys and
manages your application
memcached/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
20
Mapping between CRDs and Ansible
Maps a Group Version Kind (GVK) to a role or playbook.
# watches.yaml
---
- version: v1alpha1
- group: cache.example.com
kind: Memcached
playbook: /path/to/playbook
21
Build the Operator with the SDK
$ operator-sdk build memcached-operator:v0.0.1
Creates:
● A Dockerfile that creates the Operator
● Builds the container on top of ansible-runner image
22
23
What is an Operator?
● Container Image ( contains the software manager )
● Deployment
● Custom Resource Definition (CRD) Metadata
● Role Bindings
● ...
24
OPERATOR
SDK
KUBERNETES
OPERATOR
+ = +
DEVELOPER
“create new
operator”
scaffolding custom logic metadata
package
What is an Operator?
25
OPERATOR
SDK
KUBERNETES
OPERATOR
+ = +
OPERATOR
LIFECYCLE
MANAGER
DEVELOPER
quay.io /
Image Registry
ADMINISTRATOR
“create new
operator”
scaffolding custom logic metadata
package
Catalog Source
“list packages”
Package Discovery:
$ oc get packagemanifests
How to ship an Operator?
26
OPERATOR
SDK
KUBERNETES
OPERATOR
+ = +
OPERATOR
LIFECYCLE
MANAGER
DEVELOPER
quay.io /
Image Registry
ADMINISTRATOR
“create new
operator”
scaffolding custom logic metadata
package
Catalog Source
“list packages”
Package Discovery:
$ oc get packagemanifests
How to ship an Operator?
27
Operator Deployment
Custom Resource
Definitions
RBAC
API Dependencies
Update Path
Metadata
YourOperator v1.1.2
Bundle
OPERATOR
LIFECYCLE MANAGER
Deployment
Role
ClusterRole
RoleBinding
ClusterRoleBinding
ServiceAccount
CustomResourceDefinition
28
OPERATOR
LIFECYCLE MANAGER
Deployment
Role
ClusterRole
RoleBinding
ClusterRoleBinding
ServiceAccount
CustomResourceDefinition
29
OperatorHub
OperatorHub data sources
Operator Metadata from quay.io
● Backend for all default sources, cluster needs to be online
● Supplies Red Hat Operators, ISV Operators and Community
Operator
● Custom sources supported in customer-owned quay.io
namespaces
Operator Metadata in container images
● Already used internally used by OLM
● Operator package data is served from a SQlite database,
bundled up in a container image
● Custom sources supported in customer-owned image registries
● Cluster can be disconnected / air-gapped
Package name
e.g. prometheus
Channel name
e.g. stable
Operator
Bundle 1
Operator
Bundle 2
Channel name
e.g. tech-preview
Operator
Bundle 3
...
Operator Package Metadata
30
31
● Certified Operators
submitted through Red Hat Connect - listed
in OpenShift OperatorHub
● Community Operators
submitted through GitHub - listed in both
OpenShift and OKD OperatorHub
● Upstream Community Operators
also submitted through GitHub - listed in
the OperatorHub.io community website
34
OPERATOR
LIFECYCLE MANAGER
YourOperator v1.1.2
YourOperator v1.1.3
YourOperator v1.2.0
YourOperator v1.2.2
Subscription for
YourOperator
Time
VersionOperator Catalog
Operator Updates
35
Proxy Support
OpenShift 4.2 Cluster
OPERATOR
LIFECYCLE MANAGER
Pod
spec:
containers:
- name: my-container
image: ...
env:
- name: HTTP_PROXY
value: "..."
- name: HTTPS_PROXY
value: "..."
Cluster Proxy
Config
Operator
4.2 Automated Dependency Resolution
YourOperator v1.1.2
requires
requires
Jaeger Operatorjaeger.jaegertracing.io/v1
CockroachDB Operatorcockroachdb.charts.helm.k8s.io/v1alpha1
resolves to
resolves to
Operator Framework Dependency Graphs
OPERATOR
LIFECYCLE MANAGER
installed by
installed by
36
38
OPERATOR
SDK
KUBERNETES
OPERATOR
+ = +
OPERATOR
LIFECYCLE
MANAGER
DEVELOPER
quay.io /
Image Registry
ADMINISTRATOR
“create new
operator”
scaffolding custom logic metadata
package
Catalog Source
“list packages”
Package Discovery:
$ oc get packagemanifests
39
OPERATOR
SDK
KUBERNETES
OPERATOR
+ = +
OPERATOR
LIFECYCLE
MANAGER
DEVELOPER
quay.io /
Image Registry
ADMINISTRATOR
“create new
operator”
scaffolding custom logic metadata
package
Catalog Source
“list packages”
Package Discovery:
$ oc get packagemanifests
40
OPERATOR
SDK
KUBERNETES
OPERATOR
+ = +
OPERATOR
LIFECYCLE
MANAGER
DEVELOPER
quay.io /
Image Registry
ADMINISTRATOR
“create new
operator”
scaffolding custom logic metadata
package
Catalog Source
“list packages”
+
“subscribe to an
operator”
subscriptionnamespaceoperator
instance
Operator Discovery:
$ oc get csv -n <namespace>
41
OPERATOR
SDK
KUBERNETES
OPERATOR
+ = +
OPERATOR
LIFECYCLE
MANAGER
DEVELOPER
quay.io /
Image Registry
ADMINISTRATOR
“create new
operator”
scaffolding custom logic metadata
package
Catalog Source
“list packages”
+
“subscribe to an
operator”
subscriptionnamespaceoperator
instance
managed
application
“create
application”
USER
42
Operator Hub - Allows
administrators to
selectively make
operators available from
curated sources to users
in the cluster.
Operators in OpenShift
43
● Operator SDK - Allows developers to build, package and test an Operator
based on your expertise without requiring all the knowledge of Kubernetes
API complexities
● Operator Lifecycle Manager - Helps you to install, and update, and
generally manage the lifecycle of all of the Operators (and their associated
services) running across your clusters
● Operator Metering - Enable usage reporting for Operators and resources
within Kubernetes
44
Insights from
Cluster Monitoring
App-specific
Insights from
Operators
21
Use SDK libraries to
export metrics
Built Operator is run by
the lifecycle manager
46
OPTIONALSECTIONMARKERORTITLE
Roadmap for
Operator
Framework
Custom Operators Catalogs
Operator Metadata from quay.io
● Backend for all default sources, cluster needs to be online
● Supplies Red Hat Operators, ISV Operators and Community
Operator
● Custom sources supported in customer-owned quay.io
namespaces
Operator Metadata in container images
● Already used internally used by OLM
● Operator package data is served from a SQlite database,
bundled up in a container image
● Custom sources supported in customer-owner image
registries
● Cluster can be disconnected / air-gapped
47
48
Regular users can install Operators
Release Channel for
YourOperator
Catalog containing
YourOperator
Instance of
YourOperator
(global)
+ =
ADMINISTRATOR
USER
Release Channel for
YourOperator
Catalog containing
YourOperator
Instance of
YourOperator
(namespaced)
+ =
ServiceAccount created by
Administrator
+
Operator Framework Roadmap
49
Q4 CY19 1H CY20 2H CY20
Automatic Dependency Resolution
Delegation of Operator installation
to regular users
Proxy / Disconnected Support
Custom Operator Catalogs
OLM
SDK
Helm v2.14 support
Kubernetes 1.14 support
Prometheus metrics
UBI as base-image
OLM
Single Object to represent an
Operator
Container Images as Operator
Bundles
Container Registries as Operator
Catalogs
SDK
Kubebuilder support
OLM integration (“install” / “run”)
OLM
Investigation support for helm and
OCI as bundle formats
SDK
Investigation of Java and Python
support
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat
50
Red Hat is the world’s leading provider of enterprise
open source software solutions. Award-winning support,
training, and consulting services make Red Hat a trusted
adviser to the Fortune 500.
Thank you
OPTIONALSECTIONMARKERORTITLE

More Related Content

What's hot

Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
CJ Cullen
 
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShiftKubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
DevOps.com
 
Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4
HngNguyn748044
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
Bytemark
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Edureka!
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
Crevise Technologies
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
James Falkner
 
Red Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized StorageRed Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized Storage
Greg Hoelzer
 
01. Kubernetes-PPT.pptx
01. Kubernetes-PPT.pptx01. Kubernetes-PPT.pptx
01. Kubernetes-PPT.pptx
TamalBanerjee16
 
Kubernetes Architecture and Introduction
Kubernetes Architecture and IntroductionKubernetes Architecture and Introduction
Kubernetes Architecture and Introduction
Stefan Schimanski
 
OpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdfOpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdf
JuanSalinas593459
 
OpenShift Container Platform 4.12 Release Notes
OpenShift Container Platform 4.12 Release NotesOpenShift Container Platform 4.12 Release Notes
OpenShift Container Platform 4.12 Release Notes
GerryJamisola1
 
OpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdfOpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdf
ssuser1490e8
 
Rancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep DiveRancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep Dive
LINE Corporation
 
Turning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirtTurning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirt
Suman Chakraborty
 
Red Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShiftRed Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShift
Kangaroot
 
Best Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes ServicesBest Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes Services
QAware GmbH
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red Hat
Amazon Web Services
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overview
roundman
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Eric Gustafson
 

What's hot (20)

Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
 
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShiftKubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
Kubernetes 101 - an Introduction to Containers, Kubernetes, and OpenShift
 
Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4Introduction to Red Hat OpenShift 4
Introduction to Red Hat OpenShift 4
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
 
Red Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized StorageRed Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized Storage
 
01. Kubernetes-PPT.pptx
01. Kubernetes-PPT.pptx01. Kubernetes-PPT.pptx
01. Kubernetes-PPT.pptx
 
Kubernetes Architecture and Introduction
Kubernetes Architecture and IntroductionKubernetes Architecture and Introduction
Kubernetes Architecture and Introduction
 
OpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdfOpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdf
 
OpenShift Container Platform 4.12 Release Notes
OpenShift Container Platform 4.12 Release NotesOpenShift Container Platform 4.12 Release Notes
OpenShift Container Platform 4.12 Release Notes
 
OpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdfOpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdf
 
Rancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep DiveRancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep Dive
 
Turning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirtTurning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirt
 
Red Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShiftRed Hat multi-cluster management & what's new in OpenShift
Red Hat multi-cluster management & what's new in OpenShift
 
Best Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes ServicesBest Practices with Azure Kubernetes Services
Best Practices with Azure Kubernetes Services
 
Containers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red HatContainers Anywhere with OpenShift by Red Hat
Containers Anywhere with OpenShift by Red Hat
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overview
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 

Similar to Red Hat OpenShift Operators - Operators ABC

Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using Go
CloudOps2005
 
Crafting Kubernetes Operators
Crafting Kubernetes OperatorsCrafting Kubernetes Operators
Crafting Kubernetes Operators
Red Hat Developers
 
Operatorhub.io and your Kubernetes cluster | DevNation Tech Talk
Operatorhub.io and your Kubernetes cluster | DevNation Tech TalkOperatorhub.io and your Kubernetes cluster | DevNation Tech Talk
Operatorhub.io and your Kubernetes cluster | DevNation Tech Talk
Red Hat Developers
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operators
J On The Beach
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
UA DevOps Conference
 
Exploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in PythonExploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in Python
Ivan Ma
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
Massimiliano Dessì
 
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
Come costruire una Platform As A Service con Docker, Kubernetes Go e JavaCome costruire una Platform As A Service con Docker, Kubernetes Go e Java
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
Codemotion
 
Cloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit KubernetesCloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit Kubernetes
QAware GmbH
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
Emily Jiang
 
使用 Prometheus 監控 Kubernetes Cluster
使用 Prometheus 監控 Kubernetes Cluster 使用 Prometheus 監控 Kubernetes Cluster
使用 Prometheus 監控 Kubernetes Cluster
inwin stack
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Toshiaki Maki
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Mario-Leander Reimer
 
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
DevDay.org
 
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
Tobias Schneck
 
Application Development on Metapod
Application Development on MetapodApplication Development on Metapod
Application Development on Metapod
Cisco DevNet
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Chris Bailey
 
Build your operator with the right tool
Build your operator with the right toolBuild your operator with the right tool
Build your operator with the right tool
Rafał Leszko
 
The App Developer's Kubernetes Toolbox
The App Developer's Kubernetes ToolboxThe App Developer's Kubernetes Toolbox
The App Developer's Kubernetes Toolbox
Nebulaworks
 
OpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetesOpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetes
Samuel Terburg
 

Similar to Red Hat OpenShift Operators - Operators ABC (20)

Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using Go
 
Crafting Kubernetes Operators
Crafting Kubernetes OperatorsCrafting Kubernetes Operators
Crafting Kubernetes Operators
 
Operatorhub.io and your Kubernetes cluster | DevNation Tech Talk
Operatorhub.io and your Kubernetes cluster | DevNation Tech TalkOperatorhub.io and your Kubernetes cluster | DevNation Tech Talk
Operatorhub.io and your Kubernetes cluster | DevNation Tech Talk
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operators
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
 
Exploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in PythonExploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in Python
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
Come costruire una Platform As A Service con Docker, Kubernetes Go e JavaCome costruire una Platform As A Service con Docker, Kubernetes Go e Java
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
 
Cloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit KubernetesCloud-native .NET Microservices mit Kubernetes
Cloud-native .NET Microservices mit Kubernetes
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
 
使用 Prometheus 監控 Kubernetes Cluster
使用 Prometheus 監控 Kubernetes Cluster 使用 Prometheus 監控 Kubernetes Cluster
使用 Prometheus 監控 Kubernetes Cluster
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
 
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
 
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
 
Application Development on Metapod
Application Development on MetapodApplication Development on Metapod
Application Development on Metapod
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
 
Build your operator with the right tool
Build your operator with the right toolBuild your operator with the right tool
Build your operator with the right tool
 
The App Developer's Kubernetes Toolbox
The App Developer's Kubernetes ToolboxThe App Developer's Kubernetes Toolbox
The App Developer's Kubernetes Toolbox
 
OpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetesOpenShift Enterprise 3.1 vs kubernetes
OpenShift Enterprise 3.1 vs kubernetes
 

Recently uploaded

Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
ViralQR
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 

Recently uploaded (20)

Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 

Red Hat OpenShift Operators - Operators ABC

  • 1. Operators ABC Robert Bohne SR. SPECIALIST SOLUTION ARCHITECT | OPENSHIFT Twitter: @RobertBohne 1
  • 2. 2 What is an Operator? Operator is a automated software manager that deals with the installation and life cycle of an applications on top of Kubernetes/OpenShift.
  • 3. 3 Controller Piece of software that deals with the installation and life cycle of an applications on top of OpenShift. Custom Resource Definition (CRD) OpenShift API extension to interact and communicate with the Controller.
  • 4. 4 apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: cars.openshift.pub spec: group: openshift.pub names: kind: Car listKind: CarList plural: cars singular: car scope: Namespaced subresources: status: {} version: v1 apiVersion: openshift.pub/v1 kind: Car metadata: name: bmw spec: date_of_manufacturing: "2014-07-01T00:00:00Z" engine: N57D30 Custom Resource Definition (CRD) Custom Resource (CR)
  • 5. Custom Resource Definition (CRD) 5 [..snipped..] additionalPrinterColumns: - JSONPath: .status.conditions[?(@.type=="Succeeded")].status name: Succeeded type: string - JSONPath: .status.conditions[?(@.type=="Succeeded")].reason name: Reason type: string - JSONPath: .spec.date_of_manufacturing name: Produced type: date - JSONPath: .spec.engine name: Engine type: string priority: 1
  • 6. 6 apiVersion: apps/v1 kind: Deployment metadata: name: operator spec: replicas: 1 selector: matchLabels: name: operator template: metadata: labels: name: operator spec: containers: - name: operator Image: "quay.io/org/operator:v0.0.1" Controller Peace of software running on top of OpenShift
  • 9. Custom Resource MyApplication State k8s API Controller Watch Events Reconciliation My Application Kubernetes Resources for My App Operator Pattern 9
  • 10. 10 How to create an Operator?
  • 11. 11 OPERATOR SDK KUBERNETES OPERATOR + = DEVELOPER “create new operator” scaffolding custom logic Operator Framework in Action Deployment Role ClusterRole RoleBinding ClusterRoleBinding ServiceAccount CustomResourceDefinition implemented as a container image plus:
  • 12. Ansible SDKHelm SDK Go SDK Helm Chart Ansible Playbooks APBs Build operators from Helm chart, without any coding Build operators from Ansible playbooks and APBs Build advanced operators for full lifecycle management Operator Adoption Patterns 12
  • 14. 14 Use Cases ideal for operator development ● stateful applications (such as databases) ● clustered or high-availability applications (clustered databases, key value stores such as etcd, in-memory cache clusters such as redis) ● multiservice applications (an application which needs dependent services to come online first) ● microservices (numerous small components that together make up a cohesive product or app) Use cases less ideal for operator development ● stateless apps (most web apps or front-ends) ● infrastructure/host agents (monitoring agents or log forwarders)
  • 16. Custom Resource MyApplication State k8s API Ansible Operator Operator-S DK Ansible Role My Application Kubernetes Resources for My App Ansible Operator File Mapping Ansible k8s modules will be used to create resources in kubernetes 16
  • 17. What you need to create an Ansible Operator ● A CustomResourceDefinition (CRD) ● An Ansible Playbook or Role ● A mapping from CRD to Ansible playbook / roles ● operator-sdk 17
  • 18. Create the Operator with the SDK $ operator-sdk new memcached-operator --api-version=cache.example.com/v1alpha1 --kind=Memcached --type=ansible Creates: ● Ansible Role ● Mapping File (watches.yaml) ● Custom Resource Definition ● Deploy manifest for the new Operator 18
  • 19. Custom Resource (CR) apiVersion: <Group/Version> kind: <kind> metadata: name: <name> spec: <key>: <value> …. status: <key>: <value> …. Ansible Operator Status will be a generic status defined by the operator. This will use ansible runner output to generate meaningful output for the user. Spec values will be translated to Ansible extra vars. 19
  • 20. Ansible Role Create a Role that deploys and manages your application memcached/ ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── README.md ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml 20
  • 21. Mapping between CRDs and Ansible Maps a Group Version Kind (GVK) to a role or playbook. # watches.yaml --- - version: v1alpha1 - group: cache.example.com kind: Memcached playbook: /path/to/playbook 21
  • 22. Build the Operator with the SDK $ operator-sdk build memcached-operator:v0.0.1 Creates: ● A Dockerfile that creates the Operator ● Builds the container on top of ansible-runner image 22
  • 23. 23 What is an Operator? ● Container Image ( contains the software manager ) ● Deployment ● Custom Resource Definition (CRD) Metadata ● Role Bindings ● ...
  • 24. 24 OPERATOR SDK KUBERNETES OPERATOR + = + DEVELOPER “create new operator” scaffolding custom logic metadata package What is an Operator?
  • 25. 25 OPERATOR SDK KUBERNETES OPERATOR + = + OPERATOR LIFECYCLE MANAGER DEVELOPER quay.io / Image Registry ADMINISTRATOR “create new operator” scaffolding custom logic metadata package Catalog Source “list packages” Package Discovery: $ oc get packagemanifests How to ship an Operator?
  • 26. 26 OPERATOR SDK KUBERNETES OPERATOR + = + OPERATOR LIFECYCLE MANAGER DEVELOPER quay.io / Image Registry ADMINISTRATOR “create new operator” scaffolding custom logic metadata package Catalog Source “list packages” Package Discovery: $ oc get packagemanifests How to ship an Operator?
  • 27. 27
  • 28. Operator Deployment Custom Resource Definitions RBAC API Dependencies Update Path Metadata YourOperator v1.1.2 Bundle OPERATOR LIFECYCLE MANAGER Deployment Role ClusterRole RoleBinding ClusterRoleBinding ServiceAccount CustomResourceDefinition 28
  • 30. OperatorHub data sources Operator Metadata from quay.io ● Backend for all default sources, cluster needs to be online ● Supplies Red Hat Operators, ISV Operators and Community Operator ● Custom sources supported in customer-owned quay.io namespaces Operator Metadata in container images ● Already used internally used by OLM ● Operator package data is served from a SQlite database, bundled up in a container image ● Custom sources supported in customer-owned image registries ● Cluster can be disconnected / air-gapped Package name e.g. prometheus Channel name e.g. stable Operator Bundle 1 Operator Bundle 2 Channel name e.g. tech-preview Operator Bundle 3 ... Operator Package Metadata 30
  • 31. 31 ● Certified Operators submitted through Red Hat Connect - listed in OpenShift OperatorHub ● Community Operators submitted through GitHub - listed in both OpenShift and OKD OperatorHub ● Upstream Community Operators also submitted through GitHub - listed in the OperatorHub.io community website
  • 32. 34 OPERATOR LIFECYCLE MANAGER YourOperator v1.1.2 YourOperator v1.1.3 YourOperator v1.2.0 YourOperator v1.2.2 Subscription for YourOperator Time VersionOperator Catalog Operator Updates
  • 33. 35 Proxy Support OpenShift 4.2 Cluster OPERATOR LIFECYCLE MANAGER Pod spec: containers: - name: my-container image: ... env: - name: HTTP_PROXY value: "..." - name: HTTPS_PROXY value: "..." Cluster Proxy Config Operator
  • 34. 4.2 Automated Dependency Resolution YourOperator v1.1.2 requires requires Jaeger Operatorjaeger.jaegertracing.io/v1 CockroachDB Operatorcockroachdb.charts.helm.k8s.io/v1alpha1 resolves to resolves to Operator Framework Dependency Graphs OPERATOR LIFECYCLE MANAGER installed by installed by 36
  • 35. 38 OPERATOR SDK KUBERNETES OPERATOR + = + OPERATOR LIFECYCLE MANAGER DEVELOPER quay.io / Image Registry ADMINISTRATOR “create new operator” scaffolding custom logic metadata package Catalog Source “list packages” Package Discovery: $ oc get packagemanifests
  • 36. 39 OPERATOR SDK KUBERNETES OPERATOR + = + OPERATOR LIFECYCLE MANAGER DEVELOPER quay.io / Image Registry ADMINISTRATOR “create new operator” scaffolding custom logic metadata package Catalog Source “list packages” Package Discovery: $ oc get packagemanifests
  • 37. 40 OPERATOR SDK KUBERNETES OPERATOR + = + OPERATOR LIFECYCLE MANAGER DEVELOPER quay.io / Image Registry ADMINISTRATOR “create new operator” scaffolding custom logic metadata package Catalog Source “list packages” + “subscribe to an operator” subscriptionnamespaceoperator instance Operator Discovery: $ oc get csv -n <namespace>
  • 38. 41 OPERATOR SDK KUBERNETES OPERATOR + = + OPERATOR LIFECYCLE MANAGER DEVELOPER quay.io / Image Registry ADMINISTRATOR “create new operator” scaffolding custom logic metadata package Catalog Source “list packages” + “subscribe to an operator” subscriptionnamespaceoperator instance managed application “create application” USER
  • 39. 42 Operator Hub - Allows administrators to selectively make operators available from curated sources to users in the cluster. Operators in OpenShift
  • 40. 43 ● Operator SDK - Allows developers to build, package and test an Operator based on your expertise without requiring all the knowledge of Kubernetes API complexities ● Operator Lifecycle Manager - Helps you to install, and update, and generally manage the lifecycle of all of the Operators (and their associated services) running across your clusters ● Operator Metering - Enable usage reporting for Operators and resources within Kubernetes
  • 41. 44 Insights from Cluster Monitoring App-specific Insights from Operators 21 Use SDK libraries to export metrics Built Operator is run by the lifecycle manager
  • 43. Custom Operators Catalogs Operator Metadata from quay.io ● Backend for all default sources, cluster needs to be online ● Supplies Red Hat Operators, ISV Operators and Community Operator ● Custom sources supported in customer-owned quay.io namespaces Operator Metadata in container images ● Already used internally used by OLM ● Operator package data is served from a SQlite database, bundled up in a container image ● Custom sources supported in customer-owner image registries ● Cluster can be disconnected / air-gapped 47
  • 44. 48 Regular users can install Operators Release Channel for YourOperator Catalog containing YourOperator Instance of YourOperator (global) + = ADMINISTRATOR USER Release Channel for YourOperator Catalog containing YourOperator Instance of YourOperator (namespaced) + = ServiceAccount created by Administrator +
  • 45. Operator Framework Roadmap 49 Q4 CY19 1H CY20 2H CY20 Automatic Dependency Resolution Delegation of Operator installation to regular users Proxy / Disconnected Support Custom Operator Catalogs OLM SDK Helm v2.14 support Kubernetes 1.14 support Prometheus metrics UBI as base-image OLM Single Object to represent an Operator Container Images as Operator Bundles Container Registries as Operator Catalogs SDK Kubebuilder support OLM integration (“install” / “run”) OLM Investigation support for helm and OCI as bundle formats SDK Investigation of Java and Python support
  • 46. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat 50 Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you OPTIONALSECTIONMARKERORTITLE