open to DevOps roles · remote onlyоткрыт к предложениям · только удалённо

Infrastructure that runs itselfИнфраструктура, которая работает сама

Klimentiy Matveev, DevOps engineer. I build CI/CD, run Kubernetes and keep infrastructure in code, so releases ship without manual steps and the team hears about failures before users do.

Климентий Матвеев, DevOps-инженер. Настраиваю CI/CD, Kubernetes и мониторинг, описываю инфраструктуру кодом. Релизы выходят без ручной работы, а о сбоях команда узнаёт раньше пользователей.

zsh · 80×24

      
scroll
01 / aboutобо мне

From network cables to Helm chartsОт сетевого кабеля до Helm-чарта

I started in DevOps in my final year at university, as a contract engineer at Nixys, a DevOps outsourcing company: CI/CD, Kubernetes, Terraform, monitoring. Since 2024 I run the infrastructure of a network of gaming venues at LANGAME: servers, ZFS storage, MikroTik and Zabbix. That is why I am equally at home in tcpdump and in Grafana.

В DevOps пришёл на последнем курсе: контрактным инженером в Nixys, компании DevOps-аутсорсинга. CI/CD, Kubernetes, Terraform, мониторинг. С 2024 веду инфраструктуру сети компьютерных клубов в LANGAME: серверы, хранилища на ZFS, MikroTik и Zabbix. Поэтому одинаково спокойно смотрю и в tcpdump, и в Grafana.

Degree in system administration from RANEPA, with internships at SberTech and Alfa-Bank during my studies. English C1: Skillfactory courses and private tutoring; I read docs and issue trackers without a translator.

Профильное образование: РАНХиГС, «Системное администрирование», во время учёбы практика и стажировки в СберТехе и Альфа-Банке. Английский C1: курсы Skillfactory и занятия с репетитором, читаю документацию и issue-трекеры без переводчика.

experienceопыт
4 years4 года2 of them in DevOpsиз них 2 в DevOps
certifiedсертификаты
CKA · TF+ MTCNA
englishанглийский
C1courses + tutoringкурсы + репетитор
formatформат
Remoteremote only, UTC+3только удалённо, МСК

Certified and educatedСертификаты и образование

2026
CKA

Certified Kubernetes Administrator · Linux Foundation

2026
Terraform

HashiCorp Certified: Terraform Associate

2026
MTCNA

MikroTik Certified Network Associate · Softline

C1
English

Skillfactory courses and private tutoring, Advanced level

Курсы Skillfactory и занятия с репетитором, уровень Advanced

2023
RANEPAРАНХиГС

Bachelor's in applied informatics, system administration

Бакалавр, прикладная информатика, «Системное администрирование»

What I can ownЧто могу забрать на себя

  • Build CI/CD from scratch or clean up an existing one
  • Move services from docker-compose to Kubernetes without downtime
  • Describe the cloud in Terraform and retire hand-made resources
  • Set up monitoring and alerts that people read, not mute
  • Networks and hardware: VLAN, VPN, MikroTik, ZFS storage
  • Построить CI/CD с нуля или навести порядок в существующем
  • Перевезти сервисы с docker-compose на Kubernetes без простоя
  • Описать облако в Terraform и закрыть «ручные» ресурсы
  • Настроить мониторинг и алерты, которые читают, а не мьютят
  • Сети и железо: VLAN, VPN, MikroTik, хранилища на ZFS

How I workКак я работаю

  • Anything done twice becomes a script or a pipeline
  • Infrastructure changes go through git and review only
  • After an incident I write it up and fix the cause, not the symptom
  • I document so a colleague can manage without me
  • Async and to the point: half of remote work is writing
  • Всё, что делается дважды, превращается в скрипт или пайплайн
  • Изменения инфраструктуры только через git и ревью
  • После инцидента пишу разбор и закрываю причину, а не симптом
  • Документирую так, чтобы коллега справился без меня
  • Пишу асинхронно и по делу: в удалёнке это половина работы
02 / approachподход

How code reaches productionКак код попадает в прод

Every commit takes the same path, with no manual steps except the button that ships to prod. Run it, click any stage, or try to break it.

Каждый коммит проходит один и тот же путь, без ручных шагов, кроме кнопки «в прод». Запусти его, открой любой этап или попробуй сломать.

a3f9c1e feat: rate limit on /api idle 00:00

          
03 / experienceопыт

Where I did itГде я это делал

From a system administration degree through bank incident work to infrastructure and DevOps. Click a bar to open the role.

От диплома по системному администрированию через разбор инцидентов в банке к инфраструктуре и DevOps. Нажми на полосу, чтобы открыть роль.

04 / selected workпроекты

Things you can open and runЧто можно открыть и запустить

Everything is public on GitHub, with a README, green CI and notes on why it is built this way.

Всё открыто на GitHub: README, зелёный CI и объяснение, почему сделано именно так.

infra-lab

# platform / reference repositoryплатформа / эталонный репозиторий

One small service taken all the way to production in a single repository: container, pipeline, Kubernetes chart, cloud infrastructure, server baseline and monitoring.

Один небольшой сервис, доведённый до прода в одном репозитории: контейнер, пайплайн, Helm-чарт, облачная инфраструктура, базовая настройка серверов и мониторинг.

  • Tests run inside the Docker build, so an image that fails them never exists. Trivy then blocks the push on HIGH and CRITICAL findings: it caught two in the Debian base image, fixed by patching the layer.
  • Zero-downtime rollouts: on SIGTERM readiness drops first, preStop gives the ingress time to notice, PDB and HPA keep capacity.
  • Тесты запускаются внутри сборки Docker: образ, который их не прошёл, просто не появится. Дальше Trivy блокирует публикацию при HIGH и CRITICAL. Он нашёл две уязвимости в базовом образе Debian, исправлено обновлением пакетов.
  • Обновления без простоя: на SIGTERM сервис сначала перестаёт быть ready, preStop даёт ingress время это заметить, PDB и HPA держат запас.
checks on every commitпроверок на каждый коммит
11
HIGH CVEs in the imageHIGH-уязвимостей в образе
2 → 0
container runs as rootконтейнер от root
noнет
Python / Docker / Helm / Terraform / Yandex Cloud / Ansible / GitHub Actions / Trivy / Prometheus / Grafana
grafana · infra-lab · REDsample
requests / s ● live
error ratio
0.21%
p95 latency
84ms
ruffpytesthadolinttf validatehelm lintansibletrivypush

kubectl-why

# kubernetes / debugging toolkubernetes / инструмент для отладки

A kubectl plugin in Go that explains in plain words why a pod or deployment is unhealthy: what is wrong, the evidence, and what to try next. kubectl describe shows everything; this does the part you usually do in your head at 3 a.m.

Плагин для kubectl на Go: человеческим языком объясняет, почему под или деплоймент нездоров. Что сломалось, на чём основан вывод и что делать дальше. kubectl describe показывает всё подряд, а это делает ту часть, которую обычно делаешь в голове в 3 ночи.

  • Recognises OOMKilled, crash loops with exit codes in words, liveness and readiness failures, bad image tags vs. private registries, missing secrets, unschedulable pods, Multi-Attach volumes, stuck Terminating, evictions and stuck rollouts.
  • CI starts a kind cluster, deploys pods broken on purpose and checks each one is explained correctly. The first run found three real bugs that recorded fixtures had missed.
  • Распознаёт OOMKilled, крэш-лупы с расшифровкой кода выхода, падающие liveness и readiness, несуществующий тег против приватного registry, отсутствующие секреты, неразмещаемые поды, Multi-Attach томов, зависший Terminating, вытеснение и застрявший rollout.
  • CI поднимает кластер kind, деплоит специально сломанные поды и проверяет, что каждый объяснён правильно. Первый же прогон нашёл три настоящих бага, которые записанные фикстуры пропустили.
failure modesтипов поломок
15+
dependenciesзависимостей
0
tested onпроверяется на
real kind clusterживом kind
Go / Kubernetes / kubectl plugin / kind / GoReleaser / krew / GitHub Actions
zsh · prod-clustersample

          

platform-ci

# ci/cd / supply chainci/cd / безопасность поставки

Reusable GitHub Actions workflows so every repository gets the same image build, scanning, SBOM, signing and IaC checks from one line of uses: instead of copy-pasted YAML.

Переиспользуемые GitHub Actions workflow: каждый репозиторий одной строкой uses: получает одинаковую сборку образа, сканирование, SBOM, подпись и проверки IaC вместо копипасты YAML.

  • Images are signed with keyless cosign through GitHub's OIDC token: there is no private key to store or rotate, and a signature proves which workflow built the image.
  • Pull requests only check; push and signing happen from the main branch, so a fork can't publish to the registry. Trivy fails only on vulnerabilities that have a fix.
  • Образы подписываются cosign без ключей через OIDC-токен GitHub: нет приватного ключа, который нужно хранить и ротировать, а подпись доказывает, какой workflow собрал образ.
  • Pull request только проверяет, публикация и подпись идут из основной ветки, поэтому форк не положит образ в registry. Trivy валит сборку только на уязвимостях, у которых есть исправление.
reusable workflowsобщих workflow
3
signing keys to storeключей подписи хранить
0
used byиспользуется в
infra-lab
GitHub Actions / Docker Buildx / Trivy / SBOM (SPDX) / cosign / Terraform / tflint / Helm / kubeconform / kube-linter
github actions · infra-labsample

          

k3s-gitops

# kubernetes / gitopskubernetes / gitops

A single-node k3s cluster where everything after Argo CD comes from git. Changes go through a commit; anything edited by hand in the cluster is reverted.

Однонодовый k3s, где всё после Argo CD создаётся из git. Изменения идут только через коммит, ручные правки в кластере откатываются.

  • App of apps with sync waves: the ingress controller and cert-manager come up first, then the issuer and monitoring, then the workloads.
  • Chart versions and values live apart (multi-source Applications), so upgrading a chart and changing its settings are separate, reviewable commits.
  • App of apps с sync-wave: сначала ingress-контроллер и cert-manager, потом issuer и мониторинг, потом приложения.
  • Версии чартов и values хранятся раздельно (multi-source Applications): обновление чарта и изменение настроек идут отдельными коммитами с ревью.
kubectl apply after bootstrapkubectl apply после старта
0
components managed from gitкомпонентов из git
5
manifests checked in CIманифестов проверяется в CI
allвсе
k3s / Argo CD / Helm / ingress-nginx / cert-manager / kube-prometheus-stack / kubeconform
argo-cd · applicationssample
rootapps/ · main
w0ingress-nginxOutOfSync
w0cert-managerOutOfSync
w1cluster-issuerOutOfSync
w1kube-prometheus-stackOutOfSync
w2infra-labOutOfSync

alertmanager-telegram-relay

# observability / alertingмониторинг / алертинг

A small dependency-free service that turns Alertmanager webhooks into readable Telegram messages: grouped, marked by severity, HTML-escaped and kept under Telegram's length limit.

Небольшой сервис без зависимостей: превращает webhook от Alertmanager в понятные сообщения в Telegram. Группирует алерты, помечает по severity, экранирует HTML и укладывается в лимит длины.

  • If Telegram is down, the relay answers 502 and Alertmanager retries on its own, so an alert is delayed rather than lost.
  • The message format lives in code and is covered by tests, not in Go templates buried in the Alertmanager config.
  • Если Telegram недоступен, сервис отвечает 502, и Alertmanager повторяет отправку сам: алерт задержится, но не потеряется.
  • Формат сообщений лежит в коде и покрыт тестами, а не спрятан в Go-шаблонах внутри конфига Alertmanager.
runtime dependenciesзависимостей
0
testsтестов
4
imageобраз
non-root · ro fs
Python / Alertmanager / Docker / Kubernetes / GHCR / GitHub Actions
#alerts · telegramsample

pg-backup-s3

# databases / backupsбазы данных / бэкапы

PostgreSQL backups to S3-compatible storage in one Bash script: dump, compress, verify, upload, prune old copies and report to Prometheus.

Бэкапы PostgreSQL в S3-совместимое хранилище одним Bash-скриптом: дамп, сжатие, проверка архива, загрузка, удаление старых копий и метрики для Prometheus.

  • If the server was off at night, the systemd timer runs the missed backup on boot (Persistent=true).
  • Two alerts: the last backup failed, or there has been none for 26 hours. A backup that failed silently is worse than no backup.
  • Если сервер ночью был выключен, systemd-таймер снимет пропущенный бэкап после включения (Persistent=true).
  • Два алерта: последний бэкап упал или его не было 26 часов. Бэкап, который тихо упал, хуже, чем его отсутствие.
default retentionхранение по умолчанию
14 days14 дней
metrics exportedметрик для Prometheus
4
checked in CIпроверка в CI
shellcheck
Bash / PostgreSQL / S3 / systemd / Prometheus / node_exporter
zsh · db-01sample

          

mikrotik-config-backup

# networks / config historyсети / история конфигов

Nightly MikroTik config export into git: one file per router, a commit only when something changed, secrets excluded.

Ночной экспорт конфигов MikroTik в git: файл на каждый роутер, коммит только при изменениях, секреты не попадают.

  • RouterOS writes a timestamp into the first line of every export. The script strips it, so only real changes become commits.
  • Exits non-zero if any router does not answer, so cron or systemd notices instead of skipping it silently.
  • RouterOS пишет дату в первую строку каждого экспорта. Скрипт её вырезает, поэтому коммитятся только настоящие изменения.
  • Завершается с ошибкой, если какой-то роутер не ответил: cron или systemd это заметят, а не пропустят молча.
secrets in gitсекретов в git
0
commits without changesкоммитов без изменений
0
rollbackоткат
git show
RouterOS / Bash / Git / SSH / cron
git log -p club-msk-03.rscsample

          
05 / ~/stack

What I work withС чем я работаю

Tools I have used on real infrastructure, grouped the way I use them. Certified ones are marked.

Инструменты, с которыми работал на реальной инфраструктуре, сгруппированы так, как я ими пользуюсь. Сертифицированные отмечены.

toolbox = lesser-known open-source tools I add to almost every project. Click a card to open the repo.

toolbox = малоизвестные open-source инструменты, которые я ставлю почти в каждый проект. Карточка ведёт на репозиторий.

06 / contactсвязь

Let's talkДавайте поговорим

Looking for a team where I can own CI/CD, Kubernetes and monitoring and get them to the point where they run themselves. I reply within a day.

Ищу команду, где можно забрать CI/CD, Kubernetes и мониторинг и довести их до уровня «работает само». Отвечаю в течение дня.

sakuratoxs@gmail.com
kubectl exec -it cursor
scheduling cursor…