├── CONTRIBUTING.md ├── .github └── workflows │ └── checker.yml ├── LICENSE └── README.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please help to make this list better. Ensure your pull request adheres to the following guidelines: 4 | 5 | - Be sure you have searched for duplicates of your addition in existing list and issues / pull requests. 6 | - Make sure the list is useful before submitting. 7 | - Use the following format: `[List Name](link)` 8 | - Link additions should be added to the bottom of the relevant category. 9 | - New categories or improvements to the existing categorization are welcome. 10 | - Check your spelling and grammar. 11 | - Make sure your text editor is set to remove trailing whitespace. 12 | - Place a dot at the end of each list item description. 13 | 14 | Thank you for your contributions! 15 | -------------------------------------------------------------------------------- /.github/workflows/checker.yml: -------------------------------------------------------------------------------- 1 | name: Checker 2 | 3 | on: 4 | schedule: 5 | - cron: "0 0 1 * *" 6 | 7 | jobs: 8 | linkChecker: 9 | name: Link Checker 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v3 14 | 15 | - name: Check Links 16 | id: lychee 17 | uses: lycheeverse/lychee-action@v1.5.1 18 | with: 19 | args: --verbose --max-concurrency 32 --timeout 120 --no-progress *.md 20 | 21 | - name: Create Issue From File 22 | if: ${{ steps.lychee.outputs.exit_code != 0 }} 23 | uses: peter-evans/create-issue-from-file@v4 24 | with: 25 | title: Link Checker Report 26 | content-filepath: ./lychee/out.md 27 | labels: report, automated issue 28 | 29 | - name: Fail if there were link errors 30 | if: ${{ steps.lychee.outputs.exit_code != 0 }} 31 | run: exit ${{ steps.lychee.outputs.exit_code }} 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Kubernetes Operator Resources [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 2 | 3 | A curated list of awesome resources: articles, books, videos about Kubernetes Operators. 4 | 5 | #### What is Kubernetes Operator? 6 | > A Kubernetes operator is an application-specific controller that extends the functionality of the Kubernetes API to create, configure, and manage instances of complex applications on behalf of a Kubernetes user. - [What is a Kubernetes operator?](https://www.redhat.com/en/topics/containers/what-is-a-kubernetes-operator#:~:text=A%20Kubernetes%20operator%20is%20an,behalf%20of%20a%20Kubernetes%20user). 7 | 8 | ## Contents 9 | - [Courses and Tutorials](#courses-and-tutorials) 10 | - [Books](#books) 11 | - [Videos](#videos) 12 | - [Operator Frameworks](#operator-frameworks) 13 | - [Catalogs and Hubs](#catalogs-and-Hubs) 14 | - [Contributing](#contributing) 15 | 16 | 17 | ## Courses and Tutorials 18 | * [Write Your First Kubernetes Operator in Go](https://shahin-mahmud.medium.com/write-your-first-kubernetes-operator-in-go-177047337eae). 19 | * [Kubernetes Operators Patterns and Best Practices](https://developer.ibm.com/articles/kubernetes-operators-patterns-and-best-practices/). 20 | * [ Introduction to Kubernetes operators](https://cognitiveclass.ai/courses/kubernetes-operators-intermediate). 21 | * [Learn how to deploy Kubernetes operator written in Golang](https://docs.ovh.com/sg/en/kubernetes/deploying-go-operator/). 22 | * [Building and running a Go-based operator](https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/). 23 | * [Build your Kubernetes operator with the right tool](https://cloud.redhat.com/blog/build-your-kubernetes-operator-with-the-right-tool). 24 | * [Write Kubernetes with the Java Operator SDK](https://developers.redhat.com/articles/2022/02/15/write-kubernetes-java-java-operator-sdk). 25 | * [Write Kubernetes with the Java Operator SDK](https://developers.redhat.com/articles/2022/02/15/write-kubernetes-java-java-operator-sdk). 26 | * [Kubernetes operators advanced](https://courses.cognitiveclass.ai/courses/course-v1:IBM+CO0302EN+v1/course/). 27 | * [Build and deploy your first Kubernetes Operator using the Operator SDK.](https://medium.com/faun/writing-your-first-kubernetes-operator-8f3df4453234). 28 | * [Building a Kubernetes Operator In Python With Zalando’s Kopf](https://medium.com/swlh/building-a-kubernetes-operator-in-python-with-zalandos-kopf-37c311d8edff). 29 | * [Getting started with Kubernetes operators (Helm Based) - Part 1](https://www.velotio.com/engineering-blog/getting-started-with-kubernetes-operators-helm-based-part-1). 30 | * [Getting started with Kubernetes operators (Ansible Based) — Part 2](https://medium.com/velotio-perspectives/getting-started-with-kubernetes-operators-ansible-based-part-2-472eb0d453b7). 31 | * [Getting started with Kubernetes operators (Golang Based) - Part 3](https://www.velotio.com/engineering-blog/getting-started-with-kubernetes-operators-golang-based-part-3). 32 | * [Kubernetes operators — fundamental concepts](https://medium.com/@vivek-syngh/kubernetes-operators-fundamental-concepts-f9671597acfd). 33 | * [Getting started with Kubernetes | Operator and operator framework](https://medium.com/@alibaba-cloud/getting-started-with-kubernetes-operator-and-operator-framework-8fe406985e34). 34 | * [Go Kubernetes operator](https://medium.com/techlogs/go-kubernetes-operator-963461e528c5). 35 | * [Kubernetes Operators for beginners](https://medium.com/@truestorydavestorey/kubernetes-operators-for-beginners-8f53ead07097). 36 | * [Creating custom Kubernetes Operators](https://www.weave.works/blog/creating-custom-kubernetes-operators). 37 | * [Kubernetes Operators in depth](https://www.infoq.com/articles/kubernetes-operators-in-depth/). 38 | * [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/). 39 | * [Defining dependencies in Kubernetes Operators](http://heidloff.net/article/defining-dependencies-kubernetes-operators/). 40 | * [Kubernetes: when to use, and when to avoid, the operator pattern](https://thenewstack.io/kubernetes-when-to-use-and-when-to-avoid-the-operator-pattern/). 41 | * [First Steps with the Kubernetes Operator](https://dzone.com/articles/first-steps-with-the-kubernetes-operator). 42 | * [How to create a custom resource with Kubernetes Operator](https://codilime.com/blog/how-to-create-a-custom-resource-with-kubernetes-operator/). 43 | * [Security implications of Kubernetes operators](https://snyk.io/blog/security-implications-of-kubernetes-operators/). 44 | * [Writing kubernetes operators with python](https://www.spectrocloud.com/blog/writing-kubernetes-operators-with-python/). 45 | * [Developing operators for kubernetes](https://www.maibornwolff.de/en/know-how/developing-operators-for-kubernetes/). 46 | * [A deep dive into kubernetes operators](https://cloudnativenow.com/features/a-deep-dive-into-kubernetes-operators/). 47 | * [Kubernetes Operator: A Practical Introduction](https://www.linkedin.com/pulse/kubernetes-operator-practical-introduction-bhanu-chaddha/). 48 | * [How to implement Kubernetes operators with Java Operator SDK](https://developers.redhat.com/articles/2023/08/16/how-implement-kubernetes-operators-java-operator-sdk). 49 | * [Ultimate Guide to Kubernetes Operators](https://komodor.com/learn/kubernetes-operator/). 50 | * [Build Your Kubernetes Operator with the Right Tool](https://hazelcast.com/blog/build-your-kubernetes-operator-with-the-right-tool/). 51 | 52 | 53 | ## Books 54 | * [Kubernetes Operators: Automating the Container Orchestration Platform](https://www.oreilly.com/library/view/kubernetes-operators/9781492048039/). 55 | * [The little book of Kubernetes Operators](https://leanpub.com/the-little-book-of-kubernetes-operators). 56 | * [The Kubernetes Operator Framework Book](https://www.amazon.com/Kubernetes-Operator-Framework-Book-management/dp/1803232854). 57 | * [Extending Kubernetes: Elevate Kubernetes with Extension Patterns, Operators, and Plugins](https://www.amazon.com/Extending-Kubernetes-Extension-Patterns-Operators/dp/1484270940). 58 | 59 | 60 | 61 | ## Videos 62 | * [Creating Kubernetes Operator using operator-sdk](https://www.youtube.com/watch?v=FHjLL5e7h00). 63 | * [Writing a Kubernetes Operator from Scratch Using Kubebuilder](https://www.youtube.com/watch?v=LLVoyXjYlYM). 64 | * [Hands-on Demo: Introduction to Kubernetes Operators](https://www.youtube.com/watch?v=wDLbqlEHuBc). 65 | * [Kubernetes Operator simply explained in 10 mins](https://www.youtube.com/watch?v=ha3LjlD6g7g). 66 | * [Kubernetes Operators Explained](https://www.youtube.com/watch?v=i9V4oCa5f9I). 67 | * [Introduction to Kubernetes Operators](https://developer.ibm.com/articles/introduction-to-kubernetes-operators/). 68 | * [introduction to Kubernetes Operators](https://www.youtube.com/watch?v=KRNlDQTeFKs). 69 | * [Kubernetes Operators: Talk 2: How to build operators](https://www.redhat.com/en/about/videos/kubernetes-operators-talk-2-how-to-build-operators). 70 | * [Creating a Kubernetes Operator in Java](https://dzone.com/articles/creating-a-kubernetes-operator-in-java-video). 71 | * [Automating Stateful Applications with Kubernetes Operators](https://www.openstack.org/videos/summits/berlin-2018/automating-stateful-applications-with-kubernetes-operators). 72 | * [Building Kubernetes Operators in an Ansible-native way](https://chrisshort.net/video/building-kubernetes-operators-ansible-native-way/). 73 | * [Learn how Kubernetes Operators work from this example](https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/kubernetes-operators-example-tutorial-k8s-docker-mariadb). 74 | * [Write your first simple Kubernetes operator](https://suedbroecker.net/2021/02/05/write-your-first-simple-kubernetes-operator/). 75 | * [Write your first simple Kubernetes operator](https://suedbroecker.net/2021/02/05/write-your-first-simple-kubernetes-operator/). 76 | * [Write your first simple Kubernetes operator](https://suedbroecker.net/2021/02/05/write-your-first-simple-kubernetes-operator/). 77 | * [Create a Java-based Kubernetes Operator using Quarkus](https://www.youtube.com/watch?v=s56LRtdbSB4). 78 | * [The Automation Challenge: Kubernetes Operators vs Helm Charts](https://www.youtube.com/watch?v=HGHYD7ejBBs). 79 | * [Creating a Go Operator from scratch](https://www.youtube.com/watch?v=Uu9fwiJBckw). 80 | * [An overview of Kubernetes operators and the Operator SDK](https://www.youtube.com/watch?v=huX6Sk1lKAY). 81 | * [Writing a Kubernetes Operator: the Hard Parts](https://www.youtube.com/watch?v=wMqzAOp15wo). 82 | * [Zero to Operator in 90 Minutes](https://www.youtube.com/watch?v=KBTXBUVNF2I). 83 | * [A rough guide to Kubernetes Operators](https://www.youtube.com/watch?v=NfxQb--4Wng). 84 | * [Let's build a Kubernetes Operator in Go!](https://www.youtube.com/watch?v=8Ex7ybi273g&t=328s). 85 | * [Introduction to Kubernetes operators and the operator framework](https://www.youtube.com/watch?v=pTbuHoMp68s). 86 | * [Get on board with kubernetes operators!](https://www.youtube.com/watch?v=JNDjE9-2Bg4). 87 | * [Kubernetes Operators - Hands on workshop](https://www.youtube.com/watch?v=bWc2D1NSVPQ). 88 | * [Extending kubernetes with custom controllers](https://www.youtube.com/watch?v=-MawbsIDSk8). 89 | * [Deep dive into the operator framework for Kubernetes](https://www.youtube.com/watch?v=8_DaCcRMp5I). 90 | * [Getting started with kubernetes operators in Java](https://www.youtube.com/watch?v=1kePLR2abno). 91 | * [Writing K8S Operator (Golang) - Part 1](https://www.youtube.com/watch?v=89PdRvRUcPU). 92 | * [Writing K8S Operator (Golang) - Part 2](https://www.youtube.com/watch?v=MOutOgdXfnA). 93 | * [Writing K8S Operator (Golang) - Part 3](https://www.youtube.com/watch?v=Wtyj0V4Inmg). 94 | * [Writing K8S Operator (Golang) - Part 4](https://www.youtube.com/watch?v=BnzfUWQHDzA). 95 | * [Everything about kubernetes operators](https://www.youtube.com/watch?v=VAojjIYVhGk). 96 | * [Becoming a kubernetes developer](https://www.youtube.com/watch?v=fDkoxrz7BXw). 97 | * [Everything you need to know about Kubebuilder: Write operators like a pro](https://www.youtube.com/watch?v=_XUJ1HoinWA). 98 | * [Building a Kubernetes Operator for Automated Distributed Tracing](https://www.youtube.com/watch?v=lPpYIYx6gcA). 99 | 100 | 101 | 102 | ## Operator Frameworks 103 | * [Operator SDK](https://github.com/operator-framework/operator-sdk) - Advanced Go SDK for building Kubernetes Operators. 104 | * [Kubebuilder](https://github.com/kubernetes-sigs/kubebuilder) - The SDK for building Kubernetes APIs using CRDs. 105 | * [Java-operator-sdk](https://github.com/ContainerSolutions/java-operator-sdk) - Java SDK for building Kubernetes Operators. 106 | * [Shell-operator](https://github.com/flant/shell-operator) - Framework for creating K8s operators from scripts. 107 | * [k8s-operator-node](https://github.com/dot-i/k8s-operator-node) - NodeJS Kubernetes operator framework. 108 | * [Csharp-operator-sdk](https://github.com/falox/csharp-operator-sdk) - Build Kubernetes operators with C# and .NET Core. 109 | * [Bonny](https://github.com/coryodaniel/bonny) - The Elixir based Kubernetes Development Framework. 110 | * [Abstract-operator](https://github.com/jvm-operators/abstract-operator) - Library/SDK for creating the operators for Kubernetes and Openshift. 111 | * [Kopf](https://github.com/zalando-incubator/kopf) - A Python framework to write Kubernetes operators in just few lines of code. 112 | * [KubeOps](https://github.com/buehler/dotnet-operator-sdk) - KubeOps is a kubernetes operator sdk in dotnet. Strongly inspired by kubebuilder. 113 | * [Kudo](https://github.com/kudobuilder/kudo) - Kubernetes Universal Declarative Operator. 114 | * [Metacontroller](https://github.com/GoogleCloudPlatform/metacontroller) - Lightweight Kubernetes controllers as a service. 115 | * [Operatorkit](https://github.com/giantswarm/operatorkit) - An opinionated Go framework for developing Kubernetes operators. 116 | * [Controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) - Repo for the controller-runtime subproject of kubebuilder (sig-apimachinery). 117 | * [Roperator](https://github.com/psFried/roperator) - Experimental Kubernetes Operator kit written in Rust. 118 | 119 | ## Catalogs and Hubs 120 | * [OperatorHub.io](https://operatorhub.io/) - The registry for Kubernetes Operators. 121 | * [Artifact Hub](https://artifacthub.io/packages/search?operators=true&sort=relevance&page=1) - Find, install and publish Kubernetes packages. 122 | 123 | 124 | ## Contributing 125 | 126 | Please take a look at the [contribution guidelines](CONTRIBUTING.md) first. Contributions are always welcome! 127 | If you have any question about this opinionated list, do not hesitate to contact me [@cpuram1](https://twitter.com/cpuram1) on Twitter or open an issue on GitHub. 128 | 129 | Thanks to all [contributors](https://github.com/calvin-puram/awesome-kubernetes-operator-resources/graphs/contributors); you rock! 130 | 131 | --------------------------------------------------------------------------------