Make the CV great again
Some checks failed
ci/woodpecker/push/build/1 Pipeline was successful
ci/woodpecker/push/build/2 Pipeline was successful
ci/woodpecker/push/spellcheck/2 Pipeline was successful
ci/woodpecker/push/spellcheck/1 Pipeline failed

Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
2026-02-10 18:11:28 +01:00
parent 5de2aec242
commit 7b488d4a66
6 changed files with 524 additions and 34 deletions

144
css/nord_dark.css Normal file
View File

@@ -0,0 +1,144 @@
/* ===============================
Nord Dark Compact Markdown
github-markdown-css compatible
=============================== */
.markdown-body {
background: #2E3440;
color: #D8DEE9;
font-family: "JetBrains Mono", "Fira Code", Menlo, Consolas, monospace;
font-size: 15px;
line-height: 1.55;
padding: 0.9rem;
}
/* Headings compact, no underline */
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
border: none;
margin-top: 1.2em;
margin-bottom: 0.4em;
font-weight: 700;
color: #ECEFF4;
}
.markdown-body h1 { font-size: 1.9em; }
.markdown-body h2 { font-size: 1.6em; }
.markdown-body h3 { font-size: 1.35em; }
.markdown-body h4 { font-size: 1.15em; }
.markdown-body h5 { font-size: 1.02em; }
.markdown-body h6 { font-size: 0.95em; color: #D8DEE9; }
/* Text */
.markdown-body p {
margin: 0.55em 0;
}
.markdown-body strong { color: #ECEFF4; }
.markdown-body em { color: #E5E9F0; }
/* Links */
.markdown-body a {
color: #88C0D0;
text-decoration: none;
border-bottom: 1px dotted #81A1C1;
}
.markdown-body a:hover {
color: #8FBCBB;
border-bottom-style: solid;
}
/* Inline + block code */
.markdown-body code {
background: #3B4252;
color: #EBCB8B;
padding: 0.1em 0.3em;
border-radius: 3px;
font-size: 0.92em;
}
.markdown-body pre {
background: #3B4252;
color: #ECEFF4;
padding: 0.75em 0.9em;
border-radius: 5px;
overflow-x: auto;
border-left: 3px solid #81A1C1;
margin: 0.7em 0;
}
.markdown-body pre code {
background: none;
padding: 0;
}
/* Blockquotes */
.markdown-body blockquote {
margin: 0.7em 0;
padding: 0.4em 0.8em;
border-left: 3px solid #8FBCBB;
background: #3B4252;
color: #D8DEE9;
font-style: italic;
}
/* Lists */
.markdown-body ul,
.markdown-body ol {
padding-left: 1.3em;
margin: 0.5em 0;
}
.markdown-body ul li::marker,
.markdown-body ol li::marker {
color: #88C0D0;
}
/* Horizontal rule */
.markdown-body hr {
border: none;
border-top: 1px dashed #4C566A;
margin: 1.2em 0;
}
/* Tables */
.markdown-body table {
border-collapse: collapse;
width: 100%;
margin: 0.7em 0;
font-size: 0.92em;
}
.markdown-body th,
.markdown-body td {
border: 1px solid #4C566A;
padding: 0.35em 0.6em;
}
.markdown-body th {
background: #3B4252;
color: #ECEFF4;
}
.markdown-body tr:nth-child(even) td {
background: #434C5E;
}
/* Images */
.markdown-body img {
max-width: 100%;
background: #3B4252;
border: 1px solid #4C566A;
padding: 0.2em;
border-radius: 3px;
}
/* Hide GitHub anchor icons */
.markdown-body a.anchor {
display: none;
}

144
css/nord_light.css Normal file
View File

@@ -0,0 +1,144 @@
/* ===============================
Nord Light Compact Markdown
github-markdown-css compatible
=============================== */
.markdown-body {
background: #ECEFF4;
color: #2E3440;
font-family: "JetBrains Mono", "Fira Code", Menlo, Consolas, monospace;
font-size: 15px;
line-height: 1.55;
padding: 0.9rem;
}
/* Headings compact, no underline */
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
border: none;
margin-top: 1.2em;
margin-bottom: 0.4em;
font-weight: 700;
color: #3B4252;
}
.markdown-body h1 { font-size: 1.9em; }
.markdown-body h2 { font-size: 1.6em; }
.markdown-body h3 { font-size: 1.35em; }
.markdown-body h4 { font-size: 1.15em; }
.markdown-body h5 { font-size: 1.02em; }
.markdown-body h6 { font-size: 0.95em; color: #4C566A; }
/* Text */
.markdown-body p {
margin: 0.55em 0;
}
.markdown-body strong { color: #2E3440; }
.markdown-body em { color: #4C566A; }
/* Links */
.markdown-body a {
color: #5E81AC;
text-decoration: none;
border-bottom: 1px dotted #81A1C1;
}
.markdown-body a:hover {
color: #81A1C1;
border-bottom-style: solid;
}
/* Inline + block code */
.markdown-body code {
background: #E5E9F0;
color: #BF616A;
padding: 0.1em 0.3em;
border-radius: 3px;
font-size: 0.92em;
}
.markdown-body pre {
background: #E5E9F0;
color: #2E3440;
padding: 0.75em 0.9em;
border-radius: 5px;
overflow-x: auto;
border-left: 3px solid #88C0D0;
margin: 0.7em 0;
}
.markdown-body pre code {
background: none;
padding: 0;
}
/* Blockquotes */
.markdown-body blockquote {
margin: 0.7em 0;
padding: 0.4em 0.8em;
border-left: 3px solid #81A1C1;
background: #E5E9F0;
color: #4C566A;
font-style: italic;
}
/* Lists */
.markdown-body ul,
.markdown-body ol {
padding-left: 1.3em;
margin: 0.5em 0;
}
.markdown-body ul li::marker,
.markdown-body ol li::marker {
color: #5E81AC;
}
/* Horizontal rule */
.markdown-body hr {
border: none;
border-top: 1px dashed #D8DEE9;
margin: 1.2em 0;
}
/* Tables */
.markdown-body table {
border-collapse: collapse;
width: 100%;
margin: 0.7em 0;
font-size: 0.92em;
}
.markdown-body th,
.markdown-body td {
border: 1px solid #D8DEE9;
padding: 0.35em 0.6em;
}
.markdown-body th {
background: #E5E9F0;
color: #3B4252;
}
.markdown-body tr:nth-child(even) td {
background: #ECEFF4;
}
/* Images */
.markdown-body img {
max-width: 100%;
background: #E5E9F0;
border: 1px solid #D8DEE9;
padding: 0.2em;
border-radius: 3px;
}
/* Hide GitHub anchor icons */
.markdown-body a.anchor {
display: none;
}

180
css/spacing.css Normal file
View File

@@ -0,0 +1,180 @@
.markdown-body {
font-family: "JetBrains Mono", "Fira Code", Menlo, Consolas, monospace;
font-size: 16px;
line-height: 1.65;
padding: 1.25rem;
}
/* -------------------------------
Headings (no underline)
------------------------------- */
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
border: none;
margin-top: 1.6em;
margin-bottom: 0.6em;
font-weight: 700;
}
.markdown-body h1 { font-size: 2em; }
.markdown-body h2 { font-size: 1.7em; }
.markdown-body h3 { font-size: 1.4em; }
.markdown-body h4 { font-size: 1.2em; }
.markdown-body h5 { font-size: 1.05em; }
.markdown-body h6 { font-size: 1em; }
/* -------------------------------
Text
------------------------------- */
.markdown-body p {
margin: 0.75em 0;
}
.markdown-body strong {
color: #ECEFF4;
}
.markdown-body em {
color: #E5E9F0;
}
/* -------------------------------
Links
------------------------------- */
.markdown-body a {
color: #88C0D0; /* nord8 */
text-decoration: none;
border-bottom: 1px dotted #81A1C1;
}
.markdown-body a:hover {
color: #8FBCBB; /* nord7 */
border-bottom-style: solid;
}
/* -------------------------------
Inline + Block Code
------------------------------- */
.markdown-body code {
background: #3B4252; /* nord1 */
color: #EBCB8B; /* nord13 */
padding: 0.15em 0.35em;
border-radius: 3px;
font-size: 0.95em;
}
.markdown-body pre {
background: #3B4252;
color: #ECEFF4;
padding: 1em;
border-radius: 6px;
overflow-x: auto;
border-left: 4px solid #81A1C1; /* nord9 */
}
.markdown-body pre code {
background: none;
padding: 0;
color: inherit;
}
/* -------------------------------
Blockquotes
------------------------------- */
.markdown-body blockquote {
margin: 1em 0;
padding: 0.6em 1em;
border-left: 4px solid #8FBCBB; /* nord7 */
background: #3B4252;
color: #D8DEE9;
font-style: italic;
}
/* -------------------------------
Lists
------------------------------- */
.markdown-body ul,
.markdown-body ol {
padding-left: 1.6em;
margin: 0.8em 0;
}
.markdown-body ul li::marker {
color: #88C0D0;
}
.markdown-body ol li::marker {
color: #88C0D0;
font-weight: bold;
}
/* -------------------------------
Horizontal Rule
------------------------------- */
.markdown-body hr {
border: none;
border-top: 1px dashed #4C566A; /* nord3 */
margin: 2em 0;
}
/* -------------------------------
Tables
------------------------------- */
.markdown-body table {
border-collapse: collapse;
width: 100%;
margin: 1em 0;
font-size: 0.95em;
}
.markdown-body th,
.markdown-body td {
border: 1px solid #4C566A;
padding: 0.5em 0.75em;
}
.markdown-body th {
background: #3B4252;
color: #ECEFF4;
}
.markdown-body tr:nth-child(even) td {
background: #434C5E; /* nord2 */
}
/* -------------------------------
Images
------------------------------- */
.markdown-body img {
max-width: 100%;
background: #3B4252;
border: 1px solid #4C566A;
padding: 0.25em;
border-radius: 4px;
}
/* -------------------------------
Anchor links (hide GitHub icons)
------------------------------- */
.markdown-body a.anchor {
display: none;
}
/* -------------------------------
Print / PDF safety
------------------------------- */
@media print {
.markdown-body {
background: #ffffff;
color: #000000;
}
a {
color: #000000;
border: none;
}
}

View File

@@ -1,10 +1,12 @@
---
pdf_options:
format: a4
margin: 20mm 10mm
margin: 0mm 0mm
printBackground: true
stylesheet:
- https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.5.1/github-markdown.css
- ./css/nord_dark.css
body_class: markdown-body
css: |-
.markdown-body {
@@ -13,17 +15,37 @@ css: |-
.page-break { page-break-after: always; }
---
## Nikolai Rodionov
# Nikolai Rodionov
## Senior DevOps Engineer
```
> Location: Hamburg, Germany
> Email: allanger@zohomail.com
> Phone: 4915223284008
> Github: https://github.com/allanger
```
### About me
I'm a DevOps engineer with almost 10 years of hands-on experience. I've been mostly focused on Kubernetes and CI/CD pipelines, but it doesn't mean that I would like to avoid tasks in other areas.
I'm a DevOps/Platform engineer with 9 years of hands-on experience mainly with **Kubernetes** and **CI/CD Pipelines**, but also in different areas like **Database Administration**, **Data Streaming**, **Developer Support**, **Server Maintenance**, etc.
### Tooling
- **Environments**: Linux - Containers - Kubernetes - Proxmox
- **Scripting/Coding**: Bash - Go - Rust - Perl - Python
- **Kubernetes**: Helm - Helmfile - Kustomize - Cluster API
- **Service Meshes**: Istio - Linkerd
- **Continuous Integration**: Gitlab-CI - Github Actions - Circle-CI - Woodpecker-CI - Drone-CI
- **Continuous Delivery**: ArgoCD - Flux - Tekton
- **Infrastructure as Code**: Ansible - Terraform - Opentofu
- **Cloud Providers**: Microsoft Azure - Google Cloud - AWS - Hetzner
- **Observability**: Prometheus - Mimir - Grafana - Loki - Elasticsearch - Kibana - FluentBit - Promtail - Fluentd - Grafana Alloy - Faro - Tempo
- **Databases**: PostgreSQL - MySQL - Percona MySQL - Redis - Mongo - Dragonfly
- **Storages**: Minio - Ceph - Longhorn
- **Secret Management**: Sops - Age - Helm Secrets - Hashicorp Vault
- **Others**: Kafka - RabbitMQ - Selenium - Selenoid - Kyverno - K3s - Kubeadm
A couple of interesting tasks, that I've been working on:

58
package-lock.json generated
View File

@@ -10,7 +10,7 @@
"license": "ISC",
"dependencies": {
"markdown-spellcheck": "^1.3.1",
"md-to-pdf": "^5.2.4"
"md-to-pdf": "^5.2.5"
}
},
"node_modules/@babel/code-frame": {
@@ -37,9 +37,9 @@
}
},
"node_modules/@puppeteer/browsers": {
"version": "2.11.2",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.2.tgz",
"integrity": "sha512-GBY0+2lI9fDrjgb5dFL9+enKXqyOPok9PXg/69NVkjW3bikbK9RQrNrI3qccQXmDNN7ln4j/yL89Qgvj/tfqrw==",
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.0.tgz",
"integrity": "sha512-Xuq42yxcQJ54ti8ZHNzF5snFvtpgXzNToJ1bXUGQRaiO8t+B6UM8sTUJfvV+AJnqtkJU/7hdy6nbKyA12aHtRw==",
"license": "Apache-2.0",
"dependencies": {
"debug": "^4.4.3",
@@ -84,9 +84,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "25.2.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz",
"integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==",
"version": "25.2.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz",
"integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==",
"license": "MIT",
"optional": true,
"dependencies": {
@@ -513,9 +513,9 @@
}
},
"node_modules/chromium-bidi": {
"version": "13.0.1",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.0.1.tgz",
"integrity": "sha512-c+RLxH0Vg2x2syS9wPw378oJgiJNXtYXUvnVAldUlt5uaHekn0CCU7gPksNgHjrH1qFhmjVXQj4esvuthuC7OQ==",
"version": "13.1.1",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.1.1.tgz",
"integrity": "sha512-zB9MpoPd7VJwjowQqiW3FKOvQwffFMjQ8Iejp5ZW+sJaKLRhZX1sTxzl3Zt22TDB4zP0OOqs8lRoY7eAW5geyQ==",
"license": "Apache-2.0",
"dependencies": {
"mitt": "^3.0.1",
@@ -852,9 +852,9 @@
}
},
"node_modules/devtools-protocol": {
"version": "0.0.1551306",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1551306.tgz",
"integrity": "sha512-CFx8QdSim8iIv+2ZcEOclBKTQY6BI1IEDa7Tm9YkwAXzEWFndTEzpTo5jAUhSnq24IC7xaDw0wvGcm96+Y3PEg==",
"version": "0.0.1566079",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz",
"integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==",
"license": "BSD-3-Clause"
},
"node_modules/dunder-proto": {
@@ -2644,17 +2644,17 @@
}
},
"node_modules/puppeteer": {
"version": "24.36.1",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.36.1.tgz",
"integrity": "sha512-uPiDUyf7gd7Il1KnqfNUtHqntL0w1LapEw5Zsuh8oCK8GsqdxySX1PzdIHKB2Dw273gWY4MW0zC5gy3Re9XlqQ==",
"version": "24.37.2",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.2.tgz",
"integrity": "sha512-FV1W/919ve0y0oiS/3Rp5XY4MUNUokpZOH/5M4MMDfrrvh6T9VbdKvAHrAFHBuCxvluDxhjra20W7Iz6HJUcIQ==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@puppeteer/browsers": "2.11.2",
"chromium-bidi": "13.0.1",
"@puppeteer/browsers": "2.12.0",
"chromium-bidi": "13.1.1",
"cosmiconfig": "^9.0.0",
"devtools-protocol": "0.0.1551306",
"puppeteer-core": "24.36.1",
"devtools-protocol": "0.0.1566079",
"puppeteer-core": "24.37.2",
"typed-query-selector": "^2.12.0"
},
"bin": {
@@ -2665,15 +2665,15 @@
}
},
"node_modules/puppeteer-core": {
"version": "24.36.1",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.36.1.tgz",
"integrity": "sha512-L7ykMWc3lQf3HS7ME3PSjp7wMIjJeW6+bKfH/RSTz5l6VUDGubnrC2BKj3UvM28Y5PMDFW0xniJOZHBZPpW1dQ==",
"version": "24.37.2",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.2.tgz",
"integrity": "sha512-nN8qwE3TGF2vA/+xemPxbesntTuqD9vCGOiZL2uh8HES3pPzLX20MyQjB42dH2rhQ3W3TljZ4ZaKZ0yX/abQuw==",
"license": "Apache-2.0",
"dependencies": {
"@puppeteer/browsers": "2.11.2",
"chromium-bidi": "13.0.1",
"@puppeteer/browsers": "2.12.0",
"chromium-bidi": "13.1.1",
"debug": "^4.4.3",
"devtools-protocol": "0.0.1551306",
"devtools-protocol": "0.0.1566079",
"typed-query-selector": "^2.12.0",
"webdriver-bidi-protocol": "0.4.0",
"ws": "^8.19.0"
@@ -2833,9 +2833,9 @@
}
},
"node_modules/semver": {
"version": "7.7.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"version": "7.7.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"

View File

@@ -15,6 +15,6 @@
"license": "ISC",
"dependencies": {
"markdown-spellcheck": "^1.3.1",
"md-to-pdf": "^5.2.4"
"md-to-pdf": "^5.2.5"
}
}