apricotes notes

This commit is contained in:
Julian Tölle 2019-06-11 20:39:16 +02:00
parent b613502956
commit 880038d125
4 changed files with 199 additions and 0 deletions

View file

@ -38,5 +38,18 @@
> >
</li> </li>
</ul> </ul>
<h3>
<a href="https://www.meetup.com/Kubernetes-Meetup-Bielefeld"
>Kubernetes Meetup Bielefeld</a
>
</h3>
<ul>
<li>
<a href="./kubebuilder/index.html"
>#1 June 19 - Kubebuilder with Marvin Wolff</a
>
</li>
</ul>
</body> </body>
</html> </html>

111
kubebuilder/content.md Normal file
View file

@ -0,0 +1,111 @@
# Kubebuilder
---
### Content
- CRDs
- Controller / Operator
- Kubebuilder
- Live Coding
- Real Life Use Cases
---
## CRDs
---
## Controller
> A **control loop** that watches the state [...] and makes changes attempting to move the **current state towards the desired state**.
- [Kubernetes Glossary](https://kubernetes.io/docs/reference/glossary/?fundamental=true#term-controller)
--
## Controller
- integrated in `kube-apiserver` or `kube-controller-manager`
- watch builtin k8s objects (`core`, `apps`, `batch`)
- logic ontop of data
- create sub-resources
--
## Controller
### deployment controller
- watches `Deployments`
- creates and deletes `ReplicaSets`
- scales `ReplicaSets` for rolling deployments
--
## Controller
### kubelet
- watches `PodSpecs`
- starts/stops containers
--
## Operator
- term coined by CoreOS
- same as controller but for CRDs
- integrate operational knowledge
- provide usability features
- updates
- scaling
- backups
- integration with k8s
---
## Kubebuilder
---
## Live Coding
Check out the source at
https://github.com/apricote/kubebuilder-poke-sync
---
## Real Life Use Cases
### Databases
- scaling
- configuration
- disaster recovery
- e.g. [zalando/postgres-operator](https://github.com/zalando/postgres-operator)
- e.g. [mongodb-enterprise-kubernetes](https://github.com/mongodb/mongodb-enterprise-kubernetes)
--
## Real Life Use Cases
### Provisioning external resources
- call external APIs
- expose external state in cluster
- e.g. [jetstack/cert-manager](https://github.com/jetstack/cert-manager)
- e.g. [awslabs/aws-service-operator](https://github.com/awslabs/aws-service-operator)
--
## Real Life Use Cases
### Application Lifecycle Managment
- deployment
- supervised updates
- health checking + alerts
- Helm Chart++
- e.g. [gitlab-operator](https://gitlab.com/charts/components/gitlab-operator)
- e.g. [Tenant Operator](https://blog.kolide.com/using-a-kubernetes-operator-to-manage-tenancy-in-a-b2b-saas-app-250f1c9416ce)

BIN
kubebuilder/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

75
kubebuilder/index.html Normal file
View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<title>Kubebuilder</title>
<link rel="stylesheet" href="../reveal/css/reveal.css" />
<link rel="stylesheet" href="../reveal/css/theme/moon.css" id="theme" />
<link rel="stylesheet" href="../reveal/lib/css/atom-one-dark.css" />
<link rel="shortcut icon" href="favicon.png" />
<style>
@import url(https://cdn.rawgit.com/tonsky/FiraCode/1.204/distr/fira_code.css);
.reveal code {
font-family: "Fira Code", monospace;
}
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
<!-- Use external markdown resource, separate slides by three newlines; vertical slides by two newlines -->
<section
data-markdown="content.md"
data-separator-vertical="^\n--\n$"
></section>
</div>
</div>
<script src=" ../reveal/lib/js/head.min.js "></script>
<script src="../reveal/js/reveal.js "></script>
<script>
Reveal.initialize({
controlsTutorial: false,
center: false,
history: true,
// Optional libraries used to extend on reveal.js
dependencies: [
{
src: "../reveal/lib/js/classList.js",
condition: function() {
return !document.body.classList;
}
},
{
src: "../reveal/plugin/markdown/marked.js",
condition: function() {
return !!document.querySelector("[data-markdown]");
}
},
{
src: "../reveal/plugin/markdown/markdown.js",
condition: function() {
return !!document.querySelector("[data-markdown]");
}
},
{
src: "../reveal/plugin/highlight/highlight.js",
async: true,
callback: function() {
hljs.initHighlightingOnLoad();
}
}
]
});
</script>
</body>
</html>