
Мы рады представить предварительную версию NGINX Service Mesh (NSM), связанную легковесную service mesh, использующую data plane на основе NGINX Plus для управления трафиком контейнеров в окружениях Kubernetes.
NSM можно бесплатно скачать здесь. Мы надеемся, что вы попробуете его использовать для dev и test окружений — и ждем ваших отзывов на GitHub.
Внедрение методологии микросервисов сопряжено с трудностями при росте масштабов поставок, а также их усложнения. Связь между сервисами усложняется, проблемы с отладкой делаются труднее, все больше сервисов требует больше ресурсов для управления.
NSM решает эти проблемы, предоставляя вам в первую очередь:
- Безопасность, которая сейчас важнее чем когда-либо. Утечка данных может стоить компании миллионы долларов ежегодно в виде потерь доходов и репутации. NSM обеспечивает шифрование всех соединений с помощью mTLS — так что чувствительных данных, которые могут украсть взломщики по сети, просто нет. Контроль доступа п��зволяет вам задать политики, как сервисы будут общаться с другими сервисами.
- Управление трафиком. При поставке новой версии приложения вы возможно захотите для начала ограничить ему входящий трафик на случай ошибки. С помощью интеллектуального управления трафиком контейнеров от NSM вы можете задать политику ограничения трафика новым сервисам, которая будет наращивать трафик с течением времени. Другие функции, например ограничение скорости и circuit breakers, дают вам полный доступ к управлению прохождения трафика всем вашим сервисам.
- Визуализация. Управление тысячами сервисов может быть кошмаром отладки и визуализации. NSM помогает справиться с такой ситуацией с помощью встроенной панели управления Grafana, на которой отображаются все характеристики, доступные в NGINX Plus. А также внедренная Open Tracing позволяет детально следить за транзакциями.
- Гибридные поставки, если ваша компания, как и большинство других, не использует инфраструктуру, полностью запущенную на Kubernetes. NSM гарантирует, что старые приложения не останутся без присмотра. С помощью внедренного NGINX Kubernetes Ingress Controller старые сервисы смогут связаться с mesh сервисами, и наоборот.
NSM также обеспечивает безопасность приложений в окружениях с нулевым доверием, прозрачно применяя шифрование и аутентификацию трафика контейнеров. Также он дает возможность наблюдения и анализа транзакций, помогая быстро и точно запускать развертывания и устранять проблемы. Кроме того, обеспечивается детальный контроль трафика, позволяя командам DevOps разворачивать и оптимиз��ровать части приложений, одновременно давая возможность разработчикам создавать и легко соединять их распределенные приложения.
Как устроен NGINX Service Mesh?
NSM состоит из объединенного data plane для горизонтального (сервис-к-сервису) трафика и внедренного NGINX Plus Ingress Controller для вертикального, управляемые единым control plane.
Control plane специально разработана и оптимизирована для NGINX Plus data plane, определяет правила управления трафиком, распределенные по NGINX Plus sidecars.
В NSM sidecars proxy устанавливаются для каждого сервиса в mesh. Они взаимодействуют с следующими решениями с открытым исходным кодом:
- Grafana, визуализация параметров Prometheus, встроенная панель NSM помогает вам при работе;
- Kubernetes Ingress Controllers, для управления входящим и исходящим трафиком в mesh;
- SPIRE, CA для управления, распределения и обновления сертификатов в mesh;
- NATS, масштабируемая система отправки сообщений, например обновления маршрутов, с control plane к sidecars;
- Open Tracing, распределенная отладка (поддерживаются Zipkin и Jaeger);
- Prometheus, сбор и хранение характеристик от NGINX Plus sidecars, например число запросов, соединений и SSL handshakes.
Функции и компоненты
NGINX Plus в качестве data plane охватывает sidecar proxy (горизонтальный трафик) и Ingress controller (вертикальный), перехватывая и управляя трафиком контейнеров между сервисами.
Функции включают:
- Взаимную аутентификацию TLS (mTLS);
- Балансировку нагрузки;
- Отказоустойчивость;
- Ограничение скорости;
- Circuit breaking;
- Сине-зеленые и канареечные развертывания;
- Контроль доступа.
Запуск NGINX Service Mesh
Для запуска NSM нужно:
- доступ к окружению Kubernetes. NGINX Service Mesh поддерживается на многих платформах Kubernetes, включая Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere и обычные кластера Kubernetes, развернутые на "железных" серверах;
- Инструмент
kubectl, установленный на машине, откуда будет устанавливаться NSM; - Доступ к пакетам выпусков NGINX Service Mesh. В пакете есть образы NSM, нужные для выгрузки в закрытую registry для контейнеров, доступную в кластере Kubernetes. Пакет также содержит
nginx-meshctl, нужную для разворачивания NSM.
Для того, чтобы развернуть NSM с настройками по умолчанию, запустите следующую команду. Во время развертывания выводятся сообщения об успешной установке компонентов и, наконец, сообщение о том, что NSM работает в отдельном пространстве имен (для начала надо его скачать и поместить в registry, прим. переводчика):
$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ; \
./nginx-meshctl deploy \
--nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}" \
--nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}" \
--nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}" \
--nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Created namespace "nginx-mesh".
Created SpiffeID CRD.
Waiting for Spire pods to be running...done.
Deployed Spire.
Deployed NATS server.
Created traffic policy CRDs.
Deployed Mesh API.
Deployed Metrics API Server.
Deployed Prometheus Server nginx-mesh/prometheus-server.
Deployed Grafana nginx-mesh/grafana.
Deployed tracing server nginx-mesh/zipkin.
All resources created. Testing the connection to the Service Mesh API Server...
Connected to the NGINX Service Mesh API successfully.
NGINX Service Mesh is running.Для получени�� дополнительных параметров, включая расширенные настройки, запустите эту команду:
$ nginx-meshctl deploy –hПроверить, что control plane работает корректно в пространстве имен nginx-mesh, можно так:
$ kubectl get pods –n nginx-mesh
NAME READY STATUS RESTARTS AGE
grafana-6cc6958cd9-dccj6 1/1 Running 0 2d19h
mesh-api-6b95576c46-8npkb 1/1 Running 0 2d19h
nats-server-6d5c57f894-225qn 1/1 Running 0 2d19h
prometheus-server-65c95b788b-zkt95 1/1 Running 0 2d19h
smi-metrics-5986dfb8d5-q6gfj 1/1 Running 0 2d19h
spire-agent-5cf87 1/1 Running 0 2d19h
spire-agent-rr2tt 1/1 Running 0 2d19h
spire-agent-vwjbv 1/1 Running 0 2d19h
spire-server-0 2/2 Running 0 2d19h
zipkin-6f7cbf5467-ns6wc 1/1 Running 0 2d19hВ зависимости от параметров развертывания, устанавливающих политики ручного или автоматического инжектирования, прокси NGINX sidecars будут добавляться к приложениям по умолчанию. Для отключения автоматического добавления читайте здесь
Например если мы развернем приложение sleep в пространстве имен default, а затем проверим Pod — увидим два запущенных контейнера, приложение sleep и связанный с ним sidecar:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23mТакже мы можем следить за приложением sleep в панели NGINX Plus, запуская эту команду для получения доступа к sidecar с вашей локальной машины:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886Затем просто заходим сюда в браузере. Вы также можете соединиться с Prometheus чтобы следить за приложением sleep.
Вы можете использовать отдельные ресурсы Kubernetes для настройки политик трафика, например контроля доступа, ограничения скорости и circuit breaking, для этого смотрите документацию
Заключение
NGINX Service Mesh бесплатно доступна для загрузки на портале F5. Попробуйте ее в работе на ваших dev и test окружениях и напишите нам о результатах.
Чтобы попробовать NGINX Plus Ingress Controller, активируйте бесплатный испытательный период на 30 дней, или свяжитесь с нами ��ля обсуждения ваших вариантов использования.
Перевод в авторстве Павла Демковича, инженера компании Southbridge. Системное администрирование за 15 000 ₽ в месяц. И как отдельное подразделение — обучающий центр Слёрм, практика и ничего, кроме практики.
