first commit
This commit is contained in:
parent
c884330ca9
commit
dcc2f600ae
16 changed files with 9152 additions and 0 deletions
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
node_modules
|
||||||
|
.DS_Store
|
||||||
|
dist
|
||||||
|
*.local
|
||||||
|
.vite-inspect
|
||||||
|
.remote-assets
|
||||||
|
components.d.ts
|
||||||
3
.npmrc
Normal file
3
.npmrc
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# for pnpm
|
||||||
|
shamefully-hoist=true
|
||||||
|
auto-install-peers=true
|
||||||
37
components/Counter.vue
Normal file
37
components/Counter.vue
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
count: {
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const counter = ref(props.count)
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div flex="~" w="min" border="~ main rounded-md">
|
||||||
|
<button
|
||||||
|
border="r main"
|
||||||
|
p="2"
|
||||||
|
font="mono"
|
||||||
|
outline="!none"
|
||||||
|
hover:bg="gray-400 opacity-20"
|
||||||
|
@click="counter -= 1"
|
||||||
|
>
|
||||||
|
-
|
||||||
|
</button>
|
||||||
|
<span m="auto" p="2">{{ counter }}</span>
|
||||||
|
<button
|
||||||
|
border="l main"
|
||||||
|
p="2"
|
||||||
|
font="mono"
|
||||||
|
outline="!none"
|
||||||
|
hover:bg="gray-400 opacity-20"
|
||||||
|
@click="counter += 1"
|
||||||
|
>
|
||||||
|
+
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
BIN
infctl.png
Normal file
BIN
infctl.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 129 KiB |
16
netlify.toml
Normal file
16
netlify.toml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
[build]
|
||||||
|
publish = "dist"
|
||||||
|
command = "npm run build"
|
||||||
|
|
||||||
|
[build.environment]
|
||||||
|
NODE_VERSION = "20"
|
||||||
|
|
||||||
|
[[redirects]]
|
||||||
|
from = "/.well-known/*"
|
||||||
|
to = "/.well-known/:splat"
|
||||||
|
status = 200
|
||||||
|
|
||||||
|
[[redirects]]
|
||||||
|
from = "/*"
|
||||||
|
to = "/index.html"
|
||||||
|
status = 200
|
||||||
BIN
og-image.png
Normal file
BIN
og-image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 737 KiB |
8763
package-lock.json
generated
Normal file
8763
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
19
package.json
Normal file
19
package.json
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"name": "nov-2025-mvk",
|
||||||
|
"type": "module",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"build": "slidev build",
|
||||||
|
"dev": "slidev --open",
|
||||||
|
"export": "slidev export"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@slidev/cli": "^52.1.0",
|
||||||
|
"@slidev/theme-default": "latest",
|
||||||
|
"@slidev/theme-seriph": "latest",
|
||||||
|
"vue": "^3.5.18"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"playwright-chromium": "^1.54.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
64
pages/config-slide.md
Normal file
64
pages/config-slide.md
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
level: 2
|
||||||
|
---
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
Configuration is based on a list of simple JSON objects.
|
||||||
|
|
||||||
|
````md magic-move {lines: true}
|
||||||
|
```js {1,12|2-10}
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "...",
|
||||||
|
"function": "...",
|
||||||
|
"params": [
|
||||||
|
"..."
|
||||||
|
],
|
||||||
|
"retryCount": int,
|
||||||
|
"shouldAbort": true|false
|
||||||
|
},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
```js {2-10}
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "ensure infctl namespace exists",
|
||||||
|
"function": "k8sNamespaceExists",
|
||||||
|
"params": [
|
||||||
|
"infctl"
|
||||||
|
],
|
||||||
|
"retryCount": 0,
|
||||||
|
"shouldAbort": true
|
||||||
|
},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "ensure infctl namespace exists",
|
||||||
|
"function": "k8sNamespaceExists",
|
||||||
|
"params": [
|
||||||
|
"infctl"
|
||||||
|
],
|
||||||
|
"retryCount": 0,
|
||||||
|
"shouldAbort": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "check operator"",
|
||||||
|
"function": "RunCommand",
|
||||||
|
"params": [
|
||||||
|
"./scripts/check__operator.sh"
|
||||||
|
],
|
||||||
|
"retryCount": 5,
|
||||||
|
"shouldAbort": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
````
|
||||||
27
pages/imported-slides.md
Normal file
27
pages/imported-slides.md
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Imported Slides
|
||||||
|
|
||||||
|
You can split your slides.md into multiple files and organize them as you want using the `src` attribute.
|
||||||
|
|
||||||
|
#### `slides.md`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Page 1
|
||||||
|
|
||||||
|
Page 2 from main entry.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## src: ./subpage.md
|
||||||
|
```
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
#### `subpage.md`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Page 2
|
||||||
|
|
||||||
|
Page 2 from another file.
|
||||||
|
```
|
||||||
|
|
||||||
|
[Learn more](https://sli.dev/guide/syntax.html#importing-slides)
|
||||||
39
pages/infctl-summary.md
Normal file
39
pages/infctl-summary.md
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Alpha release
|
||||||
|
|
||||||
|
<div grid="~ cols-2 gap-4">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
`infctl` is an early release.
|
||||||
|
|
||||||
|
treat is as 'Alpha'.
|
||||||
|
|
||||||
|
Its a sketch of ideas I've been working on for decades.
|
||||||
|
|
||||||
|
I'd like to share it as I code it and use it.
|
||||||
|
|
||||||
|
Open to ideas, comments, contribution and collaboration.
|
||||||
|
|
||||||
|
License: [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Check out [https://codeberg.org/headshed/infctl-cli](https://codeberg.org/headshed/infctl-cli) for more.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<img src="/infctl.png">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Presenter note with **bold**, *italic*, and ~~striked~~ text.
|
||||||
|
|
||||||
|
Also, HTML elements are valid:
|
||||||
|
<div class="flex w-full">
|
||||||
|
<span style="flex-grow: 1;">Left content</span>
|
||||||
|
<span>Right content</span>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
22
pages/intro-slide.md
Normal file
22
pages/intro-slide.md
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# What is Minimal Viable Kubernetes?
|
||||||
|
|
||||||
|
MVK is kubernetes for the impatient and impeverished, and consists the following features
|
||||||
|
|
||||||
|
- ≥ **CLI** - Living in the terminal, uses [`infctl`](https://mvk.headshed.dev/guides/intro/) command line pipeline
|
||||||
|
- 🧑💻 **Startup Friendly** - Getting a functional stack quickly and simply
|
||||||
|
- 🤹 **Automated** - Focus on an infrastructure as code
|
||||||
|
- 🎥 **Repeatable** - Repeatable, re-useable and predictable.
|
||||||
|
- 📤 **Portable** - Kubernetes that can run anywhere
|
||||||
|
- 🛠 **Hackable** - Simple to modify, extend and prototype
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
<div mt-20 v-click>
|
||||||
|
|
||||||
|
See a [Demo that goes terribly wrong](http://ascii.headshed.dev/a/f8S5WqD7OyCzkTcoPZhCSnefX?t=30)
|
||||||
|
|
||||||
|
Then see [one that goes right](http://ascii.headshed.dev/a/jSYcC7p4pbkMdf1B07rQOiIa0?t=01:30)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
30
pages/plugins-slide.md
Normal file
30
pages/plugins-slide.md
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
level: 2
|
||||||
|
---
|
||||||
|
|
||||||
|
# Plugins
|
||||||
|
|
||||||
|
Plugins are any script or executable that print output and exit with a number.
|
||||||
|
|
||||||
|
````md magic-move {lines: true}
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
echo "HI THERE..."
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# do some work...
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
echo "call the president..."
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
````
|
||||||
106
slides.md
Normal file
106
slides.md
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
---
|
||||||
|
# You can also start simply with 'default'
|
||||||
|
theme: seriph
|
||||||
|
# random image from a curated Unsplash collection by Anthony
|
||||||
|
# like them? see https://unsplash.com/collections/94734566/slidev
|
||||||
|
background: https://cover.sli.dev
|
||||||
|
# some information about your slides (markdown enabled)
|
||||||
|
title: Minimal Viable Kubernetes
|
||||||
|
info: |
|
||||||
|
## MVK
|
||||||
|
Kubernetes for minimalists.
|
||||||
|
|
||||||
|
Learn more at [mvk.headshed.dev](https://mvk.headshed.dev)
|
||||||
|
# apply unocss classes to the current slide
|
||||||
|
class: text-center
|
||||||
|
# https://sli.dev/features/drawing
|
||||||
|
drawings:
|
||||||
|
persist: false
|
||||||
|
# slide transition: https://sli.dev/guide/animations.html#slide-transitions
|
||||||
|
transition: slide-left
|
||||||
|
# enable MDC Syntax: https://sli.dev/features/mdc
|
||||||
|
mdc: true
|
||||||
|
# open graph
|
||||||
|
seoMeta:
|
||||||
|
# By default, Slidev will use ./og-image.png if it exists,
|
||||||
|
# or generate one from the first slide if not found.
|
||||||
|
ogImage: auto
|
||||||
|
# ogImage: https://cover.sli.dev
|
||||||
|
---
|
||||||
|
|
||||||
|
# Minimal Viable Kubernetes
|
||||||
|
|
||||||
|
Kubernetes for the impatient and impoverished
|
||||||
|
|
||||||
|
Jon Brookes 2025
|
||||||
|
|
||||||
|
<div @click="$slidev.nav.next" class="mt-12 py-1" hover:bg="white op-10">
|
||||||
|
Press Space for next page <carbon:arrow-right />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="abs-br m-6 text-xl">
|
||||||
|
<button @click="$slidev.nav.openInEditor()" title="Open in Editor" class="slidev-icon-btn">
|
||||||
|
<carbon:edit />
|
||||||
|
</button>
|
||||||
|
<a href="https://codeberg.org/marshyon/n25.git" target="_blank" class="slidev-icon-btn">
|
||||||
|
<carbon:logo-github />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is an introduction to Minimal Viable Kubernetes (MVK). What it is, why it is and tooling around it.
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
transition: fade-out
|
||||||
|
src: ./pages/intro-slide.md
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
You can have `style` tag in markdown to override the style for the current page.
|
||||||
|
Learn more: https://sli.dev/features/slide-scope-style
|
||||||
|
-->
|
||||||
|
|
||||||
|
<style>
|
||||||
|
h1 {
|
||||||
|
background-color: #2B90B6;
|
||||||
|
background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
|
||||||
|
background-size: 100%;
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-moz-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
-moz-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Here is another comment.
|
||||||
|
-->
|
||||||
|
|
||||||
|
---
|
||||||
|
src: ./pages/config-slide.md
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
transition: fade-out
|
||||||
|
src: ./pages/plugins-slide.md
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
transition: fade-out
|
||||||
|
src: ./pages/infctl-summary.md
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
layout: center
|
||||||
|
class: text-center
|
||||||
|
---
|
||||||
|
|
||||||
|
# Learn More
|
||||||
|
|
||||||
|
[Documentation](https://mvk.headshed.dev) · [GitHub](https://codeberg.org/headshed/infctl-cli)
|
||||||
|
|
||||||
|
<PoweredBySlidev mt-10 />
|
||||||
12
snippets/external.ts
Normal file
12
snippets/external.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
/* eslint-disable no-console */
|
||||||
|
|
||||||
|
// #region snippet
|
||||||
|
// Inside ./snippets/external.ts
|
||||||
|
export function emptyArray<T>(length: number) {
|
||||||
|
return Array.from<T>({ length })
|
||||||
|
}
|
||||||
|
// #endregion snippet
|
||||||
|
|
||||||
|
export function sayHello() {
|
||||||
|
console.log('Hello from snippets/external.ts')
|
||||||
|
}
|
||||||
7
vercel.json
Normal file
7
vercel.json
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"rewrites": [
|
||||||
|
{ "source": "/(.*)", "destination": "/index.html" }
|
||||||
|
],
|
||||||
|
"buildCommand": "npm run build",
|
||||||
|
"outputDirectory": "dist"
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue