Перейти к основному контенту

Мониторинг и сетевая безопасность

В продакшен среде важно не только запустить Blitz, но и обеспечить наблюдаемость, контроль сетевого доступа и безопасную публикацию наружу.

Данный раздел описывает основные настройки чарта, связанные с метриками, логами, Ingress, TLS и NetworkPolicy.

Логи

Blitz пишет логи приложения в stdout и stderr. Это соответствует стандартному подходу Kubernetes и позволяет подключить сбор через Fluent Bit, Promtail, OpenSearch, ELK или Loki.

Если необходима более удобная машинная обработка, включите JSON-логи:

logger:
  type: "json"
  rootLevel: "INFO"

Если в инфраструктуре уже используется входящий trace header, его можно передавать в application-логи:

logger:
  type: "json"
  traceIdHeader: "X-Request-ID"
  rootLevel: "INFO"

traceIdHeader указывает Blitz IDP, из какого HTTP-заголовка брать идентификатор трассировки для корреляции логов.

Дополнительно можно выставить собственные лейблы для подов:

podLabels:
  log-collect: "true"

Метрики Prometheus

Чарт поддерживает два основных варианта интеграции:

  • ServiceMonitor
  • PodMonitor

ServiceMonitor

Пример:

monitoring:
  serviceMonitor:
    enabled: true
    interval: 30s
    scrapeTimeout: 10s

PodMonitor

Пример:

monitoring:
  podMonitor:
    enabled: true
    interval: 30s
    scrapeTimeout: 10s

Используйте тот вариант, который соответствует вашей модели интеграции с Prometheus Operator.

Аннотации для scrape

Если в команде используется сбор по аннотациям, можно оставить включённой стандартную схему:

monitoring:
  scrapeAnnotations:
    enabled: true
    target: app
    scheme: http

Параметр target позволяет выбрать, к какой точке применять аннотации: к приложению или к JVM exporter.

JVM exporter

Чарт умеет подключать JMX exporter как javaagent для модулей:

  • idp
  • console
  • reg
  • recovery

Пример включения:

jvmExporter:
  enabled: true
  exporterPort: 9405

При включении чарта:

  • создаётся ConfigMap с конфигурацией exporter
  • в поды добавляется initContainer, который копирует JAR агента
  • в JAVA_TOOL_OPTIONS добавляется параметр -javaagent

Это удобно, если в организации уже принят сбор JVM-метрик через Prometheus.

Ingress

Ingress управляет внешней публикацией Blitz.

Базовый пример:

ingress:
  enabled: true
  className: "traefik"
  tls:
    enabled: true
    secretName: "blitz-idp-tls"

Если используется nginx, можно добавить аннотации контроллера:

ingress:
  className: "nginx"
  annotations:
    nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "60"

TLS

Для production рекомендуется публиковать Blitz по HTTPS. Проверьте:

  • существует ли TLS-секрет
  • совпадает ли CN или SAN сертификата с доменом
  • доступен ли корректный сертификат через ingress-контроллер

Trusted proxies

Параметр http.forwardedTrustedProxies определяет, каким прокси приложение доверяет при обработке forwarded-заголовков.

По умолчанию список может быть широким. В production лучше ограничить его CIDR-сетями ваших реальных ingress-прокси.

NetworkPolicy

Чарт может создавать NetworkPolicy для модулей Blitz.

Базовое включение:

networkPolicy:
  enabled: true
  mode: permissive

Режим permissive

Подходит для большинства стартовых внедрений. В этом режиме чарт:

  • разрешает входящий трафик к опубликованным портам приложения
  • не усложняет egress-политику без необходимости

Режим restricted

Подходит для более строгих платформ. В этом режиме нужно явно задавать разрешённые правила доступа:

networkPolicy:
  enabled: true
  mode: restricted
  egress:
    allowAll: false

Тогда команда внедрения должна заранее определить:

  • какие источники могут обращаться к сервисам Blitz
  • к каким внешним адресам Blitz должен ходить сам
  • нужен ли доступ к PostgreSQL, Vault, DNS и другим корпоративным сервисам

Безопасные настройки по умолчанию

Чарт уже включает ряд полезных параметров безопасности:

  • readOnlyRootFilesystem=true
  • runAsNonRoot=true
  • seccompProfile.type=RuntimeDefault
  • TLS-проверка исходящих HTTP-клиентов включена по умолчанию

Эти настройки не стоит отключать без отдельного обоснования.

Практический минимум для production среды

  • включить HTTPS на Ingress
  • ограничить forwardedTrustedProxies
  • включить NetworkPolicy
  • подключить централизованный сбор логов
  • включить ServiceMonitor, PodMonitor или scrape-аннотации
  • оценить необходимость JVM exporter