mirror of
https://github.com/apricote/presentations.git
synced 2026-01-13 13:01:03 +00:00
apricotes notes
This commit is contained in:
parent
b613502956
commit
880038d125
4 changed files with 199 additions and 0 deletions
13
index.html
13
index.html
|
|
@ -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
111
kubebuilder/content.md
Normal 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
BIN
kubebuilder/favicon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
75
kubebuilder/index.html
Normal file
75
kubebuilder/index.html
Normal 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>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue