Развертывание вашего первого сервиса в Kubernetes: прояснение входящего трафика

Вход в Kubernetes — одна из самых сложных задач, которую нужно решить, когда вы только начинаете знакомиться с Kubernetes. Во-первых, у вас есть собственные типы входных ресурсов, но вам также необходимо использовать контроллер. Вам доступно множество сторонних контроллеров входящего трафика, в чем разница между ними?

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

Чтобы получить максимальную отдачу от В этой статье вам понадобится некоторое предварительное представление о сервисах и пространствах имен Kubernetes. Вы можете освежить эти знания в предыдущей статье нашей серии «Модули, службы, развертывания… что мне использовать и когда?».

Вот что мы рассмотрим сегодня:

  • Что такое ingress в Kubernetes
  • Ограничения на тип входящего трафика
  • Как работает маршрутизация с входящим потоком?
  • Сравнение основных контроллеров входящего трафика
  • Что нужно узнать дальше

Получите экспертное обучение по Ingress и другим продвинутым темам Kubernetes

Получите всю информацию, необходимую для того, чтобы стать профессиональным разработчиком Kubernetes.

Практическое руководство по Kubernetes

Что такое Ingress в Kubernetes?

Зачем нужен Ingress в Kubernetes? Вместо этого вы могли бы просто открыть службу и указать type LoadBalancer , правильно?

Тогда это будет говорить с выбранным вами облаком и запускать балансировщик нагрузки для вас с помощью общедоступный IP-адрес, и ваш сервис будет доступен для использования. Счастливых дней !!!

А теперь представьте, что у вас работает 10 или, может быть, 100 сервисов, открытых для общественности. У каждой службы будет свой собственный балансировщик нагрузки и общедоступный IP-адрес. Вы можете видеть, как это очень быстро разрастется и станет неуправляемым. Не говоря уже о том, что это будет стоить вам денег от вашего облачного провайдера за дополнительные балансировщики нагрузки и IP-адреса.

Введите входящий трафик.

Ingress позволяет вам совместно использовать один общедоступный IP-адрес и направлять ваше приложение через URL-адреса или URI, обычно известные как HTTP-маршрутизация. Выбрав входящий контроллер, вы сможете указать URL-адреса или URI, которые вам нужно маршрутизировать, и контроллер будет следить за ним за вас.

Ограничения типа входящего

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

Во-первых, входящие ресурсы не имеют пространства имен. Дон ‘ Поймите меня неправильно, сами контроллеры могут иметь пространство имен с помощью элементов управления rbac. Определение фактического входящего ресурса в разделе Kind: «Ingress не может иметь rbac и не имеет пространства имен.. ”

Итак, что это означает?

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

Это подводит меня ко второму ограничению входа; Kubernetes может иметь несколько одинаковых типов входящего трафика, указывающих на разные ресурсы. Теперь это может быть полезно для вас, но это также может привести к тому, что трафик будет перенаправлен на службы маршрутизации в вашем кластере, которые не являются должно быть частью этого правила входа. Как упоминалось ранее, это то, о чем вы должны знать при использовании ingress. Позже в этой публикации вы увидите несколько способов убедиться, что каждое правило входа уникально.

Как работает маршрутизация с входом ?

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

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

Для примеров я собираюсь использовать контроллер Nginx , который легче всего установить и запустить. В следующем разделе вы найдете несколько других контроллеров, которые предоставят вам параметры для вашего кластера.

В приведенных ниже примерах вы увидите, что вы можете определить свои правила входа двумя способами: Первый. с URI, а второй — с заголовками хоста.

Определение входа через URI:

  apiVersion: network.k8s.io/ v1beta1kind: Ingressmetadata: name: аннотации production-uri: nginx.ingress.kubernetes.io/rewrite-target:/spec: rules: - host: production.com http: paths: - path:/users backend: serviceName: users-api  servicePort: 4200 - путь:/payments backend: serviceName: payments-api servicePort: 8080  

В приведенном выше примере было определено, что на production.com есть две службы: a пользовательский API и платежный API. Вы можете видеть, что если трафик идет на production.com/users, он попадет в службу users-api.

Определение входящего трафика через заголовок хоста:

  apiVersion: network.k8s.io/v1beta1kind: Ingressmetadata: name: my-production-v-hostspec: rules: - host: foo.production.com http: paths: - backend: serviceName: api-v1 servicePort:  80 - host: bar.production.com http: paths: - backend: serviceName: api-v2 servicePort: 80  

В этом примере это определение маршрутизации через URL-адрес в хосте заголовок, и ваш трафик будет идти в службу, определенную в заголовке хоста.

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

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

Nginx

Nginx — один из самых простых в использовании. Он действительно использует стандартный тип ресурса Kubernetes, поэтому вам нужно будет реализовать что-то вроде агента открытой политики , если вы хотите заблокировать несколько одинаковых записей правила входа. Nginx «из коробки» предоставляет поддержку TLS/HTTPS , балансировку нагрузки, TCP/UDP и интерфейсы с Prometheus для метрик, которые могут пригодиться.

Contour

Contour использует совершенно другой подход к входу и использует новый тип входа через CRD. Contour устраняет проблему нескольких правил входа, разрешая только одно правило, а также позволяет делегировать пути URI и части URL-адреса. Кроме того, он использует envoy в качестве обратного прокси. Это тот, который стоит вашего изучения.

Traefik

Traefik — еще один популярный выбор для входящего трафика, который имеет множество функций. Traefik поставляется с приборной панелью, которая позволяет вам копаться в ваших правилах входа. Также существует интеграция с трассировкой (Jaeger, Open tracing и Zipkin), метриками ( Prometheus или statsd ) и TLS/HTTPS .

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

Что делать дальше

Поздравляем, вы сделали еще один шаг к изучению Kubernetes путем демистификации Ingress. К сожалению, Kubernetes — это общеизвестно сложное программное обеспечение для изучения, требующее многих уникальных навыков, таких как использование Ingress, и годы передового опыта для изучения.

Чтобы помочь вам справиться с Ingress и другими сложными темами Kubernetes, обучающие создал Практическое руководство по Kubernetes.

Этот курс, написанный экспертом по Kubernetes и капитаном Docker Виктором Фариком, содержит увлекательные объяснения и интерактивные примеры, которые помогут вам быстро освоиться с Kubernetes. Вы начнете с основ, укрепляющих основу подов и кластеров, прежде чем переходить к более сложным темам, таким как вход, управление ресурсами и карты конфигурации..

К концу вы получите представление обо всех профессионально используемых концепциях Kubernetes, а также создадите и развернете множество собственных кластеров!

Удачного обучения!

Продолжить чтение о Kubernetes:

  • Учебник по архитектуре микросервисов: все, что вам нужно для начала
  • Учебное пособие по Kubernetes: начало работы с оркестровкой контейнеров
  • Почему и когда следует использовать Kubernetes
Оцените статью
nanomode.ru
Добавить комментарий