EaseMesh — это сервисная сетка, совместимая с экосистемой Spring Cloud. Она основана на Easegress для управления сайдкаром сервиса и EaseAgent для мониторинга сервисов.
EaseMesh
Почему мы изобретаем ещё одно колесо?
Сервисная сетка, совместимая со Spring Cloud: микросервисы в Spring Cloud имеют собственные компоненты реестра/обнаружения сервисов. Это сильно отличается от экосистемы Kubernetes, использующей DNS для обнаружения сервисов. Основные решения для сервисных сеток (например, Istio) используют технологии домена Kubernetes. Это вызывает проблемы и конфликты с Java Spring Cloud. EaseMesh стремится сделать сервисную сетку полностью совместимой с Java Spring Cloud.
Интегрированная наблюдаемость: в настоящее время сервисные сетки на основе Kubernetes могут видеть только входящий и исходящий трафик и не имеют представления о том, что происходит внутри сервисов и приложений. Таким образом, объединив технологию Java Agent, мы можем получить полную возможность наблюдать за всем внутри и снаружи сервисов и приложений.
Сложные возможности разделения трафика: EaseMesh имеет сложные возможности разделения трафика, которые могут разделять трафик цепочки запросов не только на первую службу, но и на последнюю. Эта возможность может быть применена в сценариях канареечного развёртывания и онлайн-тестирования производства.
Короче говоря, EaseMesh использует методы sidecar Kubernetes и Java Agent для обеспечения управления сервисами и интегрированной наблюдаемости для Java-приложений без изменения исходного кода.
Спецификации HTTP-сервера (имя файла: http-server.yaml):
kind: HTTPServer
name: spring-petclinic-example
port: 443
https: true
keepAlive: true
keepAliveTimeout: 75s
maxConnection: 10240
cacheSize: 0
certs:
key: {добавьте сюда информацию о сертификатах}
rules:
- paths:
- pathPrefix: /
backend: http-petclinic-pipeline
Спецификации HTTP Pipeline (имя файла: http-petclinic-pipeline.yaml):
name: http-petclinic-pipeline
kind: HTTPPipeline
flow:
- filter: requestAdaptor
- filter: proxy
filters:
- name: requestAdaptor
kind: RequestAdaptor
method: ""
path: null
header:
del: []
set:
Host: "{ваше имя хоста, можно опустить}"
X-Forwarded-Proto: "https"
Connection: "upgrade"
add:
Host: "{ваше имя хоста, можно опустить}"
- name: proxy
kind: Proxy
mainPool:
servers:
- url: http://{node1_of_k8s_cluster}:{порт, открытый службой ingress}
- url: http://{node2_of_k8s_cluster}:{порт, открытый службой ingress}
loadBalance:
policy: roundRobin
Измените содержимое в {}
в соответствии с вашей средой и примените его с помощью инструмента командной строки клиента Easegress egctl
:
egctl apply -f http-server.yaml
egctl apply -f http-petclinic-pipeline.yaml
egctl — это клиентская командная строка Easegress.
Посещение веб-сайта PetClinic с $your_domain/#!/welcome
Конфигурирование обратного прокси через Nginx
ВНИМАНИЕ: Только для сценариев, в которых Nginx выполняет роль обратного прокси-сервиса.
Если вы используете Nginx в качестве обратного прокси, следует добавить следующую конфигурацию.
Затем настройте IP-адрес NodePort и номер порта в адрес маршрутизации вашего шлюза трафика, например, добавьте конфигурацию в NGINX:
location /pet/ {
proxy_pass http://{node1_of_k8s_cluster}:{port_exposed_by_ingress_service}/;
}
Внимание: веб-сайт PetClinic должен быть маршрутизирован через подпуть
/
, или он должен использовать функцию замены содержимого ответа NGINX для исправления URL ресурса:
location /pet/ {
proxy_pass http://{node1_of_k8s_cluster}:{port_exposed_by_ingress_service/;
sub_filter 'href="/' 'href="/pet/';
sub_filter 'src="/' 'src="/pet/';
sub_filter_once off;
}
Посещение веб-сайта PetClinic с $your_domain/pet/#!/welcome
.
Развёртывание canary демонстрирует, как направлять цветной трафик (запрос) на канареечную версию конкретной службы.
Customer Service (v2)
— канареечная версия сервиса.Окрасьте трафик с помощью HTTP-заголовка X-Canary: lv1
с помощью плагина ModHeader браузера Chrome. Затем EaseMesh направит этот цветной трафик в экземпляр канареечной версии службы Customer.
Примените файл конфигурации mesh:
emctl apply -f https://raw.githubusercontent.com/megaease/easemesh-spring-petclinic/main/canary/customer-canary.yaml`
ВНИМАНИЕ Вы можете пропустить этот шаг, мы предоставляем канареечный образ в docker hub
megaease/spring-petclinic-customers-service:canary
, который вы можете найти в docker hub.
Разработка канареечной версии Customer service для добавления дополнительного суффикса к полю city каждой записи. 7.2.4 Шаг 4: Создание канареечного образа
ВНИМАНИЕ: Этот шаг можно пропустить, мы предоставили канареечный образ в Docker Hub
megaease/spring-petclinic-customers-service:canary
, вы можете найти его в Docker Hub.
Создание образа канареечной версии сервиса клиентов и обновление версии образа на https://github.com/megaease/easemesh-spring-petclinic/blob/main/canary/customers-service-deployment-canary.yaml
. Или просто используйте наш стандартный канареечный образ, который уже есть в нём.
7.2.5 Шаг 5: Развёртывание канареечной версии
Аналогично 7.1.4, мы используем kubectl для развёртывания канареечной версии Deployment.
kubectl apply -f https://raw.githubusercontent.com/megaease/easemesh-spring-petclinic/main/canary/customers-service-deployment-canary.yaml`
ВНИМАНИЕ: В спецификации ConfigMap есть спецификация, которая описывает, как подключить базу данных для приложений. Вам необходимо изменить её содержимое для вашей среды.
7.2.6 Шаг 6: Отправка цветного трафика
Включите плагин ModHeader в Chrome, чтобы раскрасить трафик, затем посетите веб-сайт PetClinic. Вы увидите изменение в таблице, которое добавляет суффикс «-US» к каждой записи города.
ModHeader — это расширение Chrome, мы используем его исключительно для демонстрации раскраски запросов.
kubectl delete namespace spring-petclinic
.emctl delete ingress pet-ingress
emctl delete service api-gateway
emctl delete service customers-service
emctl delete service vets-service
emctl delete service visits-service
emctl delete tenant pet
Подробности см. в EaseMesh Roadmap.
Следуйте нашим деталям вклада на MegaEase Community.
EaseMesh находится под лицензией Apache 2.0. Подробности см. в файле LICENSE.
См. Руководство пользователя EaseMesh для получения подробной информации.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )