aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/docs.yaml72
-rw-r--r--.github/workflows/lint-docs.yaml17
-rw-r--r--.gitignore2
-rw-r--r--.gitmodules3
-rw-r--r--docs/.gitignore5
-rw-r--r--docs/.hugo_build.lock0
-rw-r--r--docs/404.html25
-rw-r--r--docs/Gemfile32
-rw-r--r--docs/Gemfile.lock88
-rw-r--r--docs/README.md10
-rw-r--r--docs/_config.yml54
-rw-r--r--docs/_config_dev.yml2
-rw-r--r--docs/_general/index.md7
-rw-r--r--docs/_queries/index.md7
-rw-r--r--docs/_runbooks/index.md7
-rw-r--r--docs/archetypes/default.md5
-rw-r--r--docs/config.toml16
-rw-r--r--docs/content/_index.md (renamed from docs/index.md)3
-rw-r--r--docs/content/docs/general/_index.md5
-rw-r--r--docs/content/docs/general/manual-deploys.md (renamed from docs/_general/manual-deploys.md)4
-rw-r--r--docs/content/docs/meeting_notes/2022-04-07.md (renamed from docs/meeting_notes/2022-archive/2022-04-07.md)3
-rw-r--r--docs/content/docs/meeting_notes/2022-09-18.md (renamed from docs/meeting_notes/2022-archive/2022-09-18.md)3
-rw-r--r--docs/content/docs/meeting_notes/2022-10-05.md (renamed from docs/meeting_notes/2022-archive/2022-10-05.md)3
-rw-r--r--docs/content/docs/meeting_notes/2022-10-19.md (renamed from docs/meeting_notes/2022-archive/2022-10-19.md)3
-rw-r--r--docs/content/docs/meeting_notes/2022-10-26.md (renamed from docs/meeting_notes/2022-archive/2022-10-26.md)3
-rw-r--r--docs/content/docs/meeting_notes/2022-11-02.md (renamed from docs/meeting_notes/2022-archive/2022-11-02.md)3
-rw-r--r--docs/content/docs/meeting_notes/2022-11-23.md (renamed from docs/meeting_notes/2022-archive/2022-11-23.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-02-08.md (renamed from docs/meeting_notes/2023-02-08.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-02-21.md (renamed from docs/meeting_notes/2023-02-21.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-02-28.md (renamed from docs/meeting_notes/2023-02-28.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-05-16.md (renamed from docs/meeting_notes/2023-05-16.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-07-11.md (renamed from docs/meeting_notes/2023-07-11.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-07-18.md (renamed from docs/meeting_notes/2023-07-18.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-07-25.md (renamed from docs/meeting_notes/2023-07-25.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-08-01.md (renamed from docs/meeting_notes/2023-08-01.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-08-08.md (renamed from docs/meeting_notes/2023-08-08.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-08-22.md (renamed from docs/meeting_notes/2023-08-22.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-08-29.md (renamed from docs/meeting_notes/2023-08-29.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-09-05.md (renamed from docs/meeting_notes/2023-09-05.md)3
-rw-r--r--docs/content/docs/meeting_notes/2023-09-12.md (renamed from docs/meeting_notes/2023-09-12.md)3
-rw-r--r--docs/content/docs/meeting_notes/_index.md (renamed from docs/meeting_notes/index.md)4
-rw-r--r--docs/content/docs/meeting_notes/_template.md (renamed from docs/meeting_notes/_template.md)5
-rw-r--r--docs/content/docs/onboarding/_index.md11
-rw-r--r--docs/content/docs/onboarding/access.md (renamed from docs/onboarding/access.md)2
-rw-r--r--docs/content/docs/onboarding/resources.md (renamed from docs/onboarding/resources.md)2
-rw-r--r--docs/content/docs/onboarding/rules.md (renamed from docs/onboarding/rules.md)4
-rw-r--r--docs/content/docs/onboarding/tools.md (renamed from docs/onboarding/tools.md)2
-rw-r--r--docs/content/docs/postmortems/2020-12-11-all-services-outage.md (renamed from docs/postmortems/2020-12-11-all-services-outage.md)5
-rw-r--r--docs/content/docs/postmortems/2020-12-11-postgres-conn-surge.md (renamed from docs/postmortems/2020-12-11-postgres-conn-surge.md)3
-rw-r--r--docs/content/docs/postmortems/2021-01-10-primary-kubernetes-node-outage.md (renamed from docs/postmortems/2021-01-10-primary-kubernetes-node-outage.md)3
-rw-r--r--docs/content/docs/postmortems/2021-01-12-site-cpu-ram-exhaustion.md (renamed from docs/postmortems/2021-01-12-site-cpu-ram-exhaustion.md)7
-rw-r--r--docs/content/docs/postmortems/2021-01-30-nodebalancer-fails-memory.md (renamed from docs/postmortems/2021-01-30-nodebalancer-fails-memory.md)11
-rw-r--r--docs/content/docs/postmortems/2021-07-11-cascading-node-failures.md (renamed from docs/postmortems/2021-07-11-cascading-node-failures.md)3
-rw-r--r--docs/content/docs/postmortems/_index.md (renamed from docs/postmortems/index.md)4
-rw-r--r--docs/content/docs/queries/_index.md3
-rw-r--r--docs/content/docs/queries/kubernetes.md (renamed from docs/_queries/kubernetes.md)5
-rw-r--r--docs/content/docs/queries/loki.md (renamed from docs/_queries/loki.md)1
-rw-r--r--docs/content/docs/queries/postgres.md (renamed from docs/_queries/postgres.md)1
-rw-r--r--docs/content/docs/runbooks/_index.md3
-rw-r--r--docs/content/docs/runbooks/postgresql-upgrade.md (renamed from docs/_runbooks/postgresql-upgrade.md)44
-rw-r--r--docs/favicon.icobin8694 -> 0 bytes
-rw-r--r--docs/meeting_notes/2022-archive/index.md10
m---------docs/themes/hugo-book0
63 files changed, 185 insertions, 372 deletions
diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml
new file mode 100644
index 0000000..b5e3c03
--- /dev/null
+++ b/.github/workflows/docs.yaml
@@ -0,0 +1,72 @@
+# Sample workflow for building and deploying a Hugo site to GitHub Pages
+name: Deploy Hugo site to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches:
+ - main
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+# Default to bash
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Install Hugo CLI
+ run: |
+ apt-get update -y && apt-get install -y hugo
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ fetch-depth: 0
+ - name: Setup Pages
+ id: pages
+ uses: actions/configure-pages@v4
+ - name: Build with Hugo
+ env:
+ # For maximum backward compatibility with Hugo modules
+ HUGO_ENVIRONMENT: production
+ HUGO_ENV: production
+ TZ: UTC
+ run: |
+ cd docs && hugo \
+ --gc \
+ --minify \
+ --baseURL "${{ steps.pages.outputs.base_url }}/"
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./docs/public
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/.github/workflows/lint-docs.yaml b/.github/workflows/lint-docs.yaml
new file mode 100644
index 0000000..cc7be0a
--- /dev/null
+++ b/.github/workflows/lint-docs.yaml
@@ -0,0 +1,17 @@
+name: Test documentation
+on:
+ pull_request:
+
+jobs:
+ lint-docs:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Install hugo
+ run: |
+ sudo apt-get update -y
+ sudo apt-get install -y hugo
+ - name: Run hugo
+ run: |
+ cd docs
+ hugo --panicOnWarning --renderToMemory
diff --git a/.gitignore b/.gitignore
index 20ca3ff..496db91 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
vault_passwords
+/docs/.hugo_build.lock
+/docs/public/
venv
.cache/
.vscode/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..16ad7a1
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "hugodocs/themes/hugo-book"]
+ path = docs/themes/hugo-book
+ url = https://github.com/alex-shpak/hugo-book
diff --git a/docs/.gitignore b/docs/.gitignore
deleted file mode 100644
index f40fbd8..0000000
--- a/docs/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-_site
-.sass-cache
-.jekyll-cache
-.jekyll-metadata
-vendor
diff --git a/docs/.hugo_build.lock b/docs/.hugo_build.lock
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/.hugo_build.lock
diff --git a/docs/404.html b/docs/404.html
deleted file mode 100644
index 086a5c9..0000000
--- a/docs/404.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-permalink: /404.html
-layout: default
----
-
-<style type="text/css" media="screen">
- .container {
- margin: 10px auto;
- max-width: 600px;
- text-align: center;
- }
- h1 {
- margin: 30px 0;
- font-size: 4em;
- line-height: 1;
- letter-spacing: -1px;
- }
-</style>
-
-<div class="container">
- <h1>404</h1>
-
- <p><strong>Page not found :(</strong></p>
- <p>The requested page could not be found.</p>
-</div>
diff --git a/docs/Gemfile b/docs/Gemfile
deleted file mode 100644
index 754098e..0000000
--- a/docs/Gemfile
+++ /dev/null
@@ -1,32 +0,0 @@
-source "https://rubygems.org"
-# Hello! This is where you manage which Jekyll version is used to run.
-# When you want to use a different version, change it below, save the
-# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
-#
-# bundle exec jekyll serve
-#
-# This will help ensure the proper Jekyll version is running.
-# Happy Jekylling!
-gem "jekyll", "~> 4.2.0"
-# This is the default theme for new Jekyll sites. You may change this to anything you like.
-gem "minima", "~> 2.5"
-# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
-# uncomment the line below. To upgrade, run `bundle update github-pages`.
-# gem "github-pages", group: :jekyll_plugins
-# If you have any plugins, put them here!
-group :jekyll_plugins do
- gem "jekyll-feed", "~> 0.12"
-end
-
-# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
-# and associated library.
-platforms :mingw, :x64_mingw, :mswin, :jruby do
- gem "tzinfo", "~> 1.2"
- gem "tzinfo-data"
-end
-
-# Performance-booster for watching directories on Windows
-gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
-
-gem "webrick", "~> 1.7"
-gem "just-the-docs"
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
deleted file mode 100644
index e992f7d..0000000
--- a/docs/Gemfile.lock
+++ /dev/null
@@ -1,88 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
- colorator (1.1.0)
- concurrent-ruby (1.1.9)
- em-websocket (0.5.2)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- eventmachine (1.2.7)
- ffi (1.15.4)
- forwardable-extended (2.6.0)
- http_parser.rb (0.6.0)
- i18n (1.8.10)
- concurrent-ruby (~> 1.0)
- jekyll (4.2.0)
- addressable (~> 2.4)
- colorator (~> 1.0)
- em-websocket (~> 0.5)
- i18n (~> 1.0)
- jekyll-sass-converter (~> 2.0)
- jekyll-watch (~> 2.0)
- kramdown (~> 2.3)
- kramdown-parser-gfm (~> 1.0)
- liquid (~> 4.0)
- mercenary (~> 0.4.0)
- pathutil (~> 0.9)
- rouge (~> 3.0)
- safe_yaml (~> 1.0)
- terminal-table (~> 2.0)
- jekyll-feed (0.15.1)
- jekyll (>= 3.7, < 5.0)
- jekyll-sass-converter (2.1.0)
- sassc (> 2.0.1, < 3.0)
- jekyll-seo-tag (2.7.1)
- jekyll (>= 3.8, < 5.0)
- jekyll-watch (2.2.1)
- listen (~> 3.0)
- just-the-docs (0.3.3)
- jekyll (>= 3.8.5)
- jekyll-seo-tag (~> 2.0)
- rake (>= 12.3.1, < 13.1.0)
- kramdown (2.3.1)
- rexml
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.0)
- liquid (4.0.3)
- listen (3.7.0)
- rb-fsevent (~> 0.10, >= 0.10.3)
- rb-inotify (~> 0.9, >= 0.9.10)
- mercenary (0.4.0)
- minima (2.5.1)
- jekyll (>= 3.5, < 5.0)
- jekyll-feed (~> 0.9)
- jekyll-seo-tag (~> 2.1)
- pathutil (0.16.2)
- forwardable-extended (~> 2.6)
- public_suffix (4.0.6)
- rake (13.0.6)
- rb-fsevent (0.11.0)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
- rexml (3.2.5)
- rouge (3.26.0)
- safe_yaml (1.0.5)
- sassc (2.4.0)
- ffi (~> 1.9)
- terminal-table (2.0.0)
- unicode-display_width (~> 1.1, >= 1.1.1)
- unicode-display_width (1.7.0)
- webrick (1.7.0)
-
-PLATFORMS
- x86_64-linux
-
-DEPENDENCIES
- jekyll (~> 4.2.0)
- jekyll-feed (~> 0.12)
- just-the-docs
- minima (~> 2.5)
- tzinfo (~> 1.2)
- tzinfo-data
- wdm (~> 0.1.1)
- webrick (~> 1.7)
-
-BUNDLED WITH
- 2.2.27
diff --git a/docs/README.md b/docs/README.md
index 362f76e..eaef124 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,5 +1,9 @@
-# DevOps Knowledgebase
+# DevOps documentation
-## Local Development
+This directory houses our DevOps documentation, written using
+[Hugo](https://gohugo.io).
-Run `bundle install` to install dependencies, then `bundle exec jekyll serve --config _config.yml,_config_dev.yml` to start locally.
+To test changes to it locally, run `hugo serve` and follow the link displayed
+on your Terminal. To generate all files, just run `hugo`.
+
+<!-- vim: set textwidth=80 sw=2 ts=2: -->
diff --git a/docs/_config.yml b/docs/_config.yml
deleted file mode 100644
index d3e7fa6..0000000
--- a/docs/_config.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-title: PyDis DevOps
-description: >-
- Knowledgebase for all things DevOps in Python Discord.
-baseurl: "/infra"
-url: "https://python-discord.github.io"
-twitter_username: PythonDiscord
-github_username: python-discord
-
-remote_theme: just-the-docs/just-the-docs
-plugins:
- - jekyll-feed
-
-# Compression tuning
-compress_html:
- ignore:
- envs: all
-
-# Code block preferences
-kramdown:
- syntax_highlighter_opts:
- block:
- line_numbers: true
-
-# Theme configuration
-aux_links:
- "Python Discord":
- "https://pythondiscord.com/"
-aux_links_new_tab: true
-
-color_scheme: dark
-
-# Document detection
-collections:
- runbooks:
- permalink: "/:collection/:path/"
- output: true
- queries:
- permalink: "/:collection/:path"
- output: true
- general:
- permalink: "/:collection/:path"
- output: true
-
-just_the_docs:
- collections:
- pages:
- name: Pages
- general:
- name: General
- runbooks:
- name: Runbooks
- queries:
- name: Queries
diff --git a/docs/_config_dev.yml b/docs/_config_dev.yml
deleted file mode 100644
index 20fb1af..0000000
--- a/docs/_config_dev.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-baseurl: ""
-url: "http://localhost:4000"
diff --git a/docs/_general/index.md b/docs/_general/index.md
deleted file mode 100644
index 1d84650..0000000
--- a/docs/_general/index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: General
-has_children: true
-layout: default
-nav_exclude: true
-search_exclude: true
----
diff --git a/docs/_queries/index.md b/docs/_queries/index.md
deleted file mode 100644
index 991f86d..0000000
--- a/docs/_queries/index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: default
-title: Queries
-has_children: true
-nav_exclude: true
-search_exclude: true
----
diff --git a/docs/_runbooks/index.md b/docs/_runbooks/index.md
deleted file mode 100644
index 357431f..0000000
--- a/docs/_runbooks/index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: default
-title: Runbooks
-has_children: true
-nav_exclude: true
-search_exclude: true
----
diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md
new file mode 100644
index 0000000..d7f68d3
--- /dev/null
+++ b/docs/archetypes/default.md
@@ -0,0 +1,5 @@
+---
+title: '{{ replace .Name "-" " " | title }}'
+date: "{{ .Date }}"
+draft: true
+---
diff --git a/docs/config.toml b/docs/config.toml
new file mode 100644
index 0000000..1c87b1c
--- /dev/null
+++ b/docs/config.toml
@@ -0,0 +1,16 @@
+baseURL = 'http://python-discord.github.io/infra/'
+languageCode = 'en-us'
+title = 'PyDis DevOps'
+theme = "hugo-book"
+
+# From the theme:
+# https://github.com/alex-shpak/hugo-book?tab=readme-ov-file#site-configuration
+enableGitInfo = true
+[params]
+ BookTheme = "dark"
+ BookRepo = "https://github.com/python-discord/infra"
+ BookServiceWorker = false # frontend nonsense
+
+[markup]
+ [markup.highlight]
+ lineNos = true
diff --git a/docs/index.md b/docs/content/_index.md
index a9c47cb..dbf457b 100644
--- a/docs/index.md
+++ b/docs/content/_index.md
@@ -1,8 +1,5 @@
---
-layout: default
title: Home
-nav_order: 1
-
---
# Python Discord DevOps
diff --git a/docs/content/docs/general/_index.md b/docs/content/docs/general/_index.md
new file mode 100644
index 0000000..acaa19d
--- /dev/null
+++ b/docs/content/docs/general/_index.md
@@ -0,0 +1,5 @@
+---
+title: General
+weight: -10
+bookSearchExclude: true
+---
diff --git a/docs/_general/manual-deploys.md b/docs/content/docs/general/manual-deploys.md
index 092647a..39e816e 100644
--- a/docs/_general/manual-deploys.md
+++ b/docs/content/docs/general/manual-deploys.md
@@ -9,11 +9,11 @@ When the DevOps team are not available, Administrators and Core Developers can r
This is handled through workflow dispatches on this repository. To get started, head to the [Actions](https://github.com/python-discord/kubernetes/actions) tab of this repository and select `Manual Redeploy` in the sidebar, alternatively navigate [here](https://github.com/python-discord/kubernetes/actions/workflows/manual_redeploy.yml).
-<img width="308" alt="image" src="https://user-images.githubusercontent.com/20439493/116442084-00d5f400-a84a-11eb-8e8a-e9e6bcc327dd.png">
+![](https://user-images.githubusercontent.com/20439493/116442084-00d5f400-a84a-11eb-8e8a-e9e6bcc327dd.png)
Click `Run workflow` on the right hand side and enter the service name that needs redeploying, keep the branch as `main`:
-<img width="947" alt="image" src="https://user-images.githubusercontent.com/20439493/116442202-22cf7680-a84a-11eb-8cce-a3e715a1bf68.png">
+![](https://user-images.githubusercontent.com/20439493/116442202-22cf7680-a84a-11eb-8cce-a3e715a1bf68.png)
Click `Run` and refresh the page, you'll see a new in progress Action which you can track. Once the deployment completes notifications will be sent to the `#dev-ops` channel on Discord.
diff --git a/docs/meeting_notes/2022-archive/2022-04-07.md b/docs/content/docs/meeting_notes/2022-04-07.md
index 07233af..fb54214 100644
--- a/docs/meeting_notes/2022-archive/2022-04-07.md
+++ b/docs/content/docs/meeting_notes/2022-04-07.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2022-04-07: Devops Meeting"
-parent: Meeting notes - 2022 archive
-nav_order: 1
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2022-archive/2022-09-18.md b/docs/content/docs/meeting_notes/2022-09-18.md
index b6426a9..9fa4176 100644
--- a/docs/meeting_notes/2022-archive/2022-09-18.md
+++ b/docs/content/docs/meeting_notes/2022-09-18.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2022-09-18: Devops Meeting"
-parent: Meeting notes - 2022 archive
-nav_order: 2
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2022-archive/2022-10-05.md b/docs/content/docs/meeting_notes/2022-10-05.md
index efe68da..ee1ee4f 100644
--- a/docs/meeting_notes/2022-archive/2022-10-05.md
+++ b/docs/content/docs/meeting_notes/2022-10-05.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2022-10-05: Devops Meeting"
-parent: Meeting notes - 2022 archive
-nav_order: 3
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2022-archive/2022-10-19.md b/docs/content/docs/meeting_notes/2022-10-19.md
index f572446..37102bb 100644
--- a/docs/meeting_notes/2022-archive/2022-10-19.md
+++ b/docs/content/docs/meeting_notes/2022-10-19.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2022-10-19: Devops Meeting"
-parent: Meeting notes - 2022 archive
-nav_order: 4
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2022-archive/2022-10-26.md b/docs/content/docs/meeting_notes/2022-10-26.md
index 8bea3b6..636f3da 100644
--- a/docs/meeting_notes/2022-archive/2022-10-26.md
+++ b/docs/content/docs/meeting_notes/2022-10-26.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2022-10-26: Devops Meeting"
-parent: Meeting notes - 2022 archive
-nav_order: 5
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2022-archive/2022-11-02.md b/docs/content/docs/meeting_notes/2022-11-02.md
index a444f86..a36e2f9 100644
--- a/docs/meeting_notes/2022-archive/2022-11-02.md
+++ b/docs/content/docs/meeting_notes/2022-11-02.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2022-11-02: Devops Meeting"
-parent: Meeting notes - 2022 archive
-nav_order: 6
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2022-archive/2022-11-23.md b/docs/content/docs/meeting_notes/2022-11-23.md
index 565154f..459c595 100644
--- a/docs/meeting_notes/2022-archive/2022-11-23.md
+++ b/docs/content/docs/meeting_notes/2022-11-23.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2022-11-23: Devops Meeting"
-parent: Meeting notes - 2022 archive
-nav_order: 7
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-02-08.md b/docs/content/docs/meeting_notes/2023-02-08.md
index 89842c4..6ce23f6 100644
--- a/docs/meeting_notes/2023-02-08.md
+++ b/docs/content/docs/meeting_notes/2023-02-08.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-02-08: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-02-21.md b/docs/content/docs/meeting_notes/2023-02-21.md
index d0fc3e6..6e4079e 100644
--- a/docs/meeting_notes/2023-02-21.md
+++ b/docs/content/docs/meeting_notes/2023-02-21.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-02-21: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-02-28.md b/docs/content/docs/meeting_notes/2023-02-28.md
index cda2381..9d6f9a8 100644
--- a/docs/meeting_notes/2023-02-28.md
+++ b/docs/content/docs/meeting_notes/2023-02-28.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-02-28: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-05-16.md b/docs/content/docs/meeting_notes/2023-05-16.md
index aa651ec..7f633a5 100644
--- a/docs/meeting_notes/2023-05-16.md
+++ b/docs/content/docs/meeting_notes/2023-05-16.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-05-16: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-07-11.md b/docs/content/docs/meeting_notes/2023-07-11.md
index bd9b198..9467033 100644
--- a/docs/meeting_notes/2023-07-11.md
+++ b/docs/content/docs/meeting_notes/2023-07-11.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-07-11: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-07-18.md b/docs/content/docs/meeting_notes/2023-07-18.md
index a59430d..b529bf8 100644
--- a/docs/meeting_notes/2023-07-18.md
+++ b/docs/content/docs/meeting_notes/2023-07-18.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-07-18: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-07-25.md b/docs/content/docs/meeting_notes/2023-07-25.md
index ae5ecdc..c8214b0 100644
--- a/docs/meeting_notes/2023-07-25.md
+++ b/docs/content/docs/meeting_notes/2023-07-25.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-07-25: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-08-01.md b/docs/content/docs/meeting_notes/2023-08-01.md
index 30311f1..1e6c71d 100644
--- a/docs/meeting_notes/2023-08-01.md
+++ b/docs/content/docs/meeting_notes/2023-08-01.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-08-01: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-08-08.md b/docs/content/docs/meeting_notes/2023-08-08.md
index 7cc668e..9a7f0ec 100644
--- a/docs/meeting_notes/2023-08-08.md
+++ b/docs/content/docs/meeting_notes/2023-08-08.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-08-08: Devops Meeting"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-08-22.md b/docs/content/docs/meeting_notes/2023-08-22.md
index 2c57846..cf23dc3 100644
--- a/docs/meeting_notes/2023-08-22.md
+++ b/docs/content/docs/meeting_notes/2023-08-22.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-08-22: Devops meeting notes"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-08-29.md b/docs/content/docs/meeting_notes/2023-08-29.md
index 622a77a..78b4c2a 100644
--- a/docs/meeting_notes/2023-08-29.md
+++ b/docs/content/docs/meeting_notes/2023-08-29.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-08-29: Devops meeting notes"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-09-05.md b/docs/content/docs/meeting_notes/2023-09-05.md
index 965e232..8fde824 100644
--- a/docs/meeting_notes/2023-09-05.md
+++ b/docs/content/docs/meeting_notes/2023-09-05.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-09-05: Devops meeting notes"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/2023-09-12.md b/docs/content/docs/meeting_notes/2023-09-12.md
index c7d461f..8f57ea9 100644
--- a/docs/meeting_notes/2023-09-12.md
+++ b/docs/content/docs/meeting_notes/2023-09-12.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2023-09-12: Devops meeting template"
-parent: Meeting notes
-nav_order:
---
# DevOps Meeting Notes
diff --git a/docs/meeting_notes/index.md b/docs/content/docs/meeting_notes/_index.md
index bc60c50..4f4dab7 100644
--- a/docs/meeting_notes/index.md
+++ b/docs/content/docs/meeting_notes/_index.md
@@ -1,8 +1,6 @@
---
title: Meeting notes
-layout: default
-has_children: true
-has_toc: false
+bookCollapseSection: true
---
# Meeting notes
diff --git a/docs/meeting_notes/_template.md b/docs/content/docs/meeting_notes/_template.md
index c579435..64d55e4 100644
--- a/docs/meeting_notes/_template.md
+++ b/docs/content/docs/meeting_notes/_template.md
@@ -1,8 +1,5 @@
---
-layout: default
-title: "2022-04-07: Devops meeting template"
-parent: Meeting notes
-nav_order:
+title: "YYYY-MM-DD: Devops meeting template"
---
# DevOps Meeting Notes
diff --git a/docs/content/docs/onboarding/_index.md b/docs/content/docs/onboarding/_index.md
new file mode 100644
index 0000000..d12acdd
--- /dev/null
+++ b/docs/content/docs/onboarding/_index.md
@@ -0,0 +1,11 @@
+---
+title: Onboarding
+---
+
+# Onboarding
+
+This section documents who manages which access to our DevOps resources, and
+how access is managed.
+
+
+<!-- vim: set textwidth=80 sw=2 ts=2: -->
diff --git a/docs/onboarding/access.md b/docs/content/docs/onboarding/access.md
index 9136a0d..fc56396 100644
--- a/docs/onboarding/access.md
+++ b/docs/content/docs/onboarding/access.md
@@ -5,6 +5,8 @@ description: |
Who has access to what.
---
+# Access table
+
| **Resource** | **Description** | **Keyholders** |
|:------------:|:---------------:|:--------------:|
diff --git a/docs/onboarding/resources.md b/docs/content/docs/onboarding/resources.md
index 498e903..91dd76e 100644
--- a/docs/onboarding/resources.md
+++ b/docs/content/docs/onboarding/resources.md
@@ -5,6 +5,8 @@ description: |
Important reference documents for the team.
---
+# Resources
+
The following is a collection of important reference documents for the DevOps
team.
diff --git a/docs/onboarding/rules.md b/docs/content/docs/onboarding/rules.md
index 2296c18..0389818 100644
--- a/docs/onboarding/rules.md
+++ b/docs/content/docs/onboarding/rules.md
@@ -5,6 +5,10 @@ description: |
The rules any DevOps team member must follow.
---
+# Rules
+
+The rules any DevOps team member must follow.
+
1. LMAO - **L**ogging, **M**onitoring, **A**lerting, **O**bservability
2. Modmail is the greatest piece of software ever written
3. Modmail needs at least 5 minutes to gather all its greatness at startup
diff --git a/docs/onboarding/tools.md b/docs/content/docs/onboarding/tools.md
index 4fb4e4c..d61cbd4 100644
--- a/docs/onboarding/tools.md
+++ b/docs/content/docs/onboarding/tools.md
@@ -5,6 +5,8 @@ description: |
The tools that DevOps uses to run their shop.
---
+# Tools
+
We use a few tools to manage, monitor, and interact with our infrastructure.
Some of these tools are not unique to the DevOps team, and may be shared by
other teams.
diff --git a/docs/postmortems/2020-12-11-all-services-outage.md b/docs/content/docs/postmortems/2020-12-11-all-services-outage.md
index 35c6d70..d581f0c 100644
--- a/docs/postmortems/2020-12-11-all-services-outage.md
+++ b/docs/content/docs/postmortems/2020-12-11-all-services-outage.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2020-12-11: All services outage"
-parent: Postmortems
-nav_order: 2
---
# 2020-12-11: All services outage
@@ -47,7 +44,7 @@ We noticed our node was entirely unresponsive and within minutes a restart had b
The node came back and we saw a number of core services offline (e.g. Calico, CoreDNS, Linode CSI).
-**Obstacle: no recent database back-up available**{: .text-red-200 }
+**Obstacle: no recent database back-up available**
## 🙆🏽‍♀️ Recovery
diff --git a/docs/postmortems/2020-12-11-postgres-conn-surge.md b/docs/content/docs/postmortems/2020-12-11-postgres-conn-surge.md
index 3e5360c..505ed84 100644
--- a/docs/postmortems/2020-12-11-postgres-conn-surge.md
+++ b/docs/content/docs/postmortems/2020-12-11-postgres-conn-surge.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2020-12-11: Postgres connection surge"
-parent: Postmortems
-nav_order: 1
---
# 2020-12-11: Postgres connection surge
diff --git a/docs/postmortems/2021-01-10-primary-kubernetes-node-outage.md b/docs/content/docs/postmortems/2021-01-10-primary-kubernetes-node-outage.md
index a8fb815..c6775d2 100644
--- a/docs/postmortems/2021-01-10-primary-kubernetes-node-outage.md
+++ b/docs/content/docs/postmortems/2021-01-10-primary-kubernetes-node-outage.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2021-01-10: Primary Kubernetes node outage"
-parent: Postmortems
-nav_order: 3
---
# 2021-01-10: Primary Kubernetes node outage
diff --git a/docs/postmortems/2021-01-12-site-cpu-ram-exhaustion.md b/docs/content/docs/postmortems/2021-01-12-site-cpu-ram-exhaustion.md
index 6935f02..e5f87a8 100644
--- a/docs/postmortems/2021-01-12-site-cpu-ram-exhaustion.md
+++ b/docs/content/docs/postmortems/2021-01-12-site-cpu-ram-exhaustion.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2021-01-12: Django site CPU/RAM exhaustion outage"
-parent: Postmortems
-nav_order: 4
---
# 2021-01-12: Django site CPU/RAM exhaustion outage
@@ -23,7 +20,7 @@ This caused a CPU & RAM spike on our Django site, which in turn triggered an OOM
Django site did not have any tools in place to batch the requests so was trying to process all 80k user updates in a single query, something that PostgreSQL probably could handle, but not the Django ORM. During the incident site jumped from it's average RAM usage of 300-400MB to **1.5GB.**
-![{{site.baseurl}}/static/images/2021-01-12/site_resource_abnormal.png]({{site.baseurl}}/static/images/2021-01-12/site_resource_abnormal.png)
+![](../../../images/2021-01-12/site_resource_abnormal.png)
RAM and CPU usage of site throughout the incident. The period just before 3:40 where no statistics were reported is the actual outage period where the Kubernetes node had some networking errors.
@@ -74,7 +71,7 @@ for chunk in chunks(diff.updated, 1000):
Resource limits were also put into place on site to prevent RAM and CPU spikes, and throttle the CPU usage in these situations. This can be seen in the below graph:
-![{{site.baseurl}}/static/images/2021-01-12/site_cpu_throttle.png]({{site.baseurl}}/static/images/2021-01-12/site_cpu_throttle.png)
+![](../../../images/2021-01-12/site_cpu_throttle.png)
CPU throttling is where a container has hit the limits and we need to reel it in. Ideally this value stays as closes to 0 as possible, however as you can see site hit this twice (during the periods where it was trying to sync 80k users at once)
diff --git a/docs/postmortems/2021-01-30-nodebalancer-fails-memory.md b/docs/content/docs/postmortems/2021-01-30-nodebalancer-fails-memory.md
index dd2d624..a31fe74 100644
--- a/docs/postmortems/2021-01-30-nodebalancer-fails-memory.md
+++ b/docs/content/docs/postmortems/2021-01-30-nodebalancer-fails-memory.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2021-01-30: NodeBalancer networking faults due to memory pressure"
-parent: Postmortems
-nav_order: 5
---
# 2021-01-30: NodeBalancer networking faults due to memory pressure
@@ -21,15 +18,15 @@ At 14:30 we started receiving alerts that services were becoming unreachable. We
Upon checking Linode our NodeBalancer, the service which balances traffic between our Kubernetes nodes was reporting the backends (the services it balances to) as down. It reported all 4 as down (two for port 80 + two for port 443). This status was fluctuating between up and down, meaning traffic was not reaching our cluster correctly. Scaleios correctly noted:
-![{{site.baseurl}}/static/images/2021-01-30/scaleios.png]({{site.baseurl}}/static/images/2021-01-30/scaleios.png)
+![](../../../images/2021-01-30/scaleios.png)
The config seems to have been set incorrectly due to memory and CPU pressure on one of our nodes. Here is the memory throughout the incident:
-![{{site.baseurl}}/static/images/2021-01-30/memory_charts.png]({{site.baseurl}}/static/images/2021-01-30/memory_charts.png)
+![](../../../images/2021-01-30/memory_charts.png)
Here is the display from Linode:
-![{{site.baseurl}}/static/images/2021-01-30/linode_loadbalancers.png]({{site.baseurl}}/static/images/2021-01-30/linode_loadbalancers.png)
+![](../../../images/2021-01-30/linode_loadbalancers.png)
## 🥏 Impact
@@ -61,7 +58,7 @@ The incident resolved itself upstream at Linode, we've opened a ticket with Lino
We've set up alerts for when Prometheus services stop responding since this seems to be a fairly tell-tale symptom of networking problems, this was the Prometheus status graph throughout the incident:
-![{{site.baseurl}}/static/images/2021-01-30/prometheus_status.png]({{site.baseurl}}/static/images/2021-01-30/prometheus_status.png)
+![](../../../images/2021-01-30/prometheus_status.png)
## 🔎 Five Why's
diff --git a/docs/postmortems/2021-07-11-cascading-node-failures.md b/docs/content/docs/postmortems/2021-07-11-cascading-node-failures.md
index adf0d57..831bfc2 100644
--- a/docs/postmortems/2021-07-11-cascading-node-failures.md
+++ b/docs/content/docs/postmortems/2021-07-11-cascading-node-failures.md
@@ -1,8 +1,5 @@
---
-layout: default
title: "2021-07-11: Cascading node failures and ensuing volume problems"
-parent: Postmortems
-nav_order: 6
---
# 2021-07-11: Cascading node failures and ensuing volume problems
diff --git a/docs/postmortems/index.md b/docs/content/docs/postmortems/_index.md
index 5e8b509..92cb5b0 100644
--- a/docs/postmortems/index.md
+++ b/docs/content/docs/postmortems/_index.md
@@ -1,8 +1,6 @@
---
title: Postmortems
-layout: default
-has_children: true
-has_toc: false
+bookCollapseSection: true
---
# Postmortems
diff --git a/docs/content/docs/queries/_index.md b/docs/content/docs/queries/_index.md
new file mode 100644
index 0000000..c556021
--- /dev/null
+++ b/docs/content/docs/queries/_index.md
@@ -0,0 +1,3 @@
+---
+title: Queries
+---
diff --git a/docs/_queries/kubernetes.md b/docs/content/docs/queries/kubernetes.md
index e7600d3..0948d7e 100644
--- a/docs/_queries/kubernetes.md
+++ b/docs/content/docs/queries/kubernetes.md
@@ -1,5 +1,4 @@
---
-layout: page
title: Kubernetes
---
@@ -21,8 +20,8 @@ $ kubectl top nodes --sort-by='memory'
## Kubernetes cheat sheet
-[Open Kubernetes cheat sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/){: .btn .btn-purple }{:target="_blank"}
+[Open Kubernetes cheat sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/)
## Lens IDE
-[OpenLens](https://github.com/MuhammedKalkan/OpenLens){: .btn .btn-purple }{:target="_blank"}
+[OpenLens](https://github.com/MuhammedKalkan/OpenLens)
diff --git a/docs/_queries/loki.md b/docs/content/docs/queries/loki.md
index 5dee3c3..921bfd1 100644
--- a/docs/_queries/loki.md
+++ b/docs/content/docs/queries/loki.md
@@ -1,5 +1,4 @@
---
-layout: default
title: Loki
---
diff --git a/docs/_queries/postgres.md b/docs/content/docs/queries/postgres.md
index e3deb82..522c5e0 100644
--- a/docs/_queries/postgres.md
+++ b/docs/content/docs/queries/postgres.md
@@ -1,5 +1,4 @@
---
-layout: default
title: PostgreSQL
---
diff --git a/docs/content/docs/runbooks/_index.md b/docs/content/docs/runbooks/_index.md
new file mode 100644
index 0000000..1feb61a
--- /dev/null
+++ b/docs/content/docs/runbooks/_index.md
@@ -0,0 +1,3 @@
+---
+title: Runbooks
+---
diff --git a/docs/_runbooks/postgresql-upgrade.md b/docs/content/docs/runbooks/postgresql-upgrade.md
index 7d85de2..fe9422b 100644
--- a/docs/_runbooks/postgresql-upgrade.md
+++ b/docs/content/docs/runbooks/postgresql-upgrade.md
@@ -1,24 +1,14 @@
---
title: PostgreSQL Upgrade
-layout: page
---
# Upgrading PostgreSQL
-<details open markdown="block">
- <summary>
- Table of contents
- </summary>
- {: .text-delta }
-1. TOC
-{:toc}
-</details>
-
-# Step 1 - Enable maintenance mode
+## Step 1 - Enable maintenance mode
Add a worker route for `pythondiscord.com/*` to forward to the `maintenance` Cloudflare worker.
-# Step 2 - Scale down all services that use PostgreSQL
+## Step 2 - Scale down all services that use PostgreSQL
Notably site, metricity, bitwarden and the like should be scaled down.
@@ -28,7 +18,7 @@ Services that are read only such as Grafana (but NOT Metabase, Metabase uses Pos
$ kubectl scale deploy --replicas 0 site metricity metabase bitwarden ...
```
-# Step 3 - Take a database dump and gzip
+## Step 3 - Take a database dump and gzip
Using `pg_dumpall`, dump the contents of all databases to a `.sql` file.
@@ -43,13 +33,13 @@ $ sha512sum backup.sql
a3337bfc65a072fd93124233ac1cefcdfbe8a708e5c1d08adaca2cf8c7cbe9ae4853ffab8c5cfbe943182355eaa701012111a420b29cc4f74d1e87f9df3af459 backup.sql
```
-# Step 4 - Move database dump locally
+## Step 4 - Move database dump locally
Use `kubectl cp` to move the `backup.sql.gz` file from the remote pod to your local machine.
Validate the integrity of the received file.
-# Step 5 - Attempt local import to new PostgreSQL version
+## Step 5 - Attempt local import to new PostgreSQL version
Install the new version of PostgreSQL locally and import the data. Make sure you are operating on a **completely empty database server.**
@@ -59,7 +49,7 @@ $ gzcat backup.sql.gz | psql -U joe
You can use any PostgreSQL superuser for the import. Ensure that no errors other than those mentioned below occur, you may need to attempt multiple times to fix errors listed below.
-## Handle import errors
+### Handle import errors
Monitor the output of `psql` to check that no errors appear.
@@ -71,46 +61,46 @@ $ sed -i '' "s/en_US.utf8/en_GB.UTF-8/g" backup.sql
Ensure that you **RESET THESE CHANGES** before attempting an import on the remote, if they come from the PostgreSQL Docker image they will need the same locale as the export.
-# Step 7 - Spin down PostgreSQL
+## Step 7 - Spin down PostgreSQL
Spin down PostgreSQL to 0 replicas.
-# Step 8 - Take volume backup at Linode
+## Step 8 - Take volume backup at Linode
Backup the volume at Linode through a clone in the Linode UI, name it something obvious.
-# Step 9 - Remove the Linode persistent volume
+## Step 9 - Remove the Linode persistent volume
Delete the volume specified in the `volume.yaml` file in the `postgresql` directory, you must delete the `pvc` first followed by the `pv`, you can find the relevant disks through `kubectl get pv/pvc`
-# Step 10 - Create a new volume by re-applying the `volume.yaml` file
+## Step 10 - Create a new volume by re-applying the `volume.yaml` file
Apply the `volume.yaml` so a new, empty, volume is created.
-# Step 11 - Bump the PostgreSQL version in the `deployment.yaml` file
+## Step 11 - Bump the PostgreSQL version in the `deployment.yaml` file
Update the Docker image used in the deployment manifest.
-# Step 12 - Apply the deployment
+## Step 12 - Apply the deployment
Run `kubectl apply -f postgresql/deployment.yaml` to start the new database server.
-# Step 13 - Copy the data across
+## Step 13 - Copy the data across
After the pod has initialised use `kubectl cp` to copy the gzipped backup to the new Postgres pod.
-# Step 14 - Extract and import the new data
+## Step 14 - Extract and import the new data
```bash
$ gunzip backup.sql.gz
$ psql -U pythondiscord -f backup.sql
```
-# Step 15 - Validate data import complete
+## Step 15 - Validate data import complete
Ensure that all logs are successful, you may get duplicate errors for the `pythondiscord` user and database, these are safe to ignore.
-# Step 16 - Scale up services
+## Step 16 - Scale up services
Restart the database server
@@ -118,6 +108,6 @@ Restart the database server
$ kubectl scale deploy --replicas 1 metricity bitwarden metabase
```
-# Step 17 - Validate all services interact correctly
+## Step 17 - Validate all services interact correctly
Validate that all services reconnect successfully and start exchanging data, ensure that no abnormal logs are outputted and performance remains as expected.
diff --git a/docs/favicon.ico b/docs/favicon.ico
deleted file mode 100644
index 45ef3cf..0000000
--- a/docs/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/docs/meeting_notes/2022-archive/index.md b/docs/meeting_notes/2022-archive/index.md
deleted file mode 100644
index ddac66f..0000000
--- a/docs/meeting_notes/2022-archive/index.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Meeting notes - 2022 archive
-layout: default
-has_children: true
-has_toc: false
----
-
-# Meeting notes
-
-Minutes for Devops meetings in 2022.
diff --git a/docs/themes/hugo-book b/docs/themes/hugo-book
new file mode 160000
+Subproject f8a0fc4e246c61cea8159d2d2955f488e7d1384