Доступний NGINX Service Mesh

Доступний NGINX Service Mesh

Ми раді подати попередню версію 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 для 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 додаватимуться до програм за промовчанням. Для вимкнення автоматичного додавання читайте тут

Наприклад, якщо ми розгорнемо додаток сон у просторі імен дефолт, а потім перевіримо Pod - побачимо два запущені контейнери, додаток сон і пов'язаний з ним sidecar:

$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME                     READY   STATUS    RESTARTS   AGE
sleep-674f75ff4d-gxjf2   2/2     Running   0          5h23m

Також ми можемо стежити за додатком сон у панелі NGINX Plus, запускаючи цю команду для отримання доступу до sidecar з вашої локальної машини:

$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886

Потім просто заходимо сюди у браузері. Ви також можете з'єднатися з Prometheus щоб стежити за програмою сон.

Ви можете використовувати окремі ресурси Kubernetes для налаштування політик трафіку, наприклад контролю доступу, обмеження швидкості та circuit breaking, для цього дивіться документацію

Висновок

NGINX Service Mesh безкоштовно доступна для завантаження на порталі F5. Спробуйте її в роботі на ваших dev та test оточеннях та напишіть нам про результати.

Щоб випробувати NGINX Plus Ingress Controller, активуйте безкоштовний випробувальний період на 30 днів, або Зв'яжіться з нами для обговорення варіантів використання.

Переклад в авторстві Павла Демковича, інженера компанії Південний міст. Системне адміністрування за 15 000 ₽ на місяць. І як окремий підрозділ – навчальний центр Слерм, практика та нічого, крім практики.

Джерело: habr.com

Додати коментар або відгук