weblog
- закреплено Восемь лет в DevOps: путь инженера от эникея до Kubernetes-платформ Путь DevOps-инженера: 8 лет от эникея до референсной AWS/EKS-архитектуры на 25 кластерах — Сирена GDS (500+ ВМ), стартап с нуля, FluxCD в MixVel, финтех МТС, Red Rose, теперь Finstar.
- Один вечер, три проблемы: почта упала, память кончилась, не тот docker arch Инцидент-лог с одной ноды k0s на 4GB: OOMKilled-цикл у snappymail, 163% overcommit по памяти, своп-трэшинг под видом высокого disk I/O и промах с архитектурой в docker buildx.
- Traefik → APISIX на одном узле: что пошло не так при миграции ingress Прямой cutover Traefik на APISIX на bare-metal k0s: конфликт hostNetwork-портов, битый --set с запятыми, addPrefix-баг с 404 на assets и ещё восемь находок.
- 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 каждого.
- Wildcard TLS с ACME и cert-manager: автоматизация Let's Encrypt через Yandex Cloud DNS Как работает ACME и DNS-01, почему wildcard требует его, и как автоматизировать Let's Encrypt в Kubernetes через cert-manager и webhook Yandex Cloud DNS в GitOps-подходе с FluxCD.
- CoreDNS как авторитативный DNS в Kubernetes: Corefile и зоны Как CoreDNS становится авторитативным для cluster.local, как добавить собственные зоны через file-плагин или stub, и что делать когда DNS ломается.
- Полная наблюдаемость на одном VPS: метрики, логи, алерты, дашборды — 452 МБ requests Как VictoriaMetrics, VictoriaLogs, Promtail, vmalert и Grafana складываются на двухъядерном VPS: архитектура, счёт за ресурсы и повторяющиеся паттерны.
- Promtail: доставка access-логов Traefik в VictoriaLogs JSON access-логи Traefik в VictoriaLogs через Promtail: статический глоб вместо kubernetes_sd, выбор лейблов по кардинальности и drop-стадии пайплайна.
- OpenTelemetry вместо APM: один SDK, любой бэкенд Как OpenTelemetry заменяет вендорские APM-инструменты (Elastic, Datadog, Dynatrace): один SDK, один протокол и Grafana stack без лицензионных затрат.
- VictoriaLogs в k0s: база логов, которой хватает 128 МБ VictoriaLogs одним подом: 90 строк YAML, стратегия Recreate для hostPath, Loki-совместимый ингест, основы LogsQL и грабли с datasource в Grafana.
- vmsingle: один бинарник VictoriaMetrics вместо всего стека Prometheus Single-node VictoriaMetrics в k0s: встроенный скрейпер со статическими таргетами, RBAC для cAdvisor, hostPath PV и ClusterIP против рестартов CoreDNS.
- SEO для блога на FastAPI без плагинов: что реально работает Полный разбор SEO-стека weblog.antonnovikov.com: структурированные данные, hreflang, IndexNow, sitemap и Atom-фиды.
- Shadowsocks прокси в Kubernetes Разворачиваем shadowsocks-libev в Kubernetes-поде через NodePort. Выбор шифра, UDP relay, хранение пароля в Secret и скрипт установки.
- Как устроен этот сайт FastAPI, k0s, Traefik, WireGuard и чистый Markdown — обзор инфраструктуры, на которой работает этот персональный сайт.
- Ротирующий Tor HTTP-прокси в Kubernetes Запуск zhaow-de/rotating-tor-http-proxy в k0s: N цепочек Privoxy+Tor, HAProxy round-robin, UI статистики на NodePort 30444.
- CI для NuGet-библиотек: версионирование по имени ветки и публикация в два реестра dotnet pack с версией из имени ветки, публикация в GitLab Package Registry через CI_JOB_TOKEN, избирательная публикация в Artifactory для стабильных релизов с ручным гейтом и ограничением по пользователям.
- SonarQube в GitLab CI: dotnet-sonarscanner и дельта покрытия GIT_DEPTH:0 для blame, кастомный SDK-образ на сервис через переопределение variables в rules, сбор dotnet-coverage, проверка дельты покрытия относительно последнего успешного пайплайна через GitLab API.
- Мониторинг статуса VPN: WireGuard + IKEv2 в реальном времени Как 30-секундный systemd timer, wg show dump и обычный JSON-файл обеспечивают работу живой страницы статуса VPN.
- Пайплайн 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.
- Vault JWT auth из GitLab CI: без статических токенов Настройка Vault JWT auth с GitLab JWKS, per-environment роли с bound_claims на ref и project_path, короткоживущие Vault-токены в CI-джобах, kubeconfig получается из Vault в момент деплоя.
- Базовая безопасность FastAPI-приложения: заголовки, аутентификация и валидация CSP, HSTS, HTTP Basic Auth с timing-safe сравнением и защита от path traversal — что есть в приложении и чего не хватает.
- Отладка Flux reconciliation: полевой справочник Куда смотреть, когда Flux не reconcile'ит: get all, describe, force reconcile, suspend/resume, типичные паттерны ошибок для Kustomization и HelmRelease.
- Self-hosted почта: Postfix, Dovecot, CoreDNS, DKIM, SPF и DMARC Запуск почты @antonnovikov.com на том же VPS. Правильная доставляемость через строгий SPF, DKIM-подпись и DMARC с p=reject.
- abot: прокси Alertmanager для уведомлений в Telegram и Mattermost Кастомный Go-сервис между Alertmanager и каналами уведомлений: fan-out, retry, поддержка HTTP proxy, per-cluster маршрутизация.
- Multi-cluster Prometheus: remote_write в центральный VictoriaMetrics Spoke-инстансы Prometheus шлют данные через remote_write в центральный VictoriaMetrics на infra-кластере. externalLabels.cluster, writeRelabelConfigs для снижения трафика, кросс-кластерные дашборды.
- IKEv2 и WireGuard в отдельных namespace Kubernetes Почему VPN-поды работают внутри k0s с hostNetwork и privileged-режимом, и какие компромиссы это влечёт.
- Blackbox exporter и Prometheus Probes для мониторинга эндпоинтов Использование prometheus-blackbox-exporter и Probe CRD для мониторинга HTTP-эндпоинтов, TCP-портов и истечения TLS-сертификатов на кластерах.
- Три прокси на одном сервере: HTTP, SOCKS5 и Shadowsocks tinyproxy, microsocks и ss-server на одном VPS. Как работают health-эндпоинты и почему три протокола вместо одного.
- 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 записываются в статус объекта.
- Self-hosted Docker registry внутри кластера k0s registry:2 на NodePort 30500, без внешних зависимостей для деплоев и автоматическая очистка старых тегов образов.
- LimitRange, ResourceQuota и VPA: управление потреблением ресурсов LimitRange инжектирует дефолтные requests/limits. ResourceQuota ограничивает namespace и блокирует облачные LoadBalancer в dev. VPA в режиме Off даёт рекомендации по right-sizing.
- Прокси-меш в Kubernetes: Tor exit nodes и геомаршрутизация через hola-proxy Запуск ротирующих Tor-прокси и country-specific hola-proxy в namespace Kubernetes с TCP health probes и внутренней маршрутизацией.
- Kustomize configMapGenerator и secretGenerator Генерация ConfigMap и Secret из файлов с content-hash rolling updates, disableNameSuffixHash для Helm, env file sources и HelmRelease valuesFrom.
- Автоматический TLS через cert-manager, Let's Encrypt и Traefik IngressRoutes ClusterIssuer, HTTP-01 challenges, multi-SAN сертификаты и addPrefix middleware для маршрутизации поддоменов.
- OpenTelemetry мост: APISIX → otel-collector → Elasticsearch APM APISIX отправляет трейсы через OTLP/HTTP; APM Server ожидает gRPC. Деплой otel-collector соединяет их. fullnameOverride критичен.
- Flux Image Update Automation: автоматическое обновление тегов образов в git ImageRepository сканирует реестр, ImagePolicy выбирает нужный тег (semver, regex), ImageUpdateAutomation коммитит обновлённый тег обратно в git через маркерные аннотации.
- 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-кластеры.
- Cilium L2 LoadBalancer на bare-metal k3s Без cloud controller, без MetalLB — встроенные L2-анонсы Cilium назначают LoadBalancer IP на bare-metal k3s через ARP.
- Cilium NetworkPolicy: default-deny и DNS-aware правила Default-deny ingress per namespace, разрешение от APISIX, CiliumNetworkPolicy toFQDNs для внешних API, L7 HTTP path rules, кластерная политика скрейпинга Prometheus.
- Тестирование Helm chart: lint, unit-тесты и ct в CI helm lint, helm-unittest для проверки шаблонов, chart-testing (ct) для детектирования изменённых чартов, stub values-файлы в CI/CD и что реально стоит тестировать в Helm chart.
- 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-скрипт.
- Loki и LogQL: логи без накладных расходов Elasticsearch Grafana Loki в режиме SingleBinary, Grafana Alloy как замена promtail, stream selector'ы LogQL, парсинг JSON, rate-запросы и корреляция trace ID между логами и Jaeger.
- Маршрутизация Alertmanager: уведомления в Telegram с правилами ингибиции Дерево маршрутов Alertmanager с маршрутизацией по severity, Telegram bot receiver, правила ингибиции для подавления каскадных алертов, конфигурация группировки, Silence API и amtool для тестирования решений.
- External Secrets Operator + HashiCorp Vault: Kubernetes auth flow ESO аутентифицируется в Vault через токен Kubernetes ServiceAccount. ClusterSecretStore, ExternalSecret и шаги bootstrap для Vault Kubernetes auth.
- kube-prometheus-stack: полная настройка мониторинга HelmRelease kube-prometheus-stack с настройкой персистентности и retention Prometheus, секрет admin Grafana, ServiceMonitor для кастомных приложений, загрузка дашбордов через sidecar и оценка размера хранилища.
- ELK в Kubernetes: Elasticsearch, APM Server и Kibana ELK-стек через Helm в FluxCD, Elastic APM agent в .NET с zero-code auto-instrumentation, управление жизненным циклом индексов и корреляция логов с APM service maps в Kibana.
- Провизионирование 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-скрипт.
- OpenTelemetry в .NET: трейсы, метрики и логи с минимумом шаблонного кода Настройка OTel SDK в Program.cs, Prometheus exporter для /metrics, кастомные ActivitySource span'ы, кастомные Meter counters и histograms, OTLP exporter и HelmRelease OTel Collector.
- 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.
- Пайплайн деплоя GitLab CI Docker: build, push и rolling update Полный пайплайн GitLab CI для контейнеризованных приложений: Docker build с кэшированием слоёв BuildKit, push в приватный реестр, kubectl rollout с SHA-пиннингом тегов образов, multi-environment promotion и job очистки реестра.
- VictoriaMetrics Operator: VMAgent, VMSingle, VMServiceScrape VMSingle для хранения 6 месяцев, VMAgent как скрейпер только с remote_write, VMServiceScrape как drop-in замена ServiceMonitor, VMRule, настройка datasource Grafana.
- DefectDojo в Kubernetes: security findings как первоклассный CI-гейт HelmRelease DefectDojo, загрузка отчётов Trivy и SonarQube через API, модель product и engagement, принудительное SLA в CI — пайплайн падает на непризнанных findings с высокой severity.
- Маршрутизация Alertmanager в Telegram и Mattermost Кастомные Go-шаблоны для сообщений алертов, эмодзи по severity, метки кластера в group_by и repeat_interval, который не разбудит тебя каждые 30 минут.
- APISIX как Kubernetes ingress: rate limiting, JWT-маршрутизация и Lua-плагины APISIX Ingress Controller с ApisixRoute, limit-count для rate limiting per consumer, маршрутизация по JWT claims для A/B тестирования, serverless Lua-плагин для трансформации запросов, canary releases.
- Traefik Middleware для security headers: HSTS, CSP и защита фреймов Ресурсы Traefik Middleware для HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy и Content-Security-Policy. Подключение к IngressRoute и проверка заголовков через curl.
- Flux Notification Controller: статус коммита, Telegram, Mattermost CRD Provider и Alert: статус коммита GitLab на каждый reconcile, generic webhook в abot для Telegram fan-out, per-namespace объекты Alert для шума в рамках окружения.
- Cilium network policy: default-deny и изоляция воркнагрузок Default-deny CiliumNetworkPolicy per namespace, избирательные правила разрешения для DNS, ingress controller, межсервисного трафика, FQDN-based egress политики и L7 HTTP политика для контроля на уровне пути.
- kube-prometheus-stack на multi-cluster: spoke Prometheus, центральный Grafana Grafana на одном кластере, Prometheus на всех шести. Spoke kube-prom-stack с отключённым Grafana, externalLabels.cluster для кросс-кластерных дашбордов.
- Trivy Operator в Kubernetes: автоматизированное сканирование уязвимостей Деплой Trivy Operator через Helm, CRD VulnerabilityReport и ConfigAuditReport, интеграция с Prometheus метриками, алертинг на HIGH/CRITICAL CVE и Trivy в GitLab CI с загрузкой SARIF.
- 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.
- APISIX как Kubernetes ingress: глобальные правила, TLS и OpenTelemetry ApisixGlobalRule для логирования в Elasticsearch, трейсинга OpenTelemetry, gzip и real-ip. ApisixTls для wildcard сертификатов. Два ingress class: internal и external.
- Prometheus exporters в Kubernetes: kafka, mongodb, redis и другие Конфиги HelmRelease для kafka-exporter, mongodb-exporter и redis-exporter. Встроенная поддержка Prometheus в RabbitMQ. helm-exporter для отслеживания версий чартов. Паттерны ServiceMonitor для каждого.
- Алерты node-exporter: часы, диски и лимиты inotify PrometheusRule алерты для clock skew, насыщения CPU, давления памяти, предсказания заполнения диска, исчерпания inotify watches и частоты сетевых ошибок — с практическими порогами из продакшена.
- SonarQube в Kubernetes: деплой и интеграция с GitLab CI HelmRelease SonarQube с PostgreSQL backend (CloudNativePG), GitLab OAuth, ESO для credentials, джоб sonar-scanner-cli в GitLab CI, GIT_DEPTH:0 для blame.
- Алертинг Kafka в Kubernetes: от падения брокера до consumer lag PrometheusRule алерты для Kafka: BrokerDown, UnderReplicatedPartitions, OfflinePartitions, lag consumer group, предсказание заполнения диска и JVM memory pressure через метрики kafka-exporter.
- 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 без дублирования.
- Elastic APM Server в Kubernetes HelmRelease APM Server из elastic chart, приём через OTLP/gRPC, credentials Elasticsearch через ESO, number_of_replicas:0 для single-node, bootstrap в ES-скрипте.
- External Secrets Operator с HashiCorp Vault: JWT auth и KV v2 ClusterSecretStore ESO с Vault JWT аутентификацией через Kubernetes service accounts, синхронизация ExternalSecret с путями KV v2, refresh interval, шаблонирование секретов и сравнение ESO vs SealedSecrets.
- Bootstrap кластеров k3s с Ansible и Flux Ansible берёт на себя подготовку ОС, установку k3s и настройку Cilium. Bootstrap Flux через ansible-playbook. Spoke kubeconfig запечатываются и коммитятся.
- Sealed Secrets: полный рабочий процесс от установки до миграции кластера Воркфлоу kubeseal: установка контроллера, offline запечатка с pub cert, процедуры бэкапа cert, ротация ключей контроллера и перезапечатка всех секретов при миграции на новый кластер.
- 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 между кластерами.
- Hubble: сетевая наблюдаемость, встроенная в Cilium Настройка Hubble UI и Relay в Cilium, инспекция потоков через hubble observe, видимость DNS-запросов, мониторинг policy verdict и построение дашбордов Grafana из метрик Hubble Prometheus.
- Kustomize base/custom/patch: DRY Helm values для нескольких окружений Трёхуровневый Kustomize layout для шести кластеров: общий base, опциональные custom компоненты, env-specific дельта patches. Правило только директорий и JSON patch для kubeConfig.
- Cilium как замена kube-proxy с L2 LoadBalancer на k3s Установка k3s без kube-proxy, Helm values Cilium для режима замены kube-proxy, L2-анонсы CiliumLoadBalancerIPPool и CiliumL2AnnouncementPolicy, сравнение с BGP альтернативой.
- 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.