0Pricing
DevOps Bootcamp · Урок

Ingress для внешнего доступа

Настройте Ingress для управления внешним доступом к сервисам, включая маршрутизацию HTTP/S и балансировку нагрузки.

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

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

Мы рассмотрели разные типы сервисов Kubernetes, такие как NodePort и LoadBalancer, для внешнего открытия приложений.

Хотя они полезны, управление сложными требованиями к внешнему доступу с их помощью может стать неудобным — особенно если нужно разместить много приложений или API на одном IP-адресе с определенными правилами маршрутизации.

Здесь на помощь приходит входящий трафик, предлагающий более мощное и гибкое решение.

Знакомство с входящим трафиком Kubernetes

Входящий трафик — это объект API Kubernetes, который управляет внешним доступом к сервисам в кластере, главным образом для трафика HTTP и HTTPS.

  • Он служит единой точкой входа для внешних запросов.
  • Он позволяет выполнять маршрутизацию HTTP/S на основе имен узлов или путей URL.
  • Он также может обеспечивать такие возможности, как завершение SSL/TLS и балансировка нагрузки.

Представьте входящий трафик как интеллектуального диспетчера, который направляет веб-трафик к нужным внутренним сервисам.

Контроллер входящего трафика

Сам ресурс входящего трафика представляет собой лишь набор правил и напрямую не обрабатывает трафик. Чтобы он работал, в кластере должен быть запущен контроллер входящего трафика.

Контроллер входящего трафика отслеживает ресурсы входящего трафика и настраивает внешний балансировщик нагрузки (или обратный прокси) в соответствии с заданными правилами.

К популярным контроллерам входящего трафика относятся Nginx, Traefik и специализированные облачные решения, такие как GCE Ingress для Google Cloud или AWS Load Balancer Controller.

Как работают правила входящего трафика

Входящий трафик определяет правила, сопоставляющие входящие внешние запросы с конкретными внутренними сервисами в кластере. Обычно эти правила задают:

  • Узел: имя домена (например, www.my-app.com).
  • Путь: путь URL (например, /api, /blog).
  • Внутренний сервис: сервис Kubernetes и порт, на которые следует перенаправить трафик.

Контроллер входящего трафика проверяет эти правила для каждого входящего запроса, чтобы определить правильное назначение.

Создание YAML входящего трафика

Как и другие ресурсы Kubernetes, входящий трафик определяется с помощью манифеста YAML. Ниже показана базовая структура с основными полями:

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

Простой входящий трафик на основе пути

Создадим ресурс входящего трафика, который направляет весь трафик для корневого пути (/) домена myapp.example.com к сервису с именем my-web-service на порту 80.

Перед применением этого ресурса убедитесь, что в кластере запущены развертывание и сервис с именем my-web-service.

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

Развертывание входящего трафика

Чтобы развернуть ресурс входящего трафика, сохраните YAML в файл (например, basic-ingress.yaml) и используйте kubectl apply:

kubectl apply -f basic-ingress.yaml

Проверить состояние входящего трафика можно с помощью kubectl get ingress. После этого контроллер входящего трафика настроит внешний балансировщик нагрузки на основе этих правил.

Для проверки обычно нужно изменить локальный файл /etc/hosts (или настройки DNS), указав для myapp.example.com внешний IP-адрес контроллера входящего трафика.

Пример маршрутизации на основе узла

Входящий трафик идеально подходит для размещения нескольких приложений на одном внешнем IP-адресе с использованием разных имен узлов. В этом примере app1.example.com направляется к service-app1, а app2.example.com — к service-app2.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: host-routing-ingress
spec:
  rules:
  - host: app1.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-app1
            port:
              number: 80
  - host: app2.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-app2
            port:
              number: 80

Несколько путей, один узел

Также можно направлять разные пути URL одного имени узла к разным внутренним сервисам. Это особенно удобно в архитектурах микросервисов или для разных разделов одного приложения.

Например, запросы к api.example.com/users направляются к users-service, а запросы к api.example.com/products — к products-service.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: path-routing-ingress
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /users
        pathType: Prefix
        backend:
          service:
            name: users-service
            port:
              number: 80
      - path: /products
        pathType: Prefix
        backend:
          service:
            name: products-service
            port:
              number: 80

Проверка назначения входящего трафика

Какие из перечисленных вариантов являются основными преимуществами использования входящего трафика Kubernetes?

Итоги: входящий трафик для интеллектуальной маршрутизации

Отличная работа! Вы изучили входящий трафик Kubernetes — важный компонент управления взаимодействием внешних пользователей с вашими приложениями.

  • Входящий трафик обеспечивает гибкую маршрутизацию HTTP/S на основе имен узлов и путей URL.
  • Для отслеживания правил входящего трафика и настройки маршрутизации ему требуется контроллер входящего трафика (например, Nginx).
  • Он упрощает открытие нескольких сервисов через один внешний IP-адрес, делая кластер эффективнее и удобнее в управлении.

Освоение входящего трафика — ключ к созданию надежных и доступных облачных приложений!

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

Урок «Ingress для внешнего доступа» бесплатный?

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

Чему я научусь в уроке «Ingress для внешнего доступа»?

Настройте Ingress для управления внешним доступом к сервисам, включая маршрутизацию HTTP/S и балансировку нагрузки. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

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

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

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

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

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

  1. Открытие доступа к приложениям с помощью сервисов
  2. Типы сервисов: ClusterIP, NodePort, LoadBalancer
  3. Ingress для внешнего доступа
  4. DNS и обнаружение служб
← Назад к DevOps Bootcamp