0Pricing
Docker & DevOps Fundamentals · Урок

Ingress и внешняя маршрутизация

Публикуйте несколько служб во внешний мир через единую точку входа с помощью ресурсов Ingress, маршрутизации по узлу и пути, а также контроллера Ingress.

«Ingress и внешняя маршрутизация» — бесплатный урок Docker & DevOps Fundamentals на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Docker & DevOps Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

За пределами NodePort и LoadBalancer

Service может открыть доступ к приложению, но назначать каждому приложению собственный внешний IP дорого и неудобно. Ingress предоставляет одну интеллектуальную точку входа HTTP, которая направляет трафик к множеству сервисов.

Что такое Ingress

Ingress — это объект Kubernetes, описывающий правила маршрутизации HTTP/HTTPS: какой хост или путь URL сопоставляется с каким сервисом.

Нужен контроллер

Объект Ingress содержит только правила. Контроллер Ingress (nginx, Traefik, HAProxy) фактически отслеживает эти правила и выполняет маршрутизацию. Нет контроллера — нет эффекта.

kubectl get pods -n ingress-nginx

Базовый Ingress

Этот объект Ingress направляет весь трафик к одному внутреннему сервису на порту 80.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-ingress
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web
            port:
              number: 80

Маршрутизация по имени хоста

Добавьте host, чтобы выполнять маршрутизацию по доменному имени: api.example.com к одному сервису, shop.example.com к другому — всё на одном IP.

rules:
- host: api.example.com
  http:
    paths:
    - path: /
      pathType: Prefix
      backend:
        service:
          name: api
          port:
            number: 8080

Маршрутизация по пути

Или выполняйте маршрутизацию по пути URL в пределах одного хоста: /api к сервису API, / к веб-интерфейсу.

paths:
- path: /api
  pathType: Prefix
  backend:
    service:
      name: api
      port:
        number: 8080
- path: /
  pathType: Prefix
  backend:
    service:
      name: web
      port:
        number: 80

Завершение TLS

Ingress может завершать HTTPS с помощью секрета TLS, поэтому сервисы получают обычный HTTP, а пользователи — шифрование.

spec:
  tls:
  - hosts:
    - shop.example.com
    secretName: shop-tls

Аннотации настраивают поведение

Аннотации, специфичные для контроллера, настраивают перезапись, тайм-ауты, ограничения частоты и многое другое. Они находятся в метаданных Ingress.

metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /

IngressClass

Когда контроллеров несколько, ingressClassName сообщает Kubernetes, какой из них должен обрабатывать этот Ingress.

spec:
  ingressClassName: nginx

Просмотр Ingress

Проверьте правила и назначенный адрес с помощью kubectl get ingress, а для просмотра событий используйте describe.

kubectl describe ingress web-ingress

Современная альтернатива: Gateway API

Kubernetes развивается в сторону Gateway API — более выразительного преемника Ingress. Ingress по-прежнему широко используется и остаётся правильной отправной точкой.

Быстрая проверка

Почему необходим контроллер Ingress?

Повторение

Теперь Вы умеете аккуратно открывать доступ к приложениям:

  • Ingress задаёт правила маршрутизации HTTP, а контроллер Ingress применяет их
  • Выполняйте маршрутизацию по хосту или пути через одну точку входа
  • Завершайте TLS и настраивайте поведение с помощью аннотаций
  • ingressClassName выбирает контроллер

Один IP, множество сервисов, интеллектуальная маршрутизация.

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

Урок «Ingress и внешняя маршрутизация» бесплатный?

Да — полный текст урока «Ingress и внешняя маршрутизация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Docker & DevOps Fundamentals, подпишись на CoddyKit PRO. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Ingress и внешняя маршрутизация»?

Публикуйте несколько служб во внешний мир через единую точку входа с помощью ресурсов Ingress, маршрутизации по узлу и пути, а также контроллера Ingress. Ты практикуешь Docker & DevOps Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Docker & DevOps Fundamentals?

Предыдущий опыт не требуется. Docker & DevOps Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Ingress и внешняя маршрутизация»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Docker & DevOps Fundamentals?

Да. Каждый урок Docker & DevOps Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Развёртывания для приложений без состояния
  2. Сервисы для сетевого доступа
  3. ConfigMaps и секреты
  4. Ingress и внешняя маршрутизация
← Назад к Docker & DevOps Fundamentals