tag: devops
- закреплено Восемь лет в DevOps: путь инженера от эникея до Kubernetes-платформ Путь DevOps-инженера: 8 лет от эникея до референсной AWS/EKS-архитектуры на 25+ кластерах — Сирена GDS (500+ ВМ), стартап с нуля, FluxCD в MixVel, финтех МТС, Red Rose, теперь Finstar.
- Bare-metal k8s: как сохранить стабильность Cilium L2 LoadBalancer при обслуживании узлов Как сделать Cilium L2 LoadBalancer надёжным на bare-metal Kubernetes, какие сетевые sysctl важны и как не потерять доступность при reboot/drain.
- Потерян единственный SSH-ключ на всех ВМ в Yandex Cloud: как зайти обратно Почему нельзя отцепить boot-диск, техника восстановления через снапшот, и как её довели до автоматизации на 80 хостов через Ansible, не потеряв кворум и сеть.
- Kubespray: выделенный control plane и два воркера для разгрузки перегруженного узла Разносим перегруженный узел Kubernetes на выделенный control plane и два воркера через Kubespray v2.31: inventory, Cilium и изоляция нагрузки.
- k3s на двух ВМ: выбор LB и хранилища для тестового стенда Установка k3s server+agent на двух ВМ, сравнение MetalLB vs Cilium L2 как LB, и выбор StorageClass: local-path, NFS Provisioner или Longhorn — с объяснением pitfall каждого.
- CoreDNS как авторитативный DNS в Kubernetes: Corefile и зоны Как CoreDNS становится авторитативным для cluster.local, как добавить собственные зоны через file-плагин или stub, и что делать когда DNS ломается.
- OpenTelemetry вместо APM: один SDK, любой бэкенд Как OpenTelemetry заменяет вендорские APM-инструменты (Elastic, Datadog, Dynatrace): один SDK, один протокол и Grafana stack без лицензионных затрат.
- Shadowsocks прокси в Kubernetes Разворачиваем shadowsocks-libev в Kubernetes-поде через NodePort. Выбор шифра, UDP relay, хранение пароля в Secret и скрипт установки.
- CI для NuGet-библиотек: версионирование по имени ветки и публикация в два реестра dotnet pack с версией из имени ветки, публикация в GitLab Package Registry через CI_JOB_TOKEN, избирательная публикация в Artifactory для стабильных релизов с ручным гейтом и ограничением по пользователям.
- Пайплайн GitLab CI на несколько сред: workflow rules и ручные деплои workflow.rules для подавления дублирующихся пайплайнов, стадии для dev/test/demo/preprod/prod, per-environment deploy-джобы на базе общего якоря .deploy, ручной гейт в prod с ограничением по пользователям, аннотации деплоя в Grafana.
- Конфигурация в Helm-чарте: Files.Get, tpl и директория config/ Хранение appsettings.json как HCL-источника consul-template в config/, загрузка отрендеренного вывода в ConfigMap через Files.Get + tpl, subPath volumeMount и аннотации checksum для принудительного рестарта.
- Beszel: лёгкий мониторинг сервера с алертами в Telegram Go-бинарник весом 50 МБ, отправляющий алерты в Telegram при падении сервера. Почему не Grafana.
- consul-template в deploy-джобе GitLab CI Использование consul-template -once для рендеринга секретов Vault в config/ Helm chart перед helm upgrade. Паттерны HCL-шаблонов для per-service и общих секретов, рендеринг CA-сертификата, и почему это лучше ESO для инъекции секретов во время CI.
- Отладка Flux reconciliation: полевой справочник Куда смотреть, когда Flux не reconcile'ит: get all, describe, force reconcile, suspend/resume, типичные паттерны ошибок для Kustomization и HelmRelease.
- Multi-cluster Prometheus: remote_write в центральный VictoriaMetrics Spoke-инстансы Prometheus шлют данные через remote_write в центральный VictoriaMetrics на infra-кластере. externalLabels.cluster, writeRelabelConfigs для снижения трафика, кросс-кластерные дашборды.
- Blackbox exporter и Prometheus Probes для мониторинга эндпоинтов Использование prometheus-blackbox-exporter и Probe CRD для мониторинга HTTP-эндпоинтов, TCP-портов и истечения TLS-сертификатов на кластерах.
- Ansible для управления несколькими кластерами k3s Структура инвентаря, роль подготовки ноды, установка k3s, bootstrap Cilium до Flux, извлечение kubeconfig с подстановкой хоста. Идемпотентные плейбуки для изменений на уровне ОС.
- Добавление нового окружения в FluxCD hub-and-spoke кластер Полный чеклист: поднять кластер, запечатать kubeconfig, создать Kustomize overlays, patches, routes и зарегистрировать в корневой kustomization Flux.
- Деплой в k0s shell-скриптом вместо CI/CD Один shell-скрипт, self-hosted Docker registry и envsubst. Без GitHub Actions, без ArgoCD — и вот почему этого достаточно.
- Yandex Cloud Managed Kubernetes: отличия от on-prem k3s Что YC берёт на себя, storage classes, node groups, CCM service accounts, Cilium L2 не нужен, kubeconfig через YC CLI и отличия в Flux patch.
- Terraform Operator: запуск terraform apply изнутри Kubernetes GalleyBytes terraform-operator запускает Terraform как CRD-воркнагрузку. State на PVC, SSH-ключ переиспользуется из Flux, outputs записываются в статус объекта.
- LimitRange, ResourceQuota и VPA: управление потреблением ресурсов LimitRange инжектирует дефолтные requests/limits. ResourceQuota ограничивает namespace и блокирует облачные LoadBalancer в dev. VPA в режиме Off даёт рекомендации по right-sizing.
- Helm-чарты в конфиге k0s: Flannel, Traefik, cert-manager, Prometheus В k0s есть встроенный Helm-контроллер. Объявите чарты в k0s.yaml — они установятся автоматически при старте. FluxCD не нужен.
- RBAC-паттерны Kubernetes: per-namespace роли в GitOps Агрегированные ClusterRole для developer и devops, RoleBinding с областью видимости per-namespace под управлением Flux, ClusterRoleBinding для read-only доступа к мониторингу.
- Trivy + SonarQube: сканирование безопасности в пайплайне GitLab CI Сканирование файловой системы и живого Kubernetes-кластера через Trivy. SARIF для скана репозитория, конвертация JSON в external-issues для k8s-findings, импорт в SonarQube.
- Подготовка Debian VPS для k0s: sysctl, модули ядра и установка Что реально делает 01-prepare-vm.sh: отключение swap, настройка inotify-лимитов, загрузка модулей ядра и установка k0s single-node.
- GitLab CI для infra-репозитория: lint, валидация и flux reconcile Стадии пайплайна для Kubernetes infra-репозитория: yamllint, kubectl kustomize на каждое окружение, flux reconcile на мерж, уведомления в Telegram/Mattermost.
- cert-manager: wildcard-сертификаты через DNS-01 challenge ClusterIssuer с ACME DNS-01 через Yandex Cloud DNS webhook. Certificate CR для *.dev.test.antonnovikov.com, запечатанное распространение на spoke-кластеры.
- GitLab CI DinD: сборка Docker-образов с кэшированием BuildKit Docker-in-Docker с TLS, кэширование слоёв реестра с mode=max, registry mirror для обхода rate limits DockerHub, multi-arch сборки с QEMU и Trivy-скан в том же пайплайне.
- env-view: собственный Helm-чарт для дашбордов сервисов по окружениям Статическая nginx-страница, отрендеренная из Helm values — каждый кластер получает страницу ссылок со всеми URL сервисов, управляемую FluxCD.
- CloudNativePG: продакшен-PostgreSQL в Kubernetes Оператор CNPG: потоковая репликация с автоматическим failover, архивирование WAL в S3, плановые base backup, point-in-time recovery, connection pooling через PgBouncer и мониторинг через PrometheusRule.
- Управление жизненным циклом индексов Elasticsearch ILM-политика hot→delete для индексов vector-*: rollover при 20 ГБ или 7 днях, удаление через 30 дней. Index template, bootstrap write alias, идемпотентный bootstrap-скрипт.
- External Secrets Operator + HashiCorp Vault: Kubernetes auth flow ESO аутентифицируется в Vault через токен Kubernetes ServiceAccount. ClusterSecretStore, ExternalSecret и шаги bootstrap для Vault Kubernetes auth.
- Провизионирование datasource и дашбордов Grafana через ConfigMap additionalDataSources в values kube-prom-stack, обнаружение дашбордов sidecar'ом из ConfigMap с меткой grafana_dashboard, дашборды в git, структура папок.
- Vector: лог-пайплайн из Kubernetes в Elasticsearch Vector DaemonSet, VRL-трансформации для парсинга JSON и фильтрации health-check, редакция чувствительных полей, ServiceMonitor для метрик пайплайна и двойной sink в Elasticsearch + S3-архив.
- Elasticsearch в Kubernetes: HelmRelease, ingest pipelines и bootstrap Деплой Elasticsearch через Flux из чарта, хранящегося в git, затем bootstrap index templates, ingest pipelines и настройки replica через shell-скрипт.
- Helm values-per-environment: паттерн layering через -f Базовый values.yaml с продакшен-дефолтами, минимальные per-env файлы переопределений, inline values в FluxCD HelmRelease, dry-run верификация шаблонов и почему стоит избегать --set в продакшен-пайплайнах.
- Recording rules Prometheus: предагрегация дорогостоящих запросов PrometheusRule с record:-правилами для CPU/memory/HTTP rate. Соглашение по именованию level:metric:operations. Предрасчёт multi-window burn rate для SLO.
- Self-hosted Docker registry в Kubernetes: настройка, аутентификация и очистка registry:2 на NodePort, PVC-хранилище, конфиг insecure-registries для Docker-хостов, воркфлоу push в CI, imagePullSecret и еженедельный CronJob garbage collection для удалённых blob'ов.
- VictoriaLogs + Vector: замена EFK на лёгкий лог-стек Vector DaemonSet направляет логи приложений в Elasticsearch и error-уровня — в VictoriaLogs. VRL-трансформации, дедупликация и Elasticsearch-совместимый sink VictoriaLogs.
- Многоэтапный Dockerfile для .NET: собрать один раз, запустить компактно Трёхэтапный паттерн restore/build/runtime, оптимизация кэша через разделение файлов проекта и исходного кода, non-root пользователь, readOnlyRootFilesystem, BuildKit registry caching в GitLab CI.
- VictoriaMetrics Operator: VMAgent, VMSingle, VMServiceScrape VMSingle для хранения 6 месяцев, VMAgent как скрейпер только с remote_write, VMServiceScrape как drop-in замена ServiceMonitor, VMRule, настройка datasource Grafana.
- Маршрутизация Alertmanager в Telegram и Mattermost Кастомные Go-шаблоны для сообщений алертов, эмодзи по severity, метки кластера в group_by и repeat_interval, который не разбудит тебя каждые 30 минут.
- Flux Notification Controller: статус коммита, Telegram, Mattermost CRD Provider и Alert: статус коммита GitLab на каждый reconcile, generic webhook в abot для Telegram fan-out, per-namespace объекты Alert для шума в рамках окружения.
- Terraform-модули для PostgreSQL RBAC: роли, пользователи и default privileges Переиспользуемые Terraform-модули для PostgreSQL с провайдером cyrilgdn/postgresql: db_role, db_user, default_privileges, S3 backend с state locking и пайплайн GitLab CI для plan/apply с env promotion.
- GitLab Runner в Kubernetes Деплой через Helm, Docker-in-Docker с emptyDir для TLS-сертификатов, лимиты ресурсов per-job в конфиге runner, registration token через ESO, S3-кэш для быстрых сборок.
- Запуск Kafka в Kubernetes с чартом Bitnami Чарт Bitnami Kafka: KRaft-режим без ZooKeeper, персистентное хранилище, внешний доступ, SASL/SCRAM аутентификация, метрики Prometheus и ServiceMonitor для kafka-exporter.
- Prometheus exporters в Kubernetes: kafka, mongodb, redis и другие Конфиги HelmRelease для kafka-exporter, mongodb-exporter и redis-exporter. Встроенная поддержка Prometheus в RabbitMQ. helm-exporter для отслеживания версий чартов. Паттерны ServiceMonitor для каждого.
- SonarQube в Kubernetes: деплой и интеграция с GitLab CI HelmRelease SonarQube с PostgreSQL backend (CloudNativePG), GitLab OAuth, ESO для credentials, джоб sonar-scanner-cli в GitLab CI, GIT_DEPTH:0 для blame.
- SealedSecrets: хранение зашифрованных kubeconfig в git Bitnami SealedSecrets шифрует credentials кластера для безопасного хранения в git. Воркфлоу запечатки, namespace binding, процесс обновления и траблшутинг контроллера.
- Правильные PrometheusRules: структура, метки и unit-тесты Анатомия PrometheusRule с обязательными метками helm-chart/namespace, аннотации deep-link для Grafana, humanizeTimestamp и humanizeDuration в сообщениях алертов и фреймворк promtool для unit-тестов.
- imagePullSecrets в масштабе: Kustomize secretGenerator для множества namespace Kustomize secretGenerator для credentials Docker registry, namespace-targeted patches, инъекция imagePullSecrets в service account и управление секретами во множестве namespace без дублирования.
- HashiCorp Vault: bootstrap, unseal и Kubernetes auth Vault HA с Raft storage, церемония operator init, ручной unseal vs auto-unseal через YC KMS, настройка метода Kubernetes auth, KV v2, политики и привязка ролей ESO.
- FluxCD hub-and-spoke: один кластер управляет всеми FluxCD v2 hub-and-spoke: hub-кластер запускает контроллеры Flux, spoke-кластеры управляются через spec.kubeConfig в HelmRelease и Kustomization. Настройка KubeConfig secret, dependsOn между кластерами.
- Headlamp: Kubernetes UI без kubectl Headlamp задеплоен как HelmRelease с OIDC через GitLab, ApisixRoute для ingress, RBAC bindings из групп GitLab, multi-cluster kubeconfig в Secret.
- Ansible playbook для k3s: sysctl, модули ядра и bootstrap Cilium Идемпотентный Ansible playbook: настройки sysctl для сети Kubernetes, лимиты inotify, отключение swap, модули ядра, установка k3s server с --flannel-backend=none и bootstrap Cilium через helm.
- FluxCD hub-and-spoke: управление несколькими Kubernetes кластерами из одного git-репозитория Flux работает на одном hub-кластере и деплоит на пять spoke через kubeConfig secrets. Четыре объекта Kustomization на окружение, порядок dependsOn и ежедневные операции.
No posts match the selected filters.