try adidoks

This commit is contained in:
WrenIX 2024-11-07 20:34:34 +01:00
parent 37813805fe
commit 53efa2c0c4
Signed by: wrenix
GPG key ID: 7AFDB012974B1BB5
28 changed files with 389 additions and 71 deletions

6
.gitmodules vendored
View file

@ -1,3 +1,3 @@
[submodule "themes/terminimal"] [submodule "themes/adidoks"]
path = themes/terminimal path = themes/adidoks
url = https://github.com/pawroman/zola-theme-terminimal.git url = https://github.com/aaranxu/adidoks.git

View file

@ -2,22 +2,35 @@ base_url = "https://wrenix.eu"
title = "WrenIX" title = "WrenIX"
description = "Der Zaunkönig im Netzwerk" description = "Der Zaunkönig im Netzwerk"
# generate_feed = true
compile_sass = true compile_sass = true
minify_html = true
# BROKEN: trimmer.de
build_search_index = false build_search_index = false
# theme = "anatole-zola" # theme = "anatole-zola"
# theme = "tabi" # theme = "tabi"
theme = "terminimal" # theme = "terminimal"
theme = "adidoks"
taxonomies = [ taxonomies = [
{name = "tags"} # {name = "tags"}
{name = "authors" }
] ]
# feed_filename = "rss.xml" generate_feeds = true
feed_filenames = [ "rss.xml" ]
default_language = "de" default_language = "de"
[languages.en] [languages.en]
title = "WrenIX"
description = "The wren in the network"
[search]
include_title = true
# Whether to include the description of the page/section in the index
include_description = false
include_content = true
index_format = "elasticlunr_javascript"
[markdown] [markdown]
external_links_target_blank = true external_links_target_blank = true
@ -33,42 +46,58 @@ background_color = "blue"
logo_text="WrenIX" logo_text="WrenIX"
author="WrenIX" author="WrenIX"
copyright_html="© WrenIX"
use_full_hack_font = true
page_titles = "main_only" page_titles = "main_only"
timeformat = "%Y-%m-%d"
favicon = "/images/avatar.png" favicon = "/images/avatar.png"
favicon_mimetype = "image/png" favicon_mimetype = "image/png"
[[extra.menu_items]] [extra.open]
name="home" enable = false
url="$BASE_URL" image = "/images/avatar.png"
[[extra.menu_items]] [extra.schema]
name="archive" type = "Person"
url="$BASE_URL/archive" github = "https://github.com/wrenix"
section = "blog"
site_links_search_box = true
[[extra.menu_items]] [[extra.menu.main]]
name="about me" name="Blog"
url="$BASE_URL/about" section="blog"
url="/"
[[extra.menu_items]] [[extra.menu.main]]
name="rss" name="About Me"
url="$BASE_URL/rss.xml" section="about"
newtab=true url="about"
[[extra.menu_items]]
name="docs"
url="https://docs.wrenix.eu"
newtab=true
[[extra.menu_items]] [[extra.menu.main]]
name="mastodon" name="Docs"
section="docs"
url="docs"
[[extra.menu.social]]
name="RSS"
pre='''<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg>'''
url="/rss.xml"
[[extra.menu.social]]
name="Mastodon"
pre='''<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-activity"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>'''
url="https://social.chaos.fyi/@wrenix" url="https://social.chaos.fyi/@wrenix"
newtab=true
[[extra.menu_items]] [[extra.menu.social]]
name="git" name="git"
pre='''<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-git-branch"><line x1="6" y1="3" x2="6" y2="15"></line><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path></svg>'''
url="https://codeberg.org/wrenix" url="https://codeberg.org/wrenix"
newtab=true
[extra.footer]
info = "© WrenIX"
[[extra.footer.nav]]
name = "Privacy"
url = "/privacy-policy/"
weight = 10

View file

@ -1,12 +1,14 @@
+++ +++
title = "eToken und GPG-Key" title = "eToken und GPG-Key"
date = "2023-05-17" date = "2023-05-17"
template = "blog/page.html"
[taxonomies] [taxonomies]
tags = [ authors = ["me"]
"gpg", # tags = [
"desktop" # "gpg",
] # "desktop"
# ]
+++ +++
Ich nutze den GPG-Key für folgende Funktionen: Ich nutze den GPG-Key für folgende Funktionen:

View file

@ -1,12 +1,14 @@
+++ +++
title = "Passwordmanager mit GPG-Key" title = "Passwordmanager mit GPG-Key"
date = "2023-05-18" date = "2023-05-18"
template = "blog/page.html"
[taxonomies] [taxonomies]
tags = [ authors = ["me"]
"gpg", #tags = [
"desktop" # "gpg",
] # "desktop"
#]
+++ +++
``` ```

View file

@ -1,14 +1,16 @@
+++ +++
title = "Modernes Logging Konzept" title = "Modernes Logging Konzept"
date= "2023-06-22" date= "2023-06-22"
template = "blog/page.html"
[taxonomies] [taxonomies]
tags = [ authors = ["me"]
"k8s", #tags = [
"kubernetes", # "k8s",
"server", # "kubernetes",
"logging" # "server",
] # "logging"
#]
+++ +++
- Logging Schema / Format - Logging Schema / Format

View file

@ -1,12 +1,15 @@
+++ +++
title = "Die Zukunft von Matrix" title = "Die Zukunft von Matrix"
date = "2024-08-28" date = "2024-08-28"
draft = true
template = "blog/page.html"
[taxonomies] [taxonomies]
tags = [ authors = ["me"]
"matrix", # tags = [
"element" # "matrix",
] # "element"
# ]
+++ +++
Zunächst, ich bin eine private Person und stehe nicht in Verbindung zu Element oder der Matrix Foundation. Zunächst, ich bin eine private Person und stehe nicht in Verbindung zu Element oder der Matrix Foundation.

6
content/_index.en.md Normal file
View file

@ -0,0 +1,6 @@
+++
title = "Blog"
sort_by = "date"
paginate_by = 3
template = "blog/section.html"
+++

View file

@ -1,5 +1,6 @@
+++ +++
title = "Home" title = "Blog"
sort_by = "date" sort_by = "date"
paginate_by = 3 paginate_by = 4
template = "blog/section.html"
+++ +++

10
content/authors/_index.md Normal file
View file

@ -0,0 +1,10 @@
+++
title = "Authors"
description = "The authurs of the blog articles."
# Note: We use quoted keys here.
[extra.author_pages]
"me" = "authors/wrenix.md"
+++
The authors of the blog articles.

11
content/docs/_index.md Normal file
View file

@ -0,0 +1,11 @@
+++
title = "Docs"
description = "All the documentations from WrenIX projects"
sort_by = "weight"
weight = 1
template = "docs/section.html"
+++
Kubernetes:
* [Helm Charts](helm-charts)
* [FluxCD (Charts)](flux-charts)

View file

@ -0,0 +1 @@
../../../../flux-charts/README.md

View file

@ -0,0 +1,6 @@
+++
title = "FluxCD (Charts)"
template = "docs/section.html"
sort_by = "weight"
weight = 2
+++

View file

@ -0,0 +1,172 @@
+++
title = "Base"
template = "docs/page.html"
sort_by = "weight"
weight = 3
[extra]
toc = true
+++
This Helm-Chart called base is there to bundle multiple components (helm-charts which maybe deployes another flux-repository).
## Base-Values
On this way, it is possible to use one `values.yaml` to setup multiple-components together or multiple overlapping `values.yaml` (e.g. for staging, stacks and so on).
For example, take an look in my xref:infra:index.adoc[Infra] and xref:mycloud:index.adoc[myCloud] stack.
!!! warning
I will do a versioning of this Base Helmchart and every components chart (but not for my default values).
This is just for my setups.
As in Hint, it is possible to use `valuesFrom:` and deploy ConfigMap, see [fluxcd](https://fluxcd.io/flux/components/helm/helmreleases/#values-references).
### Shared Values
The values `global:` and `commons:` are down passed into every component values.
This values could be overwritten inside the setup of every component `components.<component-name>.global:` or `components.<component-name>.commons:`.
See also [Components - Values](#values)
## Components
The components are an helmchart in the `commons.helm.chart.sourceRef` root.
Everything else is components specific and could be set under:
``` yaml
commons:
namespace:
labels:
orgs: example
helm:
release:
install:
test:
upgrade:
driftDetection:
componentCommons:
helm:
release:
interval: 10m
components:
<component-release-name>:
enabled: true <1>
name: <2>
namespace: <3>
name:
labels:
team: my
skip_create: false
valuesFrom: <4>
values: <5>
```
* <1> install this components (or not)
* <2> if set use component by name otherwise component is used by component-release-name
* <3> setup namespace, where component is deployed (e.g. name, labels of namespace, skip-create) if not set use namespace of current Base
* <4> use `valuesFrom` an `Secret` or `ConfigMap`
* <5> use values direct
### Namespace
It is possible to deploy an components into a specific namespace (and create this).
#### Use existing Namespace
``` yaml
components:
<component-release-name>:
namespace:
name: "default"
skip_create: true
```
#### Same Namespace as Base
``` yaml
components:
<component-release-name>:
namespace:
name: nil <1>
```
* <1> or never set this part
#### New Namespace
``` yaml
commons:
namespace:
labels: <1>
orgs: example
components:
<component-release-name>:
namespace:
name: "my-namespace"
labels: <2>
team: my
```
* <1> optional with labels on every new namespace by this component-release
* <2> optional with labels on this component-release
### Values
There are multiple options to set values of an components.
Here in short the four options and order by overwrite priority.
``` yaml
global: <3>
commons: <3>
componentCommons:
helm:
release:
valuesFrom: <1>
components:
<component-release-name>:
valuesFrom: [] <2>
values: <4>
```
* <1> `valuesFrom` for every components (e.g one or multiple `ConfigMap` or `Secrets`)
* <2> `valuesFrom` of a specific component
* <3> `global:` or `commons` for every componets
* <4> values for a specific component
#### Adjust Component setup (fluxcd values)
``` yaml
commons: <1>
helm:
release:
install:
test:
upgrade:
driftDetection:
componentCommons:
helm:
release: <2>
interval: 10m
```
* <1> is part of commons, for maybe reuse inside of an component-chart.
* <2> is part of componentCommons for just use of component use level.
#### init-Version
!!! warning
Since FluxCD supports driftDetection (with version 2.2) we maybe drop that idea.
This is a small workaround to setup manifest in later step / rerun an component-chart, as e.g. CRD installation by an HelmRelease which is part of the used Component-Chart.
.Helper which should be put into the Component-Chart (with Capabilities if every is there to setup / to retries)
``` yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-init
namespace: "{{ .Values.init.namespace }}"
data:
{{- if and
(.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/PrometheusRule")
(.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/ServiceMonitor")
}}
init: "-1"
{{- else }}
init: "{{ add1 .Values.init.version }}"
{{- end }}
```

View file

@ -0,0 +1,64 @@
+++
title = "Flux: Get-Started"
template = "docs/page.html"
sort_by = "weight"
weight = 2
[extra]
toc = true
+++
## Install FluxCD into a cluster
Here i install it with connection to codeberg:
* the path is just for the cluster
* the url a repo where fluxcd (in given path) install itself and monitor
* i just install my needed components (i skip notification-controller, i prefer prometheus and alerting)
```bash
flux bootstrap git --components source-controller,kustomize-controller,helm-controller --path=<path> --url ssh://git@codeberg.org/wrenix/<repo>.git
```
### Secure with verify
Afterwards we need to setup a verification with GPG, so that nobody else could commit any workload in your cluster.
That is because i select an public git hosting (here codeberg), i trust them but maybe it get compromised one time.
in your repository the flux cli has created an `<path>/flux-system/kustomization.yaml`, we will edit them.
```patch
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- gotk-components.yaml
- gotk-sync.yaml
+patches:
+ - target:
+ kind: GitRepository
+ name: flux-system
+ patch: |-
+ apiVersion: source.toolkit.fluxcd.io/v1
+ kind: GitRepository
+ metadata:
+ name: flux-system
+ spec:
+ verify: <1>
+ mode: HEAD
+ secretRef:
+ name: gpg-publickey
+
+generatorOptions:
+ disableNameSuffixHash: true <2>
+
+secretGenerator:
+ - name: gpg-publickey <3>
+ namespace: flux-system
+ files:
+ - gpg-publickey/wrenix.gpg <4>
```
* <1> add verify, that only HEAD git commit with valide gpg signature is used
* <2> on the next generate, do not add hash
* <3> generate kubernetes Secret with the name `gpg-publickey` which is used in the patched GitRepository, see <1>
* <4> Add list of valide gpg key files

View file

@ -0,0 +1 @@
../../../../helm-charts/README.md

View file

@ -0,0 +1,6 @@
+++
title = "Helm Charts"
template = "docs/section.html"
sort_by = "weight"
weight = 1
+++

View file

@ -0,0 +1 @@
../../../../helm-charts/gotosocial/README.md

View file

@ -0,0 +1 @@
../../../../helm-charts/home-assistant/README.md

View file

@ -1,3 +0,0 @@
+++
render = false
+++

View file

@ -1,6 +0,0 @@
+++
title = "Archive"
template = "archive.html"
path = "en/archive"
+++
# Archive

View file

@ -1,6 +0,0 @@
+++
title = "Archiv"
template = "archive.html"
path = "archive"
+++
# Archiv

1
public Submodule

@ -0,0 +1 @@
Subproject commit a960c859c1a2e5e8ddbb81265ea08498fac1c39d

14
symlink.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
find content/docs/helm-charts -iname "*.md" -not -path "content/docs/helm-charts/_index*.md" -delete
for p in "../helm-charts/"* ; do
if [ ! -d $p ] ||[ ! -f $p/Chart.yaml ] ; then
continue;
fi
name=$(basename "${p}")
echo "== helm-charts/${name}:"
if [ ! -f $p/README.md ]; then
echo "not yet in markdown"
else
ln -s "../../../${p}/README.md" "content/docs/helm-charts/${name}.md"
fi
done

View file

@ -1 +1 @@
themes/terminimal/templates themes/adidoks/templates

1
themes/adidoks Submodule

@ -0,0 +1 @@
Subproject commit 5c698271c460046034605b743a15196b12e32887

@ -1 +0,0 @@
Subproject commit 910e50b824c898fc9641ab7910ce4a984e97040f