2. Operator development made easy with Helm Page 2 of 17
Who am I and what do I do for living?
I’m a consultant at ConSol. I support &
advise customers how to use OpenShift
and Kubernetes and how to run
applications on these platforms.
My interest is how to accelerate the
development cycles for cloud native
applications.
Twitter: @ola_mey
3. Operator development made easy with Helm Page 3 of 17
About Consol Software GmbH
Software
Engineering
Whether with modern
software architecture,
cloud-native software, IT
integration or customized
CI/CD pipelines –
we understand our
technological
know-how as an offer to
master the challenges of
digitalization.
IT Solutions
We develop IT solutions
with a high utility value
and pursue ideas beyond
our current business. The
results? For example our
software ConSol CM, our
open source offer for test
automation or
Red Hat Solutions.
IT Operations
Managed services, IT
operations or support –
at ConSol you choose
exactly the services that
an efficient IT requires.
For any project size,
whether on premises or
in the cloud. Individual
SLAs ensure calculable
costs at all times.
IT Consulting
No matter whether
coaching, consulting in
a special field or
complete management
of your IT project: With
more than 30 years of
competence, our
consulting services are
above all tailored to
you and realizable.
4. Operator development made easy with Helm Page 4 of 17
Agenda
• What are Operators?
• Why is this interesting for me as a DevOps Engineer?
• Why should I care about Helm Operators, if I could use Go or ….
• When not to use Operators?
• How to combine Operators with GitOps?
• Demo
• Summary
5. Operator development made easy with Helm Page 5 of 17
What are Operators?
The term was coined in the article „Introducing Operators: Putting Operational
Knowledge into Software“ by Brandon Philips of CoreOS on 3rd
November 2016.
Definition of Operators from this article:
„We call this new class of software Operators. An Operator is an application-
specific controller that extends the Kubernetes API to create, configure, and
manage instances of complex stateful applications on behalf of a Kubernetes
user. It builds upon the basic Kubernetes resource and controller concepts but
includes domain or application-specific knowledge to automate common
tasks.“
6. Operator development made easy with Helm Page 6 of 17
What are Operators?
https://github.com/cncf/tag-app-delivery/blob/master/operator-wg/whitepaper/Operator-WhitePaper_v1-0.md
7. Operator development made easy with Helm Page 7 of 17
What are Operators?
Frameworks that help you create Operators (a not complete list)
• Operator Framework (https://operatorframework.io/)
• Kopf - Kubernetes Operator Pythonic Framework
(https://github.com/nolar/kopf)
• Kubebuilder (https://book.kubebuilder.io/)
• Metacontroller (https://metacontroller.github.io/metacontroller/)
• Kubernetes Universal Declarative Operator (https://kudo.dev/)
• Charmed Operator Framework (https://juju.is/)
• Shell-operator (https://github.com/flant/shell-operator)
• Write your own ...
8. Operator development made easy with Helm Page 8 of 17
Operator Framework
3 Pillars of the Operator Framework
1) Operator SDK
– Helm
– Ansible
– Go (Scaffolding by kubebuilder)
2) Operator Lifecycle Manager
3) Operatorhub.io
9. Operator development made easy with Helm Page 9 of 17
Operator Capability Levels
https://sdk.operatorframework.io/docs/overview/operator-capabilities/
10. Operator development made easy with Helm Page 10 of 17
Why use helm to create Operators?
• Helm is a broadly adopted framework for packaging of K8s applications
• Easy to learn and to read → Good starting point to create Operators
• Can later still be used for creating and updating K8S resources in other
Operators
• Defined CRD allow documentation and validation of user input
11. Operator development made easy with Helm Page 11 of 17
When not use helm to create Operators?
• Operator manages for K8s and non-K8S resources
• Deployment and updates require complex data- or application migration
12. Operator development made easy with Helm Page 12 of 17
When not create Operators?
• Only a few instances of the applications need to be installed
• No or seldom updates of existing applications
13. Operator development made easy with Helm Page 13 of 17
Demo(s)
1) Create helm Operator from a Nginx Helm-Chart
2) Combine two Operators with ArgoCD
– Project setup Operator → Creates namespaces, quota, limit ranges and
admin user based on CR
– Deploys example applications Java, NodeJs and Rails based on CR
15. Operator development made easy with Helm Page 15 of 17
Summary
• Creating (Helm) Operators is easy
• Do not underestimate the effort for testing and documentation
– Applies to all kinds of Operators
• CRDs are handled like every other resource in K8S
• A journey of a Helm operator to OperatorHub.io and back again
(https://labs.consol.de/development/2021/05/03/helm_based_operator.html)