Ingress, Istio и APISIX — это технологии, тесно связанные с облачными средами и играющие важную роль в развертывании современных приложений, особенно в архитектуре микросервисов. В сегодняшней статье давайте сначала разберемся, что они делают, а затем в чем различия. Дальнейшие статьи дадут их более глубокое понимание с примерами.
Официальная документация:
Ingress:https://kubernetes.io/docs/concepts/services-networking/ingress/
lstio:https://istio.io/latest/zh/
Apisix: https://apisix.apache.org/docs/
Короче говоря, наиболее подробный контент по-прежнему находится на официальном сайте, но некоторая часть контента, упомянутого на официальном сайте, относительно неясна, поэтому часто читая официальный сайт и полагаясь на объяснения других людей, вы определенно получите вдвое больший результат с половиной усилий. . ну давай же!
Давайте сначала поговорим о входе. Ingress — это компонент Kubernetes. Ingress в основном используется как объект API. Он обрабатывает внешние запросы на доступ к сервисам в кластере и обеспечивает маршрутизацию HTTP и HTTPS. Ingress позволяет пользователям определять правила, определяющие, как внешние запросы направляются к службам, поэтому пользователи могут получать доступ к нескольким службам через одну точку входа. Ingress упрощает сложные правила маршрутизации благодаря единой точке входа и может быть интегрирован с такими сервисами, как Let's Encrypt, для автоматического управления сертификатами SSL/TLS.
Взгляните на краткие характеристики:
Если вы настраиваете вход для службы розничного магазина, вы можете понять это, посмотрев комментарии yaml.
apiVersion: networking.k8s.io/v1 # использовал Kubernetes API Версия
kind: Ingress # Тип ресурсада Ingress
metadata:
name: e-commerce-ingress # Ingress имя ресурса
annotations: # Используйте аннотации для определения Ingress Конфигурация, связанная с контроллером
kubernetes.io/ingress.class: "nginx" # обозначение Ingress Тип контроллера
nginx.ingress.kubernetes.io/rewrite-target: / # Переписать целевой путь
spec:
tls: # TLS Раздел конфигурации
- hosts:
- shop.example.com # обозначениедоменное имя
secretName: shop-tls # обозначениесуществовать TLS сертификат Kubernetes Secret
rules: # Определить правила маршрутизации
- host: shop.example.com # Соответствующее доменное имя
http:
paths:
- path: / # Соответствует интерфейсу UI путь
pathType: Prefix # Тип пути соответствует префиксу
backend:
service:
name: frontend-service # Название фронтенда Служить
port:
number: 80 # Порт Служить
- path: /products # Соответствующие продукты Служитьпуть
pathType: Prefix
backend:
service:
name: products-service # Название товара Служить
port:
number: 80
- path: /orders # Соответствующий приказ Служитьпуть
pathType: Prefix
backend:
service:
name: orders-service # Название заказа Служить
port:
number: 80
lstio — это сервисная сетка с открытым исходным кодом, которая обеспечивает способ контроля, управления и мониторинга сетевого взаимодействия между несколькими микросервисами. Сервисная сетка — это уровень инфраструктуры над приложением, но ниже сетевого уровня. lstio обеспечивает балансировку нагрузки, аутентификацию между службами, правила передачи трафика, внедрение ошибок, канареечную публикацию, распределенную трассировку и другие функции без изменения кода службы.
Если у вас есть платформа обработки онлайн-транзакций с микросервисной архитектурой, lstio можно использовать для:
По сравнению с Ingress, Istio предоставляет более сложный и всеобъемлющий набор функций, что очень полезно для крупномасштабных распределенных приложений, но также требует более длительного обучения и потребления ресурсов.
apiVersion: networking.istio.io/v1beta1 # Istio сеть API Версия
kind: VirtualService # Тип ресурса VirtualService
metadata:
name: backend-virtualservice # VirtualService имя
spec:
hosts:
- backend-service # Служитьимя хоста http:
- match:
- uri:
prefix: /api/v1/ # соответствие URI префикс
route:
- destination:
host: backend-service
subset: v1 # маршрутизация к целевому подмножеству
weight: 90 # потокмасса - destination:
host: backend-service
subset: v2
weight: 10 # Меньший вес канареечных выпусков
---
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule # Тип ресурса DestinationRule
metadata:
name: backend-destinationrule # DestinationRule имя
spec:
host: backend-service
subsets: # определить подмножество
- name: v1
labels:
version: v1 # метка подмножества
- name: v2
labels:
version: v2 # метка для канареечного издательства подмножества
Для этого простого введения вы можете прочитать введение в моей предыдущей статье.:Ingress-Nginx удален? Apisix все еще слишком мощный!
С нескольких аспектов:
{
"uri": "/backend/*", // Определить правила сопоставления путей запроса
"name": "backend-route", // имя правила маршрутизации
"methods": ["GET", "POST", "PUT"], // Разрешенные методы запроса
"hosts": ["api.store.example.com"], // проситьсоответствиеимя хоста
"upstream": {
"nodes": {
"backend-service:80": 1 // Адрес и вес бэкенда Служить
},
"type": "roundrobin" // Стратегия балансировки нагрузки бэкенда Служить, вот опрос
},
"plugins": {
"jwt-auth": { // давать возможность JWT Плагин аутентификации
"key": "your-jwt-key", // JWT Key
"secret": "your-jwt-secret" // JWT Secret
},
"rate-limiting": { // давать возможностьпроситьплагин ограничения скорости
"rate": 1000, // Ограничение количества запросов в секунду
"burst": 2000, // Ограничение количества пакетов запроса
"key": "remote_addr" // Основание для ограничения, вот клиент IP адрес
}
}
}
Ingress — это стандартная конфигурация Kubernetes, которая подходит для базовых нужд HTTP-маршрутизации. Она объединяет балансировку нагрузки и терминалы SSL, но она немного слаба с точки зрения производительности и настройки. Он больше подходит для малых и средних предприятий, которые хотят развернуть несколько своих сервисов в Kubernetes, и эти сервисы необходимо предоставлять клиентам через Интернет.
Istio является лидером в области сервисных сетей, не только маршрутизируя трафик, но и предоставляя богатые политики управления трафиком, мониторинг сервисов и безопасность, но сложность и потребление ресурсов могут быть непомерно высокими. Он больше подходит для таких сценариев, как финансовые компании с несколькими микросервисами, которым требуется детальный контроль трафика, зашифрованная связь между сервисами и комплексный мониторинг.
В качестве API-шлюза APISIX обладает выдающейся производительностью, высокой масштабируемостью и гибким механизмом подключаемых модулей. Он очень подходит для современной микросервисной архитектуры, но немного сложнее, чем интеграция K8s и Ingress. Идеально подходит для чего-то вроде крупной онлайн-платформы розничной торговли, которой необходимо обрабатывать тысячи запросов клиентского API и выполнять аутентификацию, ограничение скорости и другие проверки безопасности по этим запросам. APISIX может обрабатывать эти запросы высокопроизводительно, предоставляя при этом богатый набор подключаемых модулей для удовлетворения потребностей бизнеса.
Хм,Благодаря приведенному выше введению,Все читатели должны что-то об этом знать, верно?,Позже продолжу заниматься. Подвести итог, поделись со всеми, не забудь сосредоточиться на Да!