
С удоволствие представяме предварителната версия (NSM), свързана лека service mesh, използваща data plane на базата на NGINX Plus за управление на трафика на контейнери в Kubernetes среди.
NSM е на разположение безплатно . Надяваме се да го опитате за dev и test среди — и очакваме вашите отзиви .
Внедряването на методологии за микросервиси е свързано с предизвикателства при растежа на обема на доставките и усложнението им. Връзките между услугите стават сложни, проблемите с отстраняването на грешки се утежняват, а растящият брой услуги изисква повече ресурси за управление.
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, необходими за изтегляне в затворена регистратура за контейнери, налична в кластер Kubernetes. Пакетът също така съдържа
nginx-meshctl, необходима за разгръщане на NSM.
За да разгръщате NSM с настройки по подразбиране, изпълнете следната команда. По време на разгръщането ще се показват съобщения за успешна инсталация на компонентите и накрая съобщение, че NSM работи в отделно пространство от имена (първо трябва да го и да го поставите в регистратура, прим. преводача):
$ 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}"
Създадено пространство от имена "nginx-mesh".
Създаден SpiffeID CRD.
Очакване на работещи Spire подове... готово.
Разгърнат Spire.
Разгърнат NATS сървър.
Създадени политики за трафик CRDs.
Разгърнат Mesh API.
Разгърнат Metrics API Server.
Разгърнат Prometheus Server nginx-mesh/prometheus-server.
Разгърнат Grafana nginx-mesh/grafana.
Разгърнат сървър за проследяване nginx-mesh/zipkin.
Всички ресурси са създадени. Тест на връзката с Service Mesh API Server...
Свързано успешно с NGINX Service Mesh API.
NGINX Service Mesh работи.За получаване на допълнителни параметри, включително разширени настройки, изпълнете тази команда:
$ 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 в пространството от имена по подразбиране, след това проверим 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 е безплатно достъпна за изтегляне на . Изпробвайте я в работата си в dev и test средите и .
За да опитате NGINX Plus Ingress Controller, активирайте за 30 дни, или за обсъждане на вашите опции за използване.
Преводът е на Павел Демкович, инженер на компанията . Системно администриране за 15 000 ₽ на месец. И като отделно подразделение – обучителен център , практика и нищо, освен практика.
Източник: habr.com
