1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/megaease-easemesh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

EaseMesh

EaseMesh — это сервисная сетка, совместимая с экосистемой Spring Cloud. Она основана на Easegress для управления сайдкаром сервиса и EaseAgent для мониторинга сервисов.

EaseMesh

  1. Цели

Почему мы изобретаем ещё одно колесо?

  • Сервисная сетка, совместимая со 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-приложений без изменения исходного кода.

  1. Принципы
  • Совместимость с Spring Cloud: управление доменом Spring Cloud и отказоустойчивый дизайн.
  • Отсутствие изменений кода: использование sidecar и Java-агента для полного управления сервисами и встроенной наблюдаемости.
  • Инсайты сервисов: мониторинг показателей работы сервисов, трассировки и журналов.
  1. Архитектура Конфигурация Easegress в качестве обратного прокси-сервера

Спецификации 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.

7.2 Развёртывание Canary

Развёртывание canary демонстрирует, как направлять цветной трафик (запрос) на канареечную версию конкретной службы.

Топология EaseMesh Canary

  • Customer Service (v2) — канареечная версия сервиса.
  • Линия красного цвета на диаграмме представляет цветной трафик (запрос).
  • Цветной трафик правильно направляется в канареечную версию сервиса после прохождения через первую службу (API Gateway).

7.2.1 Шаг 1: Цветной трафик

Окрасьте трафик с помощью HTTP-заголовка X-Canary: lv1 с помощью плагина ModHeader браузера Chrome. Затем EaseMesh направит этот цветной трафик в экземпляр канареечной версии службы Customer.

7.2.2 Шаг 2: Применение конфигурации canary EaseMesh

Примените файл конфигурации mesh:

emctl apply -f https://raw.githubusercontent.com/megaease/easemesh-spring-petclinic/main/canary/customer-canary.yaml`

7.2.3 Шаг 3: Подготовка канареечной версии приложения

ВНИМАНИЕ Вы можете пропустить этот шаг, мы предоставляем канареечный образ в 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» к каждой записи города.

plugin

ModHeader — это расширение Chrome, мы используем его исключительно для демонстрации раскраски запросов.

7.3 Очистка

  • Запустите 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

8. План развития

Подробности см. в EaseMesh Roadmap.

9. Вклад

Следуйте нашим деталям вклада на MegaEase Community.

10. Лицензия

EaseMesh находится под лицензией Apache 2.0. Подробности см. в файле LICENSE.

11. Руководство пользователя

См. Руководство пользователя EaseMesh для получения подробной информации.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

EaseMesh — это сервисная сетка, совместимая с экосистемой Spring Cloud. Она разработана на основе Easegress и включает в себя компоненты для управления сеткой и граничными узлами, а также использует возможности EaseAgent, такие как мониторинг сервисов и трассировка вызовов. Развернуть Свернуть
Go и 4 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/megaease-easemesh.git
git@api.gitlife.ru:oschina-mirror/megaease-easemesh.git
oschina-mirror
megaease-easemesh
megaease-easemesh
main