Skip to content
EN

Ingress в Kubernetes

Коротко:

Ingress — K8s-ресурс, описывающий HTTP(S)-роутинг: какой host/path в какой Service. Требует Ingress Controller (ingress-nginx, Traefik, HAProxy Ingress). Cert-manager автоматически выписывает Let's Encrypt. Аннотации контроллера добавляют rate-limit, CORS, basic-auth без отдельного sidecar.

Ниже: подробности, пример, смежные термины, FAQ.

Проверить безопасность сайта →

Детали

  • Установка nginx-ingress через helm: helm install ingress-nginx ingress-nginx/ingress-nginx
  • cert-manager + ClusterIssuer выписывает сертификаты автоматически
  • Path-based routing: /api → api-svc, /web → web-svc
  • Rate-limit: nginx.ingress.kubernetes.io/limit-rps: "10"
  • Alternatives: Gateway API (K8s 1.29+) — более выразительный, заменит Ingress

Пример

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
    nginx.ingress.kubernetes.io/limit-rps: "10"
spec:
  ingressClassName: nginx
  tls:
    - hosts: [api.example.com]
      secretName: api-tls
  rules:
    - host: api.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service: { name: api-svc, port: { number: 80 } }

Связанные

Как настроить Ingress в Kubernetes

Ingress в Kubernetes позволяет управлять внешним доступом к сервисам в кластере, обеспечивая маршрутизацию и балансировку нагрузки. Для настройки Ingress необходимо создать ресурс Ingress с использованием специального контроллера, такого как NGINX Ingress Controller. Основные шаги включают установку контроллера, создание правил маршрутизации и применение конфигурации через манифесты YAML.

Установка NGINX Ingress Controller

Первым шагом в настройке Ingress является установка NGINX Ingress Controller. Это можно сделать с помощью Helm или манифеста Kubernetes. Рассмотрим оба варианта:

Установка с помощью Helm

Для установки через Helm, выполните следующие команды:

helm repo add ingress-nginx https://charts.helm.sh/stable
helm repo update
helm install my-nginx ingress-nginx/ingress-nginx

После выполнения этих команд Ingress Controller будет установлен в ваш кластер Kubernetes. Вы можете проверить его статус с помощью:

kubectl get pods -n ingress-nginx

Установка с помощью манифеста

Если вы предпочитаете установить Ingress Controller вручную, используйте следующий манифест:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-ingress-controller
  template:
    metadata:
      labels:
        app: nginx-ingress-controller
    spec:
      containers:
      - name: nginx-ingress-controller
        image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:latest
        ports:
        - containerPort: 80
        - containerPort: 443

После создания манифеста, примените его командой:

kubectl apply -f nginx-ingress-controller.yaml

Теперь Ingress Controller работает, и вы можете настроить маршруты для вашего приложения.

Создание правил маршрутизации

После установки Ingress Controller необходимо создать правила маршрутизации, которые определят, как трафик будет направляться к вашим сервисам. Для этого создайте ресурс Ingress с необходимыми аннотациями и правилами. Рассмотрим пример:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: my-api-service
            port:
              number: 80
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-web-service
            port:
              number: 80

В этом примере мы создаем ресурс Ingress, который направляет трафик на два разных сервиса в зависимости от пути. Запросы к /api будут перенаправлены на my-api-service, а все остальные запросы — на my-web-service.

Примените манифест с помощью команды:

kubectl apply -f my-ingress.yaml

После успешного применения, проверьте доступность сервисов через Ingress, используя указанный хост и пути.

ЗаголовкиCSP, HSTS, X-Frame-Options и др.
SSL/TLSШифрование и сертификат
КонфигурацияСерверные настройки и утечки
Оценка A-FОбщий балл безопасности

Почему нам доверяют

OWASP
рекомендации
15+
заголовков безопасности
<2с
результат
A–F
оценка безопасности

Как это работает

1

Введите URL сайта

2

Анализ заголовков безопасности

3

Получите оценку A–F

Что проверяет анализ безопасности?

Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.

Анализ заголовков

Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.

Проверка SSL

Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.

Обнаружение утечек

Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.

Отчёт с рекомендациями

Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.

Кому это нужно

Специалисты по безопасности

аудит HTTP-заголовков

DevOps

проверка конфигурации

Разработчики

CSP и HSTS настройка

Аудиторы

соответствие стандартам

Частые ошибки

Нет Content-Security-PolicyCSP — главная защита от XSS. Без него инъекция скриптов значительно проще.
Нет заголовка HSTSБез HSTS возможна downgrade-атака с HTTPS на HTTP. Включите Strict-Transport-Security.
Server header раскрывает версиюServer: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.
X-Frame-Options не установленСайт можно встроить в iframe для clickjacking-атаки. Установите DENY или SAMEORIGIN.
Нет X-Content-Type-OptionsБез nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).

Лучшие практики

Начните с базовых заголовковМинимум: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Займёт 5 минут.
Внедрите CSP постепенноНачните с Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.
Скройте серверные заголовкиУдалите Server, X-Powered-By, X-AspNet-Version из ответов.
Настройте Permissions-PolicyОграничьте доступ к камере, микрофону, геолокации — только то, что реально используется.
Проверяйте после каждого деплояЗаголовки безопасности могут быть перезаписаны при обновлении конфигурации сервера.

Получите больше с бесплатным аккаунтом

История security-проверок и мониторинг HTTP-заголовков безопасности.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

Ingress vs Service LoadBalancer?

LoadBalancer — 1 external IP на Service (дорого в cloud). Ingress — один LB на весь кластер + L7-роутинг в несколько Services.

Gateway API нужен?

Для новых кластеров — рассмотрите. Для existing — Ingress стабилен и production-grade, миграция не приоритет.

cert-manager обязателен?

Нет, можно руками pasted TLS secret. Но при 3+ доменах cert-manager экономит часы в месяц.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.